用北航的单片机轻松入门的模拟电路keyled.dll
想用一秒让灯亮灭,可速度原比我想的快多了10ms左右把
程序如下:
org 0000h
ajmp START
org 000bh
ajmp TIME
START:
clr P1.0
mov sp, #5fh
mov TMOD,#00h
mov TH0,010h
mov TL0,060h
setb EA
setb ET0
setb TR0
mov R7,#0
mov R6,#0
ajmp $
TIME:
inc R7
mov A,R7
cjne A,#100,NEXT
inc R6
mov A,R6
cjne A,#10,NEXT ;用于扩展时间
T_L2:
cpl P1.0
mov R7,#0
mov R6,#0
NEXT:
mov TH0,10h
mov TL0,60h
reti
end
在keil下调试
工作方式0,初值为:4192,频率为6MHz,也就是2us
后来我把R6改为的那个cjne A,#100,NEXT,应该是10s,但却只有8s左右,我觉得怎么说都是会慢怎么会快的
还有那个keil把频率改为24没一点影响,why????????
定时器中断时间是 13bit 8192-4192 = 4000 ,4000×2us = 8ms,而且代码有点问题,改成如下要好些:
TIME:
mov TH0,10h
mov TL0,60h
inc R7
mov A,R7
cjne A,#100,NEXT
mov R7,#0
inc R6
mov A,R6
cjne A,#10,NEXT ;用于扩展时间
T_L2:
cpl P1.0
mov R6,#0
NEXT:
reti
谢谢,是初值的问题,你说代码有问题,是不是在做中断服务时,程序同时在计数啊