KEIL编程出现错误

来源:百度知道 编辑:UC知道 时间:2024/05/27 21:12:34
下面是个简单的定时程序
ORG 0000H ;主程序入口
LJMP main

main:
SETB EA ;CPU中断开放
SETB ET1 ;定时器1中断允许
MOV TMOD,#10H ;方式1定时
MOV TH1,#0FCH
MOV TL1,#18H ;扫描P1.1时间间隔为1ms
SETB TR1 ;启动定时器1
LJMP $ ;虚拟主程序,等待中断
ORG 001BH ;定时器1中断入口
AJMP sign0

sign0:
JBC P1.1,loop ;如果P1.1口为输入高电平,则转移到loop,否则继续执行下一步
MOV TH1,#01CH
MOV TL1,#18H ;重置扫描P1.0时间间隔为1ms
RETI ;中断返回

loop:
CPL P1.0 ;翻转电平
MOV TH1,#03CH
MOV TL1,#0B0H ;50ms定时
MOV R2,3600 ;软件计数初值
LJMP $ ;虚拟主程序,等待中断
ORG 001BH ;定时器1中断入口
AJMP sign1

sign1:
DJNZ R2,NEXT ;中断服务程序,寄存器减1,不为0则转移到NEXT,为0则继续执行下一条指令
CPL P1.0 ;R0为0后翻转,输出方波
LJMP main

NEXT:
MOV TH1,#03CH ;重置定时器高8

错误1;
MOV R2,3600 ;软件计数初值
R2能3600?? 最多是255
错误2:
你的这段代码没有END 应该在最后加一个END
错误3:
也就是你说的NEXT: 这个本身没有错误.
但是keil有bug 有隐藏字符在.
解决的办法很简单.
删除NEXT: 和上面的那个空行
重新输入NEXT: 就可以了