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

发布时间 : 星期二 文章《单片机的C语言程序设计与运用(第2版)》期末复习题和答案2更新完毕开始阅读

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

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

{ while(RI==0){;} RI=0; i=SBUF; P1=i; } }

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

#define uchar unsigned char #define TR 1

//TR=1,发送

uchar idata buf[10]; uchar pf; void main( ) { int( );

//串行口初始化子函数

if(TR==0)

{send(buf);}

//发送

else

17 / 49

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

}

{receive(buf);} //接收

/*串口初始化子函数*/ void init(void) {

TMOD=0x20;

//T1工作于方式2

TH0=0xE8; TL0=0xE8; TR1=1; SCON=0X50; }

/*发送子函数*/

void send(uchar idata*d) { do {

SBUF=0xAA; while(TI= =0); TI=0;

//发送联络信号 //等待一帧发送完毕

uchar i;

//串行口工作于方式1,REN=1

//发送完毕,标志位清0 //等待乙机应答信号

while (RI= =0); RI=0; } do {

pf=0;

while (SBUF^0xBB!=0); //乙机未准备好,继续联络

//校验和变量清0

18 / 49

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

for(i=0;i<10;i++){ SBUF=d[i]; pf+=d[i];

//发送一个数据

//计算校验和

while(TI= =0); TI=0;} SBUF=pf;

//发送校验和

while (TI= =0);TI=0; while (RI= =0);RI=0; }while (SBUF!=0); }

/*接收函数*/

void receive(uchar idata*d) {uchar i; do {

while(RI= =0); RI=0;

//判断甲机是否请求

//等待乙机应答

//回答出错,则重新发送

}while(SBUF^0xAA)!=0); SBUF=0xBB;

//发应答信号

while(TI= =0);TI=0; while(1){ pf=0;

//清校验和

for(i=0;i<10;i++){

d[i] = SBUF;

//接收数据

19 / 49

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

pf+=d[i];} //计算校验和

//接收甲校验和 //比较校验和

//校验和相等,发0x00

while(RI= =0);RI=0; If((SBUF^pf)= =0){

SBUF=0x00;break;} else{

SBUF=0xFF;

//校验和不相等,发0Xff

while(TI= =0);TI=0;

} } }

第六章

静态:【例6-1】利用单片机的并行口作为静态显示的输出口的示例

静态轮流显示“12”、“- -”和“AB”的C51源程序如下: #include

20 / 49