7.2 8XX51单片机内部设有几个定时器/计时器?它们是由哪些专用寄存器组成的? 答:MCS-51单片机的定时/计数器有4种操作模式。
方式0:13位计数/定时器。13位由TLi的低五位和THi构成,手动重载入时间常数,软件启动/停止计数/定时器。
方式1:16位计数/定时器。16位由TLi和THi构成,手动重载入时间常数,软件启动/停止计数/定时器。
方式2:8位计数/定时器。TLi被定义为加1计数器,THi被定义为赋值寄存器,自动重载入时间常数,软件启动/停止计数/定时器。
方式3:T0 被用作两个独立的8位计数/定时器,手动重载入时间常数,软件启动/停止计数/定时器。T1常被用作波特率发生器。
7.4 设单片机的fosc=6MHz,定时器处于不同工作方式时,最大定时范围分别是多少? 答:方式0:16.38ms,方式1:131ms,方式2:512us
7.6 在p1.0引脚接一驱动放大电路驱动扬声器,利用T1产生1000HZ的音频信号从扬声器输出。
答:1000Hz的周期为1ms,即要求每500usp1.0变反一次,使用t1方式1,MC=12/f0sc=1us.c=216-500us/1us=FE0CH,除TMOD=10H,TH0=FEH,TL0=0CH外,程序如下: ORG 0000H
MOV TMOD,#06H MOV TH0,#0F6H MOV TL0,#0F6H SETB TR0
ABC:JNB TF0,$ CLR TF0 CPL P1.0 SJMP ABC END
7.8 在8XX51单片机中,已知时钟频率为12MHz,编程使P1.0,P1.1分别输出周期为2ms和50us的方波。 答:程序如下: ORG 0000H
MOV TMOD,#02H MOV TH0,#0E7H MOV TL0,#0E7H SETB TR0 MOV R0,#04H AA:JNB TF0,$ CLR TF0 CPL P1.1 DJNZ R0,AA CPL P1.0 AJMP AA end
7.10 利用8XX51单片机定时器t0测量某正单脉冲宽度,已知此脉冲宽度小于10ms,主机频率为12MHz。编程测量脉宽,并把结果转换为BCD码,顺序存放在以50H单元为首地址的内存单元中(50H单元存个位)。 #include
unsigned char *p,i; int a; P=0x50;
TMOD=0x09; TL0=0; TH0=0; while(P3-2==1); TR0=1;
while(P3-2==0); while(P3-2==1); TR0=0; i=TH0;
a=i*256+TL0; for(;a!=0;)
{
*p=a; a=a/10; p++; *p=a; } }