}
P1_0=!P1_0; 输出求反 }
方法二:采用中断方式实现 #include 输出初值为0 TMOD=0x02; T0方式2定时 TH0=256-25; 计25次,计数初值为模256减25 TL0=TH0; IE=0x82; TR0=1; 允许CPU响应中断,允许T0发中断请求 启动T0 for(;;){} 无限循环等待中断 } timer0()interrupt 1 using 1{ P1_0=!P1_0; 输出求反 } 8.采用定时计数器TO对外部脉冲进行计数,每计数10O个脉冲,TO切换为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-5l单片机的晶体振荡器的频率为6MHz,要求T0工作在方式1状态,请编写出相应程序。 解:晶体振荡器的频率为6MHz,则机器周期为12×1(6*106)= 2us, 要定时1ms,需计数次数为10002=500次 #include TMOD=0x05;T0计数,方式一 TH0=()256;计数100次 TL0=()%6; TR0=1; while(!TF0);等待计数100次的溢出 TF0=0; 溢出标志复位 TMOD=0x01;T0定时,方式一 TH0=()256;计数100次 TL0=()%6; TR0=1; 启动T0 while(!TF0); 等待定时时间到1ms的溢出 TF0=0; } } 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求反即可。由于5ms250us=20,所以也可以通过对250us的定时计数20次来实现。程序如下: #include 输出初值为0 输出初值为0 溢出标志复位 TMOD=0x02; T0方式2定时 TH0=;计200次,计数初值为模256减200 TL0=TH0; IE=0x82; TR0=1; 允许CPU响应中断,允许T0发中断请求 启动T0 for(;;){} 无限循环等待中断 } void timer0()interrupt 1 using 1{ num1++;num2++; if(num1==2) 中断次数加1 中断次数达到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 输出初值为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单片机串行通信接口控制寄存器有几个?每个寄存器的含义是什么?
相关推荐: