SJMP LOOP ;时间未到,转LOOP,继续查询
L1:CPL P1.1;P1.1输出取反,形成周期为500μs
CLR TR1 ;关闭T1
DJNZ R2,L2;“250μs”计数器减1,到1ms吗?未到转L2
CPL P1.0 ;P1.0输出取反,形成周期为2ms方波
MOV R2,#04H ;重置“250μs”计数器初值4
LJMP L2 ;重复循环
15、单片机8031的时钟频率为6MHz,若要求定时值分别为0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,其定时器初值各应是多少?
解:
(1) 0.1ms
模式0:
T0低5位01110B=0EH
T0高8位:11111110B=FEH
模式1:
模式2:
(2) 1ms
模式0:
T0低5位01100B=0CH
T0高8位:11110000B=F0H
模式1:
模式2:
在此情况下最长定时为512μs,无法一次实现定时1ms,可用0.1ms循环10次
(3) 10ms
模式0:
T0低5位11000B=18H
T0高8位:01100011B=63H
模式1:
模式2:在此情况下最长定时为512μs,无法一次实现定时10ms,可用0.1ms循环100次
16、89C51单片机的定时器在何种设置下可提供三个8位计数器定时器?这时,定时器1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少(允许存在一定误差)?设fosc=12MHz。
解:当T0为模式3,T1为模式2时,可提供3个8位定时器。
可选100b/s
、试编制一段程序,功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6,R7。
解:
MOV TMOD,#05H ;T0为计数方式且工作于模式1
JNB P1.2,$ ;等待P1.2引脚电平上跳
MOV TH0,#00H ; P1.2电平上跳,置入计数初值
MOV TL0,#00H
SETB TR0 ;启动T0
JB P1.2,$ ;等待P1.2引脚电平下跳
CLR TR0 ;电平下跳,关闭T0
MOV R7,TH0 ;计数初值写入R7,R6
MOV R6,TL0
6、89C51中SCON的SM2,TB8,RB8有何作用?答:89c51SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需要由软件置位或复位。它在许多通信协议中可用作奇偶校验位;在多机通信中作为发