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

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

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

  1. 兆祺学习板的S5键
  2. switch(ucWd)//在不同的窗口下,设置不同的参数
  3. {
  4. case 1:
  5. uiSetData1--;
  6. if(uiSetData1>9999)
  7. {
  8. uiSetData1=0;//最小值是0
  9. }
  10. ucWd1Update=1;//窗口1更新显示
  11. break;
  12. case 2:
  13. uiSetData2--;
  14. if(uiSetData2>9999)
  15. {
  16. uiSetData2=0;//最小值是0
  17. }
  18. ucWd2Update=1;//窗口2更新显示
  19. break;
  20. case 3:
  21. uiSetData3--;
  22. if(uiSetData3>9999)
  23. {
  24. uiSetData3=0;//最小值是0
  25. }
  26. ucWd3Update=1;//窗口3更新显示
  27. break;
  28. case 4:
  29. uiSetData4--;
  30. if(uiSetData4>9999)
  31. {
  32. uiSetData4=0;//最小值是0
  33. }
  34. ucWd4Update=1;//窗口4更新显示
  35. break;
  36. }
  37. ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
  38. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  39. ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
  40. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  41. break;
  42. case 3:// 切换窗口按键 对应朱兆祺学习板的S9键
  43. ucWd++;//切换窗口
  44. if(ucWd>4)
  45. {
  46. ucWd=1;
  47. }
  48. switch(ucWd)//在不同的窗口下,在不同的窗口下,更新显示不同的窗口
  49. {
  50. case 1:
  51. ucWd1Update=1;//窗口1更新显示
  52. break;
  53. case 2:
  54. ucWd2Update=1;//窗口2更新显示
  55. break;
  56. case 3:
  57. ucWd3Update=1;//窗口3更新显示
  58. break;
  59. case 4:
  60. ucWd4Update=1;//窗口4更新显示
  61. break;
  62. }
  63. ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
  64. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  65. ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
  66. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  67. break;
  68. case 4:// 启动发送数据和复位按键 对应朱兆祺学习板的S13键
  69. switch(ucStatus)//在不同的状态下,进行不同的操作
  70. {
  71. case 0://处于待机状态,则启动发送数据
  72. ucErrorCnt=0; //累计错误总数清零
  73. ucSendTotal=0; //已经发送串数据总数清零
  74. ucSendStep=0; //发送数据的过程步骤清零,返回开始的步骤待命
  75. ucStatus=1; //启动发送数据,1代表正在通讯过程
  76. break;
  77. case 1://处于正在通讯的过程
  78. break;
  79. case 2: //发送数据出错,比如中间超时没有接收到数据
  80. ucStatus=0; //切换回待机的状态
  81. break;
  82. }
  83. ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
  84. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  85. ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
  86. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  87. break;
  88. }
  89. }
  90. void display_drive(void)
  91. {
  92. //以下程序,如果加一些数组和移位的元素,还可以压缩容量。但是鸿哥追求的不是容量,而是清晰的讲解思路
  93. switch(ucDisplayDriveStep)
  94. {
  95. case 1://显示第1位
  96. ucDigShowTemp=dig_table[ucDigShow1];
  97. if(ucDigDot1==1)
  98. {
  99. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  100. }
  101. dig_hc595_drive(ucDigShowTemp,0xfe);
  102. break;
  103. case 2://显示第2位
  104. ucDigShowTemp=dig_table[ucDigShow2];
  105. if(ucDigDot2==1)
  106. {
  107. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  108. }
  109. dig_hc595_drive(ucDigShowTemp,0xfd);
  110. break;
  111. case 3://显示第3位
  112. ucDigShowTemp=dig_table[ucDigShow3];
  113. if(ucDigDot3==1)
  114. {
  115. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  116. }
  117. dig_hc595_drive(ucDigShowTemp,0xfb);
  118. break;
  119. case 4://显示第4位
  120. ucDigShowTemp=dig_table[ucDigShow4];
  121. if(ucDigDot4==1)
  122. {
  123. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  124. }
  125. dig_hc595_drive(ucDigShowTemp,0

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

网站地图

Top