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

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

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

  1. 一个字节
  2. delay_short(400);//每个字节之间的延时,这里非常关键,也是最容易出错的地方。延时的大小请根据实际项目来调整
  3. TI = 0; //清零串口发送完成中断请求标志
  4. ES = 1; //允许串口中断
  5. }
  6. void display_service(void) //显示的窗口菜单服务程序
  7. {
  8. switch(ucWd)//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
  9. {
  10. case 1: //显示P--1窗口的数据
  11. if(ucWd1Update==1)//窗口1要全部更新显示
  12. {
  13. ucWd1Update=0;//及时清零标志,避免一直进来扫描
  14. ucDigShow8=12;//第8位数码管显示P
  15. ucDigShow7=11;//第7位数码管显示-
  16. ucDigShow6=1; //第6位数码管显示1
  17. ucDigShow5=10;//第5位数码管显示无
  18. //先分解数据
  19. ucTemp4=uiSetData1/1000;
  20. ucTemp3=uiSetData1%1000/100;
  21. ucTemp2=uiSetData1%100/10;
  22. ucTemp1=uiSetData1%10;
  23. //再过渡需要显示的数据到缓冲变量里,让过渡的时间越短越好
  24. if(uiSetData1<1000)
  25. {
  26. ucDigShow4=10;//如果小于1000,千位显示无
  27. }
  28. else
  29. {
  30. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  31. }
  32. if(uiSetData1<100)
  33. {
  34. ucDigShow3=10;//如果小于100,百位显示无
  35. }
  36. else
  37. {
  38. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  39. }
  40. if(uiSetData1<10)
  41. {
  42. ucDigShow2=10;//如果小于10,十位显示无
  43. }
  44. else
  45. {
  46. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  47. }
  48. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  49. }
  50. break;
  51. case 2://显示P--2窗口的数据
  52. if(ucWd2Update==1)//窗口2要全部更新显示
  53. {
  54. ucWd2Update=0;//及时清零标志,避免一直进来扫描
  55. ucDigShow8=12;//第8位数码管显示P
  56. ucDigShow7=11;//第7位数码管显示-
  57. ucDigShow6=2;//第6位数码管显示2
  58. ucDigShow5=10; //第5位数码管显示无
  59. ucTemp4=uiSetData2/1000; //分解数据
  60. ucTemp3=uiSetData2%1000/100;
  61. ucTemp2=uiSetData2%100/10;
  62. ucTemp1=uiSetData2%10;
  63. if(uiSetData2<1000)
  64. {
  65. ucDigShow4=10;//如果小于1000,千位显示无
  66. }
  67. else
  68. {
  69. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  70. }
  71. if(uiSetData2<100)
  72. {
  73. ucDigShow3=10;//如果小于100,百位显示无
  74. }
  75. else
  76. {
  77. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  78. }
  79. if(uiSetData2<10)
  80. {
  81. ucDigShow2=10;//如果小于10,十位显示无
  82. }
  83. else
  84. {
  85. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  86. }
  87. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  88. }
  89. break;
  90. case 3://显示P--3窗口的数据
  91. if(ucWd3Update==1)//窗口3要全部更新显示
  92. {
  93. ucWd3Update=0;//及时清零标志,避免一直进来扫描
  94. ucDigShow8=12;//第8位数码管显示P
  95. ucDigShow7=11;//第7位数码管显示-
  96. ucDigShow6=3;//第6位数码管显示3
  97. ucDigShow5=10; //第5位数码管显示无
  98. ucTemp4=uiSetData3/1000; //分解数据
  99. ucTemp3=uiSetData3%1000/100;
  100. ucTemp2=uiSetData3%100/10;
  101. ucTemp1=uiSetData3%10;
  102. if(uiSetData3<1000)
  103. {
  104. ucDigShow4=10;//如果小于1000,千位显示无
  105. }
  106. else
  107. {
  108. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  109. }
  110. if(uiSetData3<100)
  111. {
  112. ucDigShow3=10;//如果小于100,百位显示无
  113. }
  114. else
  115. {
  116. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  117. }
  118. if(uiSetData3<10)
  119. {
  120. ucDigShow2=10;//如果小于10,十位显示无
  121. }
  122. else
  123. {
  124. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  125. }
  126. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  127. }
  128. break;
  129. case 4://显示P--4窗口的数据
  130. if(ucWd4Update==1)//窗口4要全部更新显示
  131. {
  132. ucWd4Update=0;//及时清零标志,避免一直进来扫描
  133. ucDigShow8=12;//第8位数码管显示P
  134. ucDigShow7=11;//第7位数码管显示-
  135. ucDigShow6=4;//第6位数码管显示4
  136. ucDigShow5=10; //第5位数码管显示无
  137. ucTemp4=uiSet

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

网站地图

Top