简答题

某单片机系统,时钟频率为12MHz,定时/计数器T0用于20ms定时,T1用于100次计数,两者要求重复工作。编写达到上述要求的程序。

正确答案

T.0用作20ms定时,故N0=20ms/1μs=20000
X.0=M-N=65536-20000=45535=B1E0H
T.1的计数值为100,所以X=65536-100=65436=FF9CH
为使俩部件同时工作,将T0设为查询方式,T0设为中断方式。
M.OV TMOD, #15H;  T0定时,方式1;T1计数,方式1
M.OV TH0,#0B1H;  写入T0定时器初值
M.OV TL0,#0E0H; MOV TH1,#0FFH;  写入T1计数器初值
M.OV TL1,#09CH;
M.OV SP,  #60H;   设置堆栈
O.RG  001BH
A.JMP T1INT
S.ETB TR0;    启动T0
S.ETB TR1;  启动T1
L.OOP: JBC  TF0,$;   查询定时器溢出标志
M.OV TH0,#0B1H;
M.OV TL0,#0E0H
C.LR  P1.0;   设定时输出为P10
S.ETB P1.0
E.ND
T.1INT: MOV TH1,#0FFH;  写入T1计数器初值
M.OV TL1,#09CH;
R.ETI

答案解析