第45节:主机的串口收发综合程序框架
时间:11-22
来源:互联网
点击:
- e(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);
- void T0_time(void);//定时中断函数
- void usart_receive(void); //串口接收中断函数
- void usart_service(void);//串口接收服务程序,在main函数里
- void communication_service(void); //一发一收的通讯服务程序
- void eusart_send(unsigned char ucSendData); //发送一个字节,内部自带每个字节之间的delay延时
- void key_service(void); //按键服务的应用程序
- void key_scan(void);//按键扫描函数 放在定时中断里
- void status_service(void);//状态显示的应用程序
- sbit key_sr1=P0^0; //对应朱兆祺学习板的S1键
- sbit key_sr2=P0^1; //对应朱兆祺学习板的S5键
- sbit key_sr3=P0^2; //对应朱兆祺学习板的S9键
- sbit key_sr4=P0^3; //对应朱兆祺学习板的S13键
- sbit key_gnd_dr=P0^4; //模拟独立按键的地GND,因此必须一直输出低电平
- sbit beep_dr=P2^7; //蜂鸣器的驱动IO口
- sbit led_dr=P3^5;//作为状态指示灯 亮的时候表示待机状态.闪烁表示非待机状态,处于正在发送数据或者出错的状态
- sbit dig_hc595_sh_dr=P2^0; //数码管的74HC595程序
- sbit dig_hc595_st_dr=P2^1;
- sbit dig_hc595_ds_dr=P2^2;
- sbit hc595_sh_dr=P2^3; //LED灯的74HC595程序
- sbit hc595_st_dr=P2^4;
- sbit hc595_ds_dr=P2^5;
- unsigned char ucSendregBuf[const_send_size]; //发送的缓冲区数组
- unsigned intuiSendCnt=0; //用来识别串口是否接收完一串数据的计时器
- unsigned char ucSendLock=1; //串口服务程序的自锁变量,每次接收完一串数据只处理一次
- unsigned intuiRcregTotal=0;//代表当前缓冲区已经接收了多少个数据
- unsigned char ucRcregBuf[const_rc_size]; //接收串口中断数据的缓冲区数组
- unsigned intuiRcMoveIndex=0;//用来解析数据协议的中间变量
- unsigned charucSendCntLock=0; //串口计时器的原子锁
- unsigned char ucRcType=0;//数据类型
- unsigned intuiRcSize=0;//数据长度
- unsigned char ucRcCy=0;//校验累加和
- unsigned char ucLedLock=0; //原子锁
- unsigned intuiLedCnt=0;//控制Led闪烁的延时计时器
- unsigned intuiSendTimeOutCnt=0; //用来识别接收数据超时的计时器
- unsigned char ucSendTimeOutLock=0; //原子锁
- unsigned char ucStatus=0; //当前状态变量 0代表待机 1代表正在通讯过程 2代表发送出错
- unsigned char ucSendStep=0; //发送数据的过程步骤
- unsigned char ucErrorCnt=0; //累计错误总数
- unsigned char ucSendTotal=0; //记录当前已经发送了多少串数据
- unsigned char ucReceiveStatus=0; //返回的数据状态 0代表待机 1代表校验正确 2代表校验出错
- unsigned char ucKeySec=0; //被触发的按键编号
- unsigned intuiKeyTimeCnt1=0; //按键去抖动延时计数器
- unsigned char ucKeyLock1=0; //按键触发后自锁的变量标志
- unsigned intuiKeyTimeCnt2=0; //按键去抖动延时计数器
- unsigned char ucKeyLock2=0; //按键触发后自锁的变量标志
- unsigned intuiKeyTimeCnt3=0; //按键去抖动延时计数器
- unsigned char ucKeyLock3=0; //按键触发后自锁的变量标志
- unsigned intuiKeyTimeCnt4=0; //按键去抖动延时计数器
- unsigned char ucKeyLock4=0; //按键触发后自锁的变量标志
- unsigned intuiVoiceCnt=0;//蜂鸣器鸣叫的持续时间计数器
- unsigned charucVoiceLock=0;//蜂鸣器鸣叫的原子锁
- unsigned char ucDigShow8;//第8位数码管要显示的内容
- unsigned char ucDigShow7;//第7位数码管要显示的内容
- unsigned char ucDigShow6;//第6位数码管要显示的内容
- unsigned char ucDigShow5;//第5位数码管要显示的内容
- unsigned char ucDigShow4;//第4位数码管要显示的内容
- unsigned char ucDigShow3;//第3位数码管要显示的内容
- unsigned char ucDigShow2;//第2位数码管要显示的内容
- unsigned char ucDigShow1;//第1位数码管要显示的内容
- unsigned char ucDigDot8;//数码管8的小数点是否显示的标志
- unsigned char ucDigDot7;//数码管7的小数点是否显示的标志
- unsigned char ucDigDot6;//数码管6的小数点是否显示的标志
- unsigned char ucDigDot5;//数码管5的小数点是否显示的标志
- unsigned char ucDigDot4;//数码管4的小数点是否显示的标志
- unsigned char ucDigDot3;//数码管3的小数点是否显示的标志
- unsigned char ucDigDot2;//数码管2的小数点是否显示的标志
- unsigned char ucDigDot1;//数码管1的小数点是否显示的标志
- unsigned char ucDigShowTemp=0; //临时中间变量
- unsigned char ucDisplayD
主机串口收发程序框 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)