三九宝宝网宝宝教育教学论文

单片机怎么用C语言处理接收的数据

01月07日 编辑 39baobao.com

根据你的要求这两个程序很简单,甲机作为发送端,用一个按键作为启动(低电平有效),按一下发送4个字节数据。乙机作为接收端,P0到P3低电平点亮灯。两机的晶振选择11.0952MHz。

甲机程序:

#include #define uchar unsigned char #define uint unsigned int sbit key=P1^0; //定义IO口作为启动按键,低电平有效 void delay(uint x) //延时X毫秒 { uint y,z; for(z=x;z>0;z--) for(y=110;y>0;y--); } void serial_init()//串口初始化 { TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; //波特率9600 TL1=0xfd; TR1=1; //启动定时器1 PCON&=0x7f; //SMOD=0 SCON=0x40; //设置串口为工作方式1 } void serial_send() //串口发送函数 { uchar i; for(i=4;i>0;i--)//发送4个字节数据 { SBUF=0; while(!TI); //等待发送完毕 TI=0; //串口发送完毕标志位清0 delay(1);//延时1毫秒 } } void main() { serial_init(); while(1) { if(!key) //监测启动按键是否被按下 { delay(10); //延时去抖 if(!key) { while(!key)//松手监测 serial_send(); } } } }

乙机程序:

#include #define uchar unsigned char uchar flag,buf; void serial_init()//串口初始化 { TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; //波特率9600 TL1=0xfd; TR1=1; //启动定时器1 PCON&=0x7f; //SMOD=0 SCON=0x50; //设置串口为工作方式1,REN=1 flag=0; EA=1; //开总中断 ES=1; //开串口中断 } void main() { serial_init(); while(1) { switch(flag) { case 1: P0=buf;break; case 2: P1=buf;break; case 3: P2=buf;break; case 4: P3=buf;break; default: flag=0; } } } void serial() interrupt 4 using 2 { RI=0; buf=SBUF; flag++; }

推荐阅读
图文推荐