久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2454|回復: 6
打印 上一主題 下一主題
收起左側

5.00v電壓表,全速仿真可以通過,為啥單步就顯示不正常?

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序:
  1. /*********************************包含頭文件********************************/
  2. #include <reg51.h>
  3. #include <intrins.h>
  4. /*********************************端口定義  **********************************/
  5. sbit CS  = P3^2;
  6. sbit Clk = P3^0;
  7. sbit DATI = P3^1;
  8. sbit DATO = P3^1;
  9. sbit P20 = P2^0 ;
  10. /*******************************定義全局變量    ********************************/
  11. unsigned char dat = 0x00;                                   //AD  值
  12. unsigned char count = 0x00;                                 //定時器計數
  13. unsigned char CH;                                           //通道變量
  14. unsigned char dis[] = {0x00, 0x00, 0x00};                   //顯示數值
  15. /*******************************共陽   LED  段碼表  *******************************/
  16. unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  17. char code tablewe[]={0xfd,0xfb,0xf7,0xef,0xdf,0xfe};
  18. /****************************************************************************
  19. 函數功能   :AD  轉換子程序
  20. 入口參數   :CH
  21. 出口參數   :dat
  22. ****************************************************************************/
  23. unsigned char adc0832(unsigned char CH)
  24. {
  25. unsigned char i,test,adval;
  26. adval = 0x00;
  27. test = 0x00;
  28. Clk = 0;                                                       //初始化
  29. DATI = 1;
  30. _nop_();
  31. CS = 0;
  32. _nop_();
  33. Clk = 1;
  34. _nop_();
  35. if ( CH == 0x00 )                                            //通道選擇
  36. {
  37. Clk = 0;
  38. DATI = 1;                                                    //通道   0 的第一位
  39. _nop_();
  40. Clk = 1;
  41. _nop_();
  42. Clk = 0;
  43. DATI = 0;                                                    //通道  0 的第二位
  44. _nop_();
  45. Clk = 1;
  46. _nop_();
  47. }
  48. else
  49. {
  50. Clk = 0;
  51. DATI = 1;             //通道  1 的第一位
  52. _nop_();
  53. Clk = 1;
  54. _nop_();
  55. Clk = 0;
  56. DATI = 1;             //通道  1 的第二位
  57. _nop_();
  58. Clk = 1;
  59. _nop_();
  60. }
  61. Clk = 0;
  62. DATI = 1;
  63. for( i = 0;i < 8;i++ )               //讀取前   8 位的值
  64. {
  65. _nop_();
  66. adval <<= 1;
  67. Clk = 1;
  68. _nop_();
  69. Clk = 0;
  70. if (DATO)
  71. adval |= 0x01;
  72. else
  73. adval |= 0x00;
  74. }
  75. for (i = 0; i < 8; i++)               //讀取后    8 位的值
  76. {
  77. test >>= 1;
  78. if (DATO)
  79. test |= 0x80;
  80. else
  81. test |= 0x00;
  82. _nop_();
  83. Clk = 1;
  84. _nop_();
  85. Clk = 0;
  86. }
  87. dat=test;
  88. _nop_();
  89. CS = 1;                                 //釋放   ADC0832
  90. DATO = 1;
  91. Clk = 1;
  92. return dat;
  93. }
  94. /****************************************************************************
  95. 函數功能   :延時子程序
  96. 入口參數   :
  97. 出口參數   :
  98. ****************************************************************************/
  99. void delay(void)
  100. {
  101. int k;
  102. for(k=100;k<500;k++);
  103. }
  104. /****************************************************************************
  105. 函數功能   :將  0-255 級換算成    0.00-5.00  的電壓數值
  106. 入口參數   :i
  107. 出口參數   :
  108. ****************************************************************************/
  109. void convdata(unsigned char i)
  110. {
  111. dis[0] = i/51;                                   //個位
  112. dis[1] = (i%51)*10/51;                         //小數點后第一位
  113. dis[2] = ((i%51)*10%51)*10/51;                 //小數點后第二位
  114. }
  115. /****************************************************************************
  116. 函數功能   :數碼管顯示子程序
  117. 入口參數   :
  118. 出口參數   :
  119. ****************************************************************************/
  120. void display(void)
  121. {
  122. P2=0xff;                                                         
  123. P0=tab[dis[0]] & 0x7f;               //顯示個位和小數點
  124. delay();
  125. P2=0xfd;
  126. P2=0xff;                                                         
  127. P0=tab[dis[1]];                    //顯示小數點后第一位
  128. delay();
  129. P2=0xfb;
  130. P2=0xff;
  131. P0=tab[dis[2]];                    //顯示小數點后第二位
  132. delay();
  133. P2=0xf7;
  134. P2=0xff;
  135. P0=0xff;                          
  136. }
  137. /****************************************************************************
  138. 函數功能   :主程序
  139. 入口參數   :
  140. 出口參數   :
  141. ****************************************************************************/
  142. void main(void)
  143. {
  144. P2=0xff;                               //端口初始化
  145. P0=0xff;
  146. delay();
  147. CH = 0x00;                             //在這里選擇通道 0x00 或 0x01
  148. TMOD = 0x01;                           //設置中斷
  149. TH0=(65536-50000)/256;                 //定時器1初值定時 50ms
  150. TL0=(65536-50000)%256;
  151. IE = 0x82;
  152. TR0 = 1;
  153. while(1)                                //主循環
  154.   {
  155.   dat = adc0832(CH);
  156.    convdata(dat);                        //數據轉換
  157.    display();                            //顯示數值
  158.   }
  159. }
  160. /****************************************************************************
  161. 函數功能   :定時器中斷延時程序 這一段的作用時隔一段時間抽樣一次 否側顯示的最后一位
  162. 會不穩定
  163. 入口參數   :
  164. 出口參數   :
  165. ****************************************************************************/
  166. void timer0(void) interrupt 1
  167. {
  168. TMOD = 0x01;
  169. TH0=(65536-50000)/256;              //  定時器1初值定時50ms
  170. TL0=(65536-50000)%256;
  171. IE = 0x82;
  172. TR0 = 1;
  173. count++;
  174. if (count == 0x01)
  175.   {
  176.    count = 0x00;
  177.    dat = adc0832(CH);
  178.   }
  179. }

復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:432823 發表于 2018-12-23 10:55 | 只看該作者
仿真器與實際硬件有差別,一般仿真器上做全速,硬件調試可做單步與全速,斷點等調試。
回復

使用道具 舉報

板凳
ID:412814 發表于 2018-12-23 11:28 | 只看該作者
yaoji123 發表于 2018-12-23 10:55
仿真器與實際硬件有差別,一般仿真器上做全速,硬件調試可做單步與全速,斷點等調試。

是不是圖二的程序有問題?
回復

使用道具 舉報

地板
ID:412814 發表于 2018-12-23 11:31 | 只看該作者
問題是:單步運行時4個“2.”都亮了,如圖二。全速運行就正常了如圖三。
回復

使用道具 舉報

5#
ID:412814 發表于 2018-12-23 18:44 | 只看該作者
有明白的嗎?希望能指教,謝謝
回復

使用道具 舉報

6#
ID:451718 發表于 2018-12-24 13:52 | 只看該作者
中斷里面做太多事情了,竟然還有除法運算,你自己有沒有測算一下這個中斷要多長時間去處理? 很有可能是程序跑飛了。 建議你,中斷里面就設置標志位,在主程序里面判斷標志位,然后執行相應程序。
回復

使用道具 舉報

7#
ID:347152 發表于 2018-12-24 15:13 來自手機 | 只看該作者
很有可能是程序跑飛了。 建議你,中斷里面就設置標志位,在主程序里面判斷標志位,然后執行相應程序。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线电影网 | 午夜免费视频 | 国产精品久久国产精品 | 好好的日在线视频 | 国产亚洲精品久久久优势 | 一级黄色录像毛片 | 久国产视频 | 欧美福利在线 | www.久| 九九久久精品视频 | av在线一区二区三区 | 综合久久久 | 成人精品在线视频 | 粉嫩av久久一区二区三区 | 国产成人精品免高潮在线观看 | 国产精品久久久久久久久图文区 | 免费一区二区三区 | 福利网址| 中文字幕精品一区久久久久 | 黄视频在线网站 | 四虎影视1304t | 国产精品久久久久久久久免费相片 | 亚洲最大av | 91视频一区二区三区 | 一级大黄色片 | 高清一区二区视频 | 日本淫视频 | 日韩国产精品一区二区三区 | 高清视频一区二区三区 | 国产成人免费视频网站视频社区 | 精品国产一区二区三区久久久四川 | 韩日一区二区三区 | 美女福利视频一区 | 国产精品美女一区二区 | 中文字幕的av | 欧美日韩国产在线观看 | 国产无套一区二区三区久久 | 成人在线视频免费观看 | 欧美色综合一区二区三区 | 99热欧美| 久久精品综合 |