《单片机的C语言程序设计与运用(第2版)》期末复习题及答案2

发布时间 : 星期三 文章《单片机的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 sbit P1_1=P1^1; unsigned char i; void main( ) {

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 uint unsigned int

可编辑

.

#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 #define uint unsigned int #define uchar unsigned char void main( ) { uchar i=0;

TMOD=0x20; TH1=TL1=0xff; SCON=0x50; PCON=0x80; TR1=1; while(1) {

while(RI==0){;}

RI=0; i=SBUF; P1=i; } }

两个单片机串行通信2 C51源程序代码如下:

可编辑

联系合同范文客服:xxxxx#qq.com(#替换为@)