} }
9.设单片机的fosc = 12MHz,使P1.O和P1.1分别输出周期为1ms和lOms的方波,请用定时器TO方式2编程实现。
解:fosc = 12MHz,所以机器周期为1us。
要使P1.0输出周期为1000us的方波,可以通过定时中断方式实现,定时时间为250us,定时计数2次来实现,对P1.0求反即可。
要使P1.1输出周期为10ms的方波,也可以通过定时中断方式实现,定时时间为5ms,当时间到时,对P1.1求反即可。由于5ms/250us=20,所以也可以通过对250us的定时计数20次来实现。程序如下:
#include
sbit P1_0=P1^0;//输出周期为400us的方波的引脚 sbit P1_1=P1^1; //输出周期为10ms的方波的引脚
unsigned char num1=0,num2=0;//中断次数计数器,初值为0 void main(){
P1_0=0; //输出初值为0 P1_1=0; //输出初值为0 TMOD=0x02; //T0方式2定时
TH0=256-250;//计200次,计数初值为模256减200 TL0=TH0;
IE=0x82; //允许CPU响应中断,允许T0发中断请求 TR0=1; //启动T0
for(;;){} //无限循环等待中断
}
void timer0()interrupt 1 using 1{ num1++;num2++; //中断次数加1 if(num1==2) // 中断次数达到2次 { P1_0=!P1_0; //输出P1_0求反 num1=0; //中断次数复位为0 }
if(num2==20){ // 中断次数达到20次 num2=0; //中断次数复位为0 P1_1=!P1_1; //输出P1_1求反 } }
10.编写程序,要求使用TO,采用方式2定时,在P1.0输出周期为400us占空比为10:1的矩形脉冲。
解:设fosc = 12MHz,则机器周期为1us。设P1.0初值为0。
周期为400us,可定义方式2定时,计数初值为256-40,一个周期中断10次为400us,在中断计数为1和2(或任意两次计数之间)时,对P1.0求反即可。 #include
sbit P1_0=P1^0; //输出周期引脚
unsigned char cnt=0; //中断次数计数器,初值为0 void main(){
P1_0=0; //输出初值为0 TMOD=0x02; //T0方式2定时
TH0=256-40; //计40次,计数初值为模256减40
TL0=TH0;
IE=0x82; //允许CPU响应中断,允许T0发中断请求 TR0=1; //启动T0
for(;;){} //无限循环等待中断 }
void timer0()interrupt 1 using 1{ cnt++;//中断次数加1
if(cnt==1||cnt==2) P1_0=!P1_0; //中断次数为1或2时对输出引脚求反 if(cnt==10)cnt=0; //中断次数达到10时复位为0
} 第七章
7.1. 什么事串行异步通信?在串行异步通信中,数据帧的传输格式是什么?含义如何? 答:串行异步通信是指在串行通信中发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
数据帧的传输格式:起始位,数据位,奇偶校验位和停止位
含义:起始位用于实现发送和接收双方设备之间的同步;数据位包含所要传输的信息;奇偶校验位用于判断接收数据的正确性;停止位表示一帧数据发送结束,开始下一帧数据的传输。
7.3. 89C51单片机串行通信接口控制寄存器有几个?每个寄存器的含义是什么? 答: 有电源控制寄存器PCON和串行口控制寄存器SCON PCON中SMOD与串口通信有关。
SMOD=0; 串口方式1,2,3时,波特率正常。 SMOD=1; 串口方式1,2,3时,波特率加倍 其余与串行通信无关 SCON中
SM0、SM1:串行口工作方式控制位 SM2:多机通信控制位
REN:串行口接收使能控制端;REN=1时,允许接收,REN=0时,禁止接收 TB8:发送接收数据位8
RB8:接收数据位8
TI:发送中断标志位;TI=1表示帧发送结束,TI可由软件置0 RI:接收中断标志位;RI=1表示帧接收完成,RI可由软件置0
7.4. 在方式1和方式3的通信模式下,波特率通过那个定时器驱动产生?采用何种定时方式?如果要求采用晶振为11.0592MHz,产生的传送波特率为2400b/s,应该怎样对定时器初始化操作?
答:由定时器1驱动产生,采用定时器1的工作方式2,自动从装初值 当晶振为11.0592MHz,波特率为2400b/s,由波特率公式:
波特率=(2SMOD/32)?fOSC/(12?(256? a))a?256?11.0592?106/(384?2400) 可求得初值a为F4H 初始化操作: TMOD=0x20; TL1=0xF4; TH1=0xF4; PCON=0x00; SCON=0x00; TR1=1;
8.3 在由单片机80C51和一片ADC0809组成的数据采集系统中,假设ADC0809的地址为0x7ff8~0x7fff,画出接口电路图,并编写每隔1ms轮流采集一次8个通道数据的程序。采样100次取平均值。

