C51程序不懂,求解惑
ORG 0000H
RESET: AJMP MAIN ;转主程序
ORG 001BH ;T1的中断入口
AJMP IT1P;转T1中断处理程序IT1P
ORG 0100H
MAIN: MOV SP,#60H ;设堆栈指针
MOV TMOD,#20H;设置T1为定时方式2,00100000B
MOV TL1,#06H;置T1计数初值06H,定时250×2=500uS
MOV TH1,#06H ;置自动重装初值06H
SETB ET1 ;允许T1中断
SETB EA ;CPU开中断
SETB TR1 ;启动T1
MOV 58H,#10
MOV 59H,#100
HERE: AJMP HERE ;自身跳转
IT1P: (T1中断服务子程序)
MOV 58H,#10
DJNZ 59H,LR
MOV 59H,#100
LR: CPL P1.0 ;P1.0的状态取反
RETI ;中断返回
主要是后面的循环看不懂,讲一下是怎么循环的,详细一点,谢谢
[解决办法]
我不知道你所所的循环是什么意思? 我不知你是否懂C语言。
简单来讲 这程序有2个函数
一个是 MAIN函数 他做了2个事情
1: 初始化T1定时器(自动重载模式),开中断
2:设置2个全局变量 一个 58H = 10 另一个 59H = 100
干完这两件事,MAIN函数就相当于就 一直在while(1); HERE: AJMP HERE
第二个函数就是T1的中断函数 IT1P:
没当产生中断时就进入IT1P这段程序
在里面 先把 58H = 10 然后 59H = 59H - 1 然后判断59H 如果 >0 将 P1.0口去反, 如果=0就 59H=100然后在将P1.0口取反。
这个程序就是这样的,不知道你的哪个循环不懂? 还有就是他 58H我认为没用不知道为什么还有 赋值。