首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

C51程序求大神解惑,该如何处理

2012-11-09 
C51程序求大神解惑ORG 0000HAJMP MAINORG 001BHT0中断入口AJMP IT1PORG 0100HMAIN:MOV SP,#60HMOV TMOD,#

C51程序求大神解惑
ORG 0000H
AJMP MAIN
ORG 001BH ;T0中断入口
AJMP IT1P
ORG 0100H
MAIN:MOV SP,#60H
MOV TMOD,#20H
MOV TL0,#0F4H
MOV TH0,#0F4H
MOV R1,#00
MOV R2,#00
SETB ET1
SETB EA
SETB TR1
LOOP:LCALL D05S;调用延时0.5秒子程序
CPL P1.7
SJMP LOOP
D05S:MOV R7,#8;延时0.5秒子程序
D05S2:MOV R6,#200
D05S1:MOV R5,#100
D05S0:NOP
DJNZ R5,D05S0
DJNZ R6,D05S1
DJNZ R7,D05S2
RET
IT1P:PUSH ACC ;T0中断服务子程序
PUSH PSW
LOOP1:INC R1
CJNE R1,#36,LOOP1
MOV R1,#00
LOOP2:INC R2
CJNE R2,#100,LOOP2
MOV R2,#0
CPL P1.5
POP PSW
POP ACC
RETI
END
这本来是要实现P1.5,P1.7秒闪的。这个程序错在哪里,P1,7怎么闪不了,还有P1.5怎么闪得这么快T1定时器哪里弄错了。

[解决办法]
发现了几个错点~
1 你使用的是定时器1 但设置的却是TH0,TL0。即使改对了,你的定时时间也是算错的。。
2 中断里面的程序有错误 
LOOP1:INC R1
CJNE R1,#36,LOOP1
判断不等后应该跳出中断 而不能继续执行上面的循环,这样会一直在中断里循环

热点排行