当前位置:首页 > 《单片机的C语言程序设计与运用(第2版)》期末复习题及答案2
.
}
void time0_int(void) interrupt 1 {
TH0=(65536-10000)/256;
TL0=(65536-10000)%6; P1_0=!P1_0; }
void time1_int(void) interrupt 3 { P1_1=!P1_1; }
【例4-18】设系统时钟频率为12MHz,编程实现:P1.1引脚上输出周期为1s,占空比为20%的脉冲信号
根据输出要求,脉冲信号在一个周期内高电平占0.2s,低电平占0.8s,超出了定时器的最大定时间隔,因此利用定时器0产生一个基准定时配合软件计数来实现。取50ms作为基准定时,采用工作方式1,这样这个周期需要20个基准定时,其中高电平占4个基准定时。 #include
i=0;
//初始化
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; while(1); }
void time0_int(void) interrupt 1 {
TH0=(65536-50000)/256;
TL0=(65536-50000)%6; i=i+1;
if(i==4) P1_1=0; else if(i==20) {
P1_1=1;
//高电平时间到变低
//周期时间到变高
//中断服务程序
//重载初始值
//定义计数变量
//T1中断服务程序 //T0中断服务程序 //重载初始值
//重载初始值
可编辑
.
i=0; } }
//计数变量清零
第五章
【例5-9】串行口自发自收
#include
#define uchar unsigned char #define uint unsigned int void main( ) { uchar i=0x55;
可编辑
.
uint j=0; TMOD=0X20; TL1=TH1=0XF4; PCON=0X00; SCON=0X50; TR1=1; while(1) { SBUF=i; RI=0; TI=0; i=SBUF; P1=i; i=~i; } }
【例5-10】两个单片机串行通信1
//将发送数据取反
for(j=0;j<12500;j++);
//读取接收数据
//发送数据
do( )while(!RI)
//设定定时器1模式2
单片机1的C51源程序代码:
#include
可编辑
.
#define uchar unsigned char void main( ) { uchar i;
TMOD=0x20; TH1=TL1=0xff; SCON=0x50; PCON=0x80; TR1=1; P1=0xff; while(1) {
P1=0xff;
i=P1; SBUF=i; while(TI==0) {;} TI=0; } }
单片机2的C51源程序: #include
TMOD=0x20; TH1=TL1=0xff; SCON=0x50; PCON=0x80; TR1=1; while(1) {
while(RI==0){;}
RI=0; i=SBUF; P1=i; } }
两个单片机串行通信2 C51源程序代码如下:
可编辑
共分享92篇相关文档