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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1613|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

單片機程序只執(zhí)行到一半,往下就不運行了是什么回事?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:198189 發(fā)表于 2022-10-20 00:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我程序只運行到了這里, if(k3==1)                                  {
                                         
                   LED[0]=a%10;  //顯示計數(shù)
                                                LED[1]=a/10%10;                        
                                                LED[2]=a/100%10;
                                                LED[3]=a/1000;
                                 }
后面的就不顯示了,啥回事?

全程序如下:
  1. /*
  2. MCLKO/NRST/SCL_2/MOSI/RxD_3/T1CLKO/T0/INT2/P5.4
  3. Vcc
  4. SDA_2/SS/TxD_3/T0CLKO/T1/INT3/P5.5
  5. Gnd

  6. P3.3/TxD_2/INT1/MISO/SDA
  7. P3.2/RxD_2/INT0/SCLK/SCL
  8. P3.1/TxD
  9. P3.0/RxD/INT4
  10. */
  11. #include "8g.h"
  12. #include "intrins.h"
  13. #define uchar unsigned char
  14. #define uint  unsigned int
  15. #define EX3             0x20
  16. void LED4_Display (void);                        // LED顯示
  17. void LED_OUT(uchar X);                                // LED單字節(jié)串行移位函數(shù)
  18. unsigned char code LED_0F[];                // LED字模表
  19. unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  20. unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  21. unsigned char  disbuf[4]={0,0,0,0};
  22. sbit DIO = P3^2;                                //串行數(shù)據(jù)輸入
  23. sbit RCLK  = P3^3;                                //時鐘脈沖信號——上升沿有效
  24. sbit SCLK = P5^4;                                //打入信號————上升沿有效
  25. sbit IN3=P5^5;  //對射光藕

  26. sbit k31=P3^1;
  27. //sbit IN3=P1^2;
  28. //sbit IN4=P1^3;
  29. //sbit LED=P2^0;
  30. /******************************************************************************************
  31. 使用數(shù)組對數(shù)碼管預(yù)先定義
  32. /*****************************************************************************************/
  33. unsigned int motor1=0;         //計左電機碼盤脈沖值
  34. unsigned int speed1=0;         //計左電機碼盤脈沖值
  35. unsigned int k=0,a=0,k2;
  36. unsigned char k3=2;

  37. uchar LED[8];        //用于LED的8位顯示緩存
  38. void LED4_Display (void)
  39. {
  40.         unsigned char code *led_table;          // 查表指針
  41.         uchar i;
  42.         //顯示第1位
  43.         led_table = LED_0F + LED[0];
  44.         i = *led_table;

  45.         LED_OUT(i);                        
  46.         LED_OUT(0x01);               

  47.         RCLK = 0;
  48.         RCLK = 1;
  49.         //顯示第2位
  50.         led_table = LED_0F + LED[1];
  51.         i = *led_table;

  52.         LED_OUT(i);               
  53.         LED_OUT(0x02);               

  54.         RCLK = 0;
  55.         RCLK = 1;
  56.         //顯示第3位
  57.         led_table = LED_0F + LED[2];
  58.         i = *led_table;

  59.         LED_OUT(i);                        
  60.         LED_OUT(0x04);        

  61.         RCLK = 0;
  62.         RCLK = 1;
  63.         //顯示第4位
  64.         led_table = LED_0F + LED[3];
  65.         i = *led_table;

  66.         LED_OUT(i);                        
  67.         LED_OUT(0x08);               

  68.         RCLK = 0;
  69.         RCLK = 1;
  70. }

  71. void LED_OUT(uchar X)
  72. {
  73.         uchar i;
  74.         for(i=8;i>=1;i--)
  75.         {
  76.                 if (X&0x80) DIO=1; else DIO=0;
  77.                 X<<=1;
  78.                 SCLK = 0;
  79.                 SCLK = 1;
  80.         }
  81. }

  82. unsigned char code LED_0F[] =
  83. {// 0         1          2           3        4         5          6           7        8         9          A           b        C    d          E    F    -
  84.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
  85. };
  86. //

  87. /*********************************************************************************************
  88. 外部中斷
  89. /********************************************************************************************/
  90. void INT_init (void)
  91. {
  92.                 INTCLKO |= EX3;                             //使能INT3下降沿中斷
  93.   EA = 1;                        //中斷總開關(guān)  
  94. }

  95. /********************************************************************************************
  96. 定時器0初始化
  97. /********************************************************************************************/
  98. void T0_init (void)
  99. {
  100.                 AUXR |= 0x80;                //定時器時鐘1T模式
  101.         TMOD &= 0xF0;                //設(shè)置定時器模式
  102.         TL0 = 0;                //設(shè)置定時初始值
  103.         TH0 = 0;                //設(shè)置定時初始值計數(shù)初值
  104.         TR0 = 1;      //啟動定時器
  105.    ET0 = 1;    //使能定時器中斷

  106. }

  107. /********************************************************************************************
  108. //延遲函數(shù)
  109. /********************************************************************************************/
  110. void DELAY_MS (unsigned int a)
  111. {
  112.         unsigned int i;
  113.         while( a-- != 0)
  114.         {
  115.                 for(i = 0; i < 600; i++);
  116.         }
  117. }

  118. /*********************************************************************************************
  119. 主程序
  120. /********************************************************************************************/
  121. void main(void)
  122. {               
  123.           P1M0 = 0x00;
  124.     P1M1 = 0x00;
  125.     P3M0 = 0x00;
  126.     P3M1 = 0x00;
  127.     P5M0 = 0x00;
  128.     P5M1 = 0x00;               
  129.                 INT_init();
  130.                 T0_init();
  131.           IN3=1;//光藕初始化
  132.           k3=1;  //按鍵默認(rèn)顯示速度
  133.         while (1)
  134.         {
  135.                 if(k31==0&&k3==1)
  136.                         {
  137.                                 DELAY_MS (10);
  138.                                         if(k31==0&&k3==1)
  139.                                         {
  140.                                                 k3=2;//顯示速度
  141.                                         }
  142.                         }
  143.                 if(k31==0&&k3==2)
  144.                         {
  145.                                 DELAY_MS (10);
  146.                                         if(k31==0&&k3==2)
  147.                                         {
  148.                                                 k3=1;//顯示計數(shù)
  149.                                         }
  150.                                 }
  151.                  if(a>9999)
  152.                  {a=0;}
  153.          LED4_Display ();  
  154.         }
  155. }


  156. /*********************************************************************************************
  157. 外部中斷INT3計算電機1的脈沖
  158. /********************************************************************************************/
  159. void INT3_Isr() interrupt 11
  160. {
  161.         motor1++;        
  162.         a++;
  163. }
  164. /*********************************************************************************************
  165. 外部中斷INT1計算電機2的脈沖
  166. /********************************************************************************************/

  167. void TM0_Isr() interrupt 1
  168. {
  169.         TH0=(65536-1000)/256;        //16位計數(shù)寄存器T0高8位, 12MHZ時1000微秒
  170.         TL0=(65536-1000)%256;        //16位計數(shù)寄存器T0低8位,
  171.         k++;                        //k自加1
  172.         if(k==1000)               
  173.         {
  174.                 k=k2;
  175.                 k=0;                        //重新定義k的值
  176.                 speed1=motor1*60; // 轉(zhuǎn)/min
  177.                 motor1=0;                 //重新定義motor1的值
  178.         }               
  179.          if(k3==1)
  180.                                  {
  181.                                          
  182.                    LED[0]=a%10;  //顯示計數(shù)
  183.                                                 LED[1]=a/10%10;                        
  184.                                                 LED[2]=a/100%10;
  185.                                                 LED[3]=a/1000;
  186.                                  }
  187.                                  if(k3==2)
  188.                                  {
  189.                   LED[3]=speed1/10;//顯示速度
  190.                                                 LED[2]=speed1%10;
  191.                                                 LED[1]=5;
  192.                                                 LED[0]=8;
  193.                                  }
  194.         
  195.         
  196. }
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:523803 發(fā)表于 2022-10-20 00:41 | 只看該作者
你的K31是按鈕吧,如果是按鈕的話,你有沒有按呢,如果按了的話可能是切換的太快了
if(k31==0&&k3==1)
                        {
                                DELAY_MS (10);
                                        if(k31==0&&k3==1)
                                        {
                                                k3=2;//顯示速度
                                        }
                        }
                if(k31==0&&k3==2)
                        {
                                DELAY_MS (10);
                                        if(k31==0&&k3==2)
                                        {
                                                k3=1;//顯示計數(shù)
                                        }
                                }
這里k31按下條件成立K3=2,這個時候下面的判斷也成立了,就會反復(fù)執(zhí)行
回復(fù)

使用道具 舉報

板凳
ID:198189 發(fā)表于 2022-10-20 10:02 | 只看該作者
18520649817 發(fā)表于 2022-10-20 00:41
你的K31是按鈕吧,如果是按鈕的話,你有沒有按呢,如果按了的話可能是切換的太快了
if(k31==0&&k3==1)
  ...

k31我還沒啟用,我直接讓k3=2來調(diào)試,發(fā)現(xiàn)if(k3=2)這語句執(zhí)行不起來。
回復(fù)

使用道具 舉報

地板
ID:8222 發(fā)表于 2022-10-20 11:05 | 只看該作者
你語言描述都不清楚,你還是說明程序運行到到第幾行停止吧。
回復(fù)

使用道具 舉報

5#
ID:198189 發(fā)表于 2022-10-20 12:12 | 只看該作者
溫xyz 發(fā)表于 2022-10-20 11:05
你語言描述都不清楚,你還是說明程序運行到到第幾行停止吧。

程序運行后只顯示計數(shù),不顯示速度。就算我在程序開關(guān)規(guī)定讓它不經(jīng)檢測直接默認(rèn)顯示速度也無法顯示出來。
回復(fù)

使用道具 舉報

6#
ID:198189 發(fā)表于 2022-10-20 12:19 | 只看該作者
另說明,程序是可以運行起來的,計數(shù)也是正確的。我調(diào)試時是把計數(shù)顯示直接去掉的,不是讓它們兩個同時運行,然后發(fā)現(xiàn)它不運行速度顯示的語句。我糾結(jié)了半天沒發(fā)現(xiàn)我的問題出現(xiàn)在哪里?
回復(fù)

使用道具 舉報

7#
ID:161164 發(fā)表于 2022-10-20 16:41 | 只看該作者
xia20 發(fā)表于 2022-10-20 10:02
k31我還沒啟用,我直接讓k3=2來調(diào)試,發(fā)現(xiàn)if(k3=2)這語句執(zhí)行不起來。

回復(fù)

使用道具 舉報

8#
ID:198189 發(fā)表于 2022-10-20 21:24 | 只看該作者

大佬請收下我的膝蓋,我這是寫暈了頭忘了改了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线免费 | 成人欧美一区二区三区在线观看 | 亚洲成人综合社区 | 中文字幕韩在线第一页 | 日本高清不卡视频 | 91综合网 | 毛片在线看看 | 91在线视频免费观看 | 精品少妇一区二区三区日产乱码 | 色综合色综合网色综合 | 精品视频一区二区三区在线观看 | 国产精品综合视频 | 理论片免费在线观看 | 97精品国产 | 涩涩视频网站在线观看 | 中文字幕一区二区三区乱码图片 | av手机在线免费观看 | 国产综合久久 | 中文字幕日韩欧美一区二区三区 | 欧美在线播放一区 | 亚洲网在线 | 欧美精品久久久久 | 九九热在线观看 | 特黄毛片视频 | 日本一区二区在线视频 | 国产在线视频一区二区董小宛性色 | 欧美专区在线观看 | 武道仙尊动漫在线观看 | 宅男噜噜噜66一区二区 | 欧美13videosex性极品 | 国产成人福利在线观看 | 国产欧美一区二区三区日本久久久 | 欧美黄色性生活视频 | 日韩综合在线 | 91在线导航| 国产精品无码久久久久 | www.日韩 | 国产永久免费 | 中国黄色在线视频 | 91porn在线观看 | 特级黄一级播放 |