发布时间 : 星期二 文章《单片机的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