我把程序改了
我把程序作了一下修改,下面的应该是正确的了吧?这只是我毕业设计中要用到的一小段程序,还要涉及到其它的一些东西,所以程序并不是很完善。
;频率测量程序
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0INT
;------------------------------主程序------------------------------------
ORG 0100H
MAIN: MOV SP,#35H ;设置堆栈
MOV TMOD,#51H ;T0计数状态、方式1,T1定时状态、方式1
MOV TL0,#00H ;T0计数初值设定
MOV TH0,#00H
MOV TL1,#0B0H ;T1定时50ms初值设定
MOV TH1,#3CH ;fosc=12MHZ(最小定时时间为1μs)
MOV R3,#20 ;设置软件计数器
ORL TCON,#01010000B ;同时启动定时器T0和T1
SETB EA
SETB ET1
;---------------------------T0中断服务子程序---------------------------
T0INT: DJNZ R3,EXIT ;1s时间未到则中断返回,继续定时
ANL TCON,#10001111B ;1s定时到,则同时关闭定时器1和计数器0
MOV R0,TL1 ;将计数值的低八位存入R0
MOV R1,TH1 ;将计数值的高八位存入R1
MOV TL1,#0B0H ;重装初值
MOV TH1,#3CH
MOV R3,#20 ;重新设置软件计数器
ORL TCON,#01010000B ;同时启动定时器T0和T1
AJMP LOOP
EXIT: MOV TH1,#0B0H ;1s未到,重设T1的50ms定时初值
MOV TL1,#3CH
LOOP: RETI
END
发表时间:2007年4月16日20:53:13