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

第44节:从机的串口收发综合程序框架

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

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

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

网站地图

Top