谁有MCS51系列单片机中调用指令(LCALL和ACALL)和RETI指令在程序中的实际应用例子
发布网友
发布时间:2022-04-25 14:44
我来回答
共3个回答
热心网友
时间:2023-10-09 17:29
CALL、RETI等等都是是汇编语言,看看这里:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/3aec3b94b94e1a46d1135e98.html
另外,ACALL、LCALL,在编程的时候,可以统一写成CALL,
由编译软件来智能的确认,应该使用ACALL还是LCALL。
热心网友
时间:2023-10-09 17:30
ORG 0000H
AJMP START
;*******************************
;程序初始化,T0,定时1秒
;********************************
START: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#0
MOV DPTR,#LEDC
;*********************************
;控制LED动作循环程序
;********************************
S: MOV A,#0 ;偏移地址清零
LEDK: MOV R1,A ;保存偏移地址
MOVC A,@A+DPTR ;查表取值
MOV P1,A ;把控制代码给P1口
CALL DELAY ;调用延时子程序
MOV A,R1 ;取出偏移地址
INC A ;偏移地址加1
CJNE A,#16,LEDK
AJMP S
;*******************************
;延时子程序
;*****************************
DELAY: SETB TR0 ;开始定时
S2: MOV TH0,#3CH
MOV TL0,#0B0H
S3: JBC TF0,S4
AJMP S3
S4: INC R0
CJNE R0,#20,S2
MOV R0,#0 ;定时完成,清除R0的值
CLR TR0 ;停止定时
RET
;*******************************
;显示代码
;*****************************
LEDC: DB 0FEH,0FDH,0FBH,0F7H,0EFH
DB 0DFH,0BFH,07FH,0FCH,0F3H
DB 0CFH,3FH,0E7H,0DBH,0BDH,7EH
END
下面是用定时器中断的实例
ORG 0000H
AJMP START
ORG 000BH
AJMP TEMEE
ORG 0100H
START: MOV SP,#40H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0AFH
MOV R2,#20
MOV A,#0FEH
MOV P1,A
SETB EA
SETB ET0
SETB TR0
AJMP $
TEMEE: MOV TH0,#3CH
MOV TL0,#0AFH
DJNZ R2,LOOP
MOV R2,#20
RL A
MOV P1,A
LOOP: RETI
END
热心网友
时间:2023-10-09 17:30
看来你是需要用汇编编写程序了。用C语言编程时,这些指令会自动选择生成的