微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第45节:主机的串口收发综合程序框架

第45节:主机的串口收发综合程序框架

时间:11-22 来源:互联网 点击:

  1. e(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);
  2. void T0_time(void);//定时中断函数
  3. void usart_receive(void); //串口接收中断函数
  4. void usart_service(void);//串口接收服务程序,在main函数里
  5. void communication_service(void); //一发一收的通讯服务程序
  6. void eusart_send(unsigned char ucSendData); //发送一个字节,内部自带每个字节之间的delay延时
  7. void key_service(void); //按键服务的应用程序
  8. void key_scan(void);//按键扫描函数 放在定时中断里
  9. void status_service(void);//状态显示的应用程序
  10. sbit key_sr1=P0^0; //对应朱兆祺学习板的S1键
  11. sbit key_sr2=P0^1; //对应朱兆祺学习板的S5键
  12. sbit key_sr3=P0^2; //对应朱兆祺学习板的S9键
  13. sbit key_sr4=P0^3; //对应朱兆祺学习板的S13键
  14. sbit key_gnd_dr=P0^4; //模拟独立按键的地GND,因此必须一直输出低电平
  15. sbit beep_dr=P2^7; //蜂鸣器的驱动IO口
  16. sbit led_dr=P3^5;//作为状态指示灯 亮的时候表示待机状态.闪烁表示非待机状态,处于正在发送数据或者出错的状态
  17. sbit dig_hc595_sh_dr=P2^0; //数码管的74HC595程序
  18. sbit dig_hc595_st_dr=P2^1;
  19. sbit dig_hc595_ds_dr=P2^2;
  20. sbit hc595_sh_dr=P2^3; //LED灯的74HC595程序
  21. sbit hc595_st_dr=P2^4;
  22. sbit hc595_ds_dr=P2^5;
  23. unsigned char ucSendregBuf[const_send_size]; //发送的缓冲区数组
  24. unsigned intuiSendCnt=0; //用来识别串口是否接收完一串数据的计时器
  25. unsigned char ucSendLock=1; //串口服务程序的自锁变量,每次接收完一串数据只处理一次
  26. unsigned intuiRcregTotal=0;//代表当前缓冲区已经接收了多少个数据
  27. unsigned char ucRcregBuf[const_rc_size]; //接收串口中断数据的缓冲区数组
  28. unsigned intuiRcMoveIndex=0;//用来解析数据协议的中间变量
  29. unsigned charucSendCntLock=0; //串口计时器的原子锁
  30. unsigned char ucRcType=0;//数据类型
  31. unsigned intuiRcSize=0;//数据长度
  32. unsigned char ucRcCy=0;//校验累加和
  33. unsigned char ucLedLock=0; //原子锁
  34. unsigned intuiLedCnt=0;//控制Led闪烁的延时计时器
  35. unsigned intuiSendTimeOutCnt=0; //用来识别接收数据超时的计时器
  36. unsigned char ucSendTimeOutLock=0; //原子锁
  37. unsigned char ucStatus=0; //当前状态变量 0代表待机 1代表正在通讯过程 2代表发送出错
  38. unsigned char ucSendStep=0; //发送数据的过程步骤
  39. unsigned char ucErrorCnt=0; //累计错误总数
  40. unsigned char ucSendTotal=0; //记录当前已经发送了多少串数据
  41. unsigned char ucReceiveStatus=0; //返回的数据状态 0代表待机 1代表校验正确 2代表校验出错
  42. unsigned char ucKeySec=0; //被触发的按键编号
  43. unsigned intuiKeyTimeCnt1=0; //按键去抖动延时计数器
  44. unsigned char ucKeyLock1=0; //按键触发后自锁的变量标志
  45. unsigned intuiKeyTimeCnt2=0; //按键去抖动延时计数器
  46. unsigned char ucKeyLock2=0; //按键触发后自锁的变量标志
  47. unsigned intuiKeyTimeCnt3=0; //按键去抖动延时计数器
  48. unsigned char ucKeyLock3=0; //按键触发后自锁的变量标志
  49. unsigned intuiKeyTimeCnt4=0; //按键去抖动延时计数器
  50. unsigned char ucKeyLock4=0; //按键触发后自锁的变量标志
  51. unsigned intuiVoiceCnt=0;//蜂鸣器鸣叫的持续时间计数器
  52. unsigned charucVoiceLock=0;//蜂鸣器鸣叫的原子锁
  53. unsigned char ucDigShow8;//第8位数码管要显示的内容
  54. unsigned char ucDigShow7;//第7位数码管要显示的内容
  55. unsigned char ucDigShow6;//第6位数码管要显示的内容
  56. unsigned char ucDigShow5;//第5位数码管要显示的内容
  57. unsigned char ucDigShow4;//第4位数码管要显示的内容
  58. unsigned char ucDigShow3;//第3位数码管要显示的内容
  59. unsigned char ucDigShow2;//第2位数码管要显示的内容
  60. unsigned char ucDigShow1;//第1位数码管要显示的内容
  61. unsigned char ucDigDot8;//数码管8的小数点是否显示的标志
  62. unsigned char ucDigDot7;//数码管7的小数点是否显示的标志
  63. unsigned char ucDigDot6;//数码管6的小数点是否显示的标志
  64. unsigned char ucDigDot5;//数码管5的小数点是否显示的标志
  65. unsigned char ucDigDot4;//数码管4的小数点是否显示的标志
  66. unsigned char ucDigDot3;//数码管3的小数点是否显示的标志
  67. unsigned char ucDigDot2;//数码管2的小数点是否显示的标志
  68. unsigned char ucDigDot1;//数码管1的小数点是否显示的标志
  69. unsigned char ucDigShowTemp=0; //临时中间变量
  70. unsigned char ucDisplayD

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top