使用定时器1以方式0产生周期为500us的方波连续脉冲
扫描二维码
随时随地手机看文章
设单片机晶振频率为6MHz,要求使用定时器1以方式0产生周期为500us的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。
求单片机高手帮忙!
;----------------------------------------------------------------
分析:
方式0,求初始值时,稍麻烦点。
按照题目要求,需要定时250us。
因为晶振频率为6MHz,指令周期就是2us,那么计数值就是125。
因为方式0的最大计数值是 2^13,于是有:
初始值 = 8192-125 = 8067 = 1111 1100 00011
使用方式0,要求把1111110000011,分成高8位和低5位,故有:
1111 1100 '000'00011
;----------------------------------------------------------------
程序如下:
MOV TMOD, #00H
MOV TH1, #11111100B
MOV TL1, #00000011B
SETB TR1
LOOP:
JNB TF1, $
MOV TH1, #11111100B
MOV TL1, #00000011B
CPL P1.0
CLR TF1
SJMP LOOP
END
;----------------------------------------------------------------
经过用 PROTEUS 实验发现,P1.0输出方波频率稍有误差。
如果把TL1赋值指令改为:MOV TL1, #00000101B,可将频率控制为2016Hz。