久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51單片機C語言調用匯編子程序的簡便方法 [打印本頁]

作者: 新洲羅遠    時間: 2020-4-23 06:59
標題: 51單片機C語言調用匯編子程序的簡便方法
1、在匯編文件中,程序前邊加上如下三句話就可以:
PUBLIC   _delay, _binrlc       ;定義公用子程序名,這里定義了兩個子程序(有下劃線)
LUOYUAN  SEGMENT CODE  ;程序段命名,LUOYUAN,叫啥名都可以
RSEG     LUOYUAN

下邊放子程序(程序名要下劃線,其它標號不要下劃線)

;匯編語言文件
PUBLIC  _delay, _binrlc;定義子程序名
LUOYUAN  SEGMENT CODE  ;命名LUOYUAN的程序段
RSEG     LUOYUAN

_delay:  MOV P1,#55H
             MOV R2,#30H
        DJNZ R2,$
        RET
;**********************************************;P3.2  74LS595鎖存口
;P3.3  74LS595時鐘口;P3.4  74LS595數據口
;P3.5  工作指示
;**********************************************
_binrlc: CLR P3.2                ;鎖存
         MOV A,R7
         ;XRL A,#0FFH    ;顯示要取反
         MOV R3,#8H        
binrl1: CLR  P3.3       ;時鐘位下降
        RLC A           ;連同進位左移1位
            MOV P3.4,C      ;進位到直接尋址位
        SETB P3.3       ;時鐘位上升
        DJNZ R3,binrl1

        SETB P3.2       ;鎖存
                CPL P3.5   ;取反閃亮
        RET
END


2、在C程序中,先聲明外部函數,不然編譯找不到函數錯誤,然后就如同C程序中調用C函數一樣

     binrlc(SBUF);   不要下劃線。
本程序89C51接收PC 串口來的數據,送到74LS595驅動的LED顯示。

//89C51串口0方式驅動74LS595
// 11.0532
// P3_4控制鎖存
#include "AT89X51.h"

void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xfa;
TL1=0xfa;
TR1=1;
ES=1;
}
extern void binrlc(char);      //外部函數聲明

void uart(void) interrupt 4
{
if(RI)
{
    RI=0;
     binrlc(SBUF);    //調用匯編子程序,方式同C子程序一樣
         P1= SBUF;
}
else
    TI=0;
}
void main(void)
{
initUart();
EA=1;
while(1);
}

以上Keil代碼工程下載::
Keil工程文件.7z (13.52 KB, 下載次數: 34)


作者: mkkop    時間: 2020-10-28 17:27
從C語言調用匯編語言中看到,從C語言傳遞數據到匯編語言里面的R7,可是沒有看到任何聲明R7的語句,請問我們怎么知道C語言的數據是傳給R7的?為什么不是R0或R5之類的寄存器???
作者: 188610329    時間: 2021-8-29 01:32
mkkop 發表于 2020-10-28 17:27
從C語言調用匯編語言中看到,從C語言傳遞數據到匯編語言里面的R7,可是沒有看到任何聲明R7的語句,請問我們怎 ...

規定,C語言傳參,Char的話, 第一變量 R7, 第二變量 R5, 第三變量 R3  short 的話,第一變量 R6,R7 第二變量R4,R5,第三變量 R2R3, long 的話 R4R5R6R7, 指針的話 R1R2R3 bit的話 C  返回值同理,
作者: csmyldl    時間: 2021-8-29 22:40
編譯出現A33的錯誤,下載的壓縮包沒有595匯編.asm,照上面的說明打了,編譯不能通過,無法驗證
作者: heicad    時間: 2021-11-26 01:25
csmyldl 發表于 2021-8-29 22:40
編譯出現A33的錯誤,下載的壓縮包沒有595匯編.asm,照上面的說明打了,編譯不能通過,無法驗證

樓主現在已經修復了
作者: madell    時間: 2021-11-26 10:50
heicad 發表于 2021-11-26 01:25
樓主現在已經修復了

您好怎么修復的?同樣的問題




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av色站 | 久久不卡视频 | 日韩精品在线免费观看视频 | 欧美日韩大片 | 日本国产精品视频 | 欧美日韩视频在线 | 久久久久久综合 | 免费黄色录像视频 | 久草新视频| 亚洲电影一区二区三区 | 亚欧洲精品在线视频免费观看 | 亚洲五码久久 | 日本久久久影视 | 亚洲日本一区二区 | 伊人手机在线视频 | 在线视频中文字幕 | 亚洲免费在线 | 精品免费视频 | 久久久久久国产免费视网址 | 国产视频观看 | 最新国产精品 | 国产精品久久久爽爽爽麻豆色哟哟 | 毛色毛片免费看 | 啪一啪 | 国产一区二区三区在线 | 午夜激情在线 | 成年精品 | 成人欧美一区二区三区 | 国产福利视频在线观看 | 国产精品亚洲综合 | 日韩午夜电影在线观看 | 中国一级大黄大片 | 久色网| 一区二区三区影院 | 久久亚洲一区二区 | 国产精品自拍av | 蜜桃毛片 | 国产日韩精品视频 | 91美女在线观看 | 国产在线精品一区二区三区 | 国产激情视频 |