89C51上通过2051没通过的程序
时间:10-02
整理:3721RD
点击:
我写个外中断遥控解码程序,在AT89C51通过了,只有600B的烧写文件,加上24C02记忆程序不超过1.2kb烧写文件
写到AT89C2051就是通不过。
这是外中断解码程序,哪里出错了?
谢谢
问题解决了,多加了个RETI,程序运行没问题了,一个中断两个reti。
;-----------中断程序-------------------
INT:CLR EA ;暂时关闭CPU的所有中断请求
PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
MOV R5,#17
L2:ACALL DELAY05_R5
JB IRIN,L10 ;位为1转移,否则顺执行 ;延时0.093ms后判断P3.2脚是否出现高电平如果有就退出解码程序
MOV R5,#8
L3:ACALL DELAY05_R5 ;延时0.5ms避开4.5毫秒高电平结果码
JNB IRIN,L10 ;4.5ms内出现低电平退出中断程序
DJNZ R5,L3 ;重复多次,目的是检测4.5ms内如果出现高低平就退出解码程序
L4:MOV R3,#0 ;8位计数器
L5:JNB IRIN,L6
ACALL DEL
JMP L5
L6:JB IRIN,L7
ACALL DEL
JMP L6
L7:MOV R2,#0
L8:ACALL DEL
JB IRIN,L9
MOV A,#8
CLR C
SUBB A,R2
MOV A,@R0
RRC A
MOV @R0,A
INC R3
CJNE R3,#8,L5
MOV R3,#0
INC R0
CJNE R0,#24,L5 ;改为23接收3位数据,
JMP L10
L9:INC R2
CJNE R2,#30,L8
L10:SETB EA ;允许中断,然后退出中断程序
RETI
我擦还是汇编的