找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機C語言數(shù)組的問題,為什么這個程序在電路中l(wèi)ed4會隨著led1和led2亮一下呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:517235 發(fā)表于 2019-7-2 16:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)于數(shù)組的問題,這個程序是讓led1亮滅三次,led2亮滅三次,led1和led2同時亮四次;
在這個程序沒有對led4進行控制,但是在實際電路中l(wèi)ed4會隨著led1和led2分別亮一下呢?
請教朋友們這是什么原因

單片機源程序如下:
  1. #include <REG51.H>
  2. #include<intrins.h>
  3. sfr P3M0        =   0xB2;   //0000,0000 端口3模式寄存器0
  4. sfr P3M1       =   0xB1;   //0000,0000 端口3模式寄存器1
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit led1=P3^0;
  8. sbit led2=P3^1;
  9. sbit led3=P3^3;
  10. sbit led4=P3^2;

  11. uchar code Tab0[]={0x02,0x02,0x02,0x03};//閃燈控制表


  12. uint i;
  13. /*****************************************************
  14. 函數(shù)功能:延時若Z*10毫秒
  15. 入口參數(shù):z
  16. ***************************************************/

  17. void delay(uint z)
  18. {
  19.         uint i,j;
  20.         for(i=z;i>0;i--)
  21.                 for(j=9200;j>0;j--);
  22. }


  23. void wordliang(void);
  24. /*****************************************************
  25. 函數(shù)功能:p1口燈循環(huán)點亮

  26. ***************************************************/
  27. main()
  28. {     
  29.      // uint i;
  30.      P3M1=0x30;        // IO口設(shè)值(工作模式)
  31.      P3M0=0x0f;        //          IO口設(shè)值(工作模式)         
  32.       P3=0X00;
  33.          
  34.         while(1)
  35.         {            
  36.          
  37.                   
  38.           for(i=0;i<3;i++)         //led1燈亮
  39.                         {
  40.                
  41.                             P3=Tab0[i];
  42.                          delay(50);        
  43.                          P3=0x00;  
  44.                          delay(80);
  45.             }           
  46.                                           
  47.                  

  48.                         for(i=3;i<6;i++)                 //led2燈亮
  49.                         {
  50.                         
  51.                             P3=Tab0[i]        ;
  52.                          delay(50);
  53.                          P3=0x00;  
  54.                          delay(80);                                             
  55.             }
  56.                         
  57.                
  58.                         
  59.                         
  60.                    for(i=6;i<10;i++)                 //led1和led2燈一起亮
  61.                         {
  62.                         
  63.                             P3=Tab0[i]        ;
  64.                          delay(50);
  65.                          P3=0x00;  
  66.                          delay(80);                                             
  67.             }         
  68.                
  69.                   
  70.      }               
  71. }
復(fù)制代碼

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

使用道具 舉報

沙發(fā)
ID:571958 發(fā)表于 2019-7-2 16:55 | 只看該作者
你初始化的數(shù)組。, 你用到了。保啊。阋呀(jīng)越界了!
回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2019-7-2 19:54 | 只看該作者
這程序后2個循環(huán)都超數(shù)組了
回復(fù)

使用道具 舉報

地板
ID:207882 發(fā)表于 2019-7-2 23:30 | 只看該作者
P3=Tab0[i]    i為什么是跟for里面的i同一個,,不是直接uchar code Tab0[]={0x01,0x02,0x03};
回復(fù)

使用道具 舉報

5#
ID:207882 發(fā)表于 2019-7-2 23:32 | 只看該作者
uchar code Tab0[]={0x01,0x02,0x03}; P3=Tab0[0] led1;亮  P3=Tab0[1] led2;亮 P3=Tab0[2] led12;亮,不是這樣? 為什么你的P3=Tab0[i]跟for里面的I同一個,,這個會不會到時找不Tab0[i]的值,就亂了,所以LED4會亮
回復(fù)

使用道具 舉報

6#
ID:517235 發(fā)表于 2019-7-3 09:40 | 只看該作者
單片機引腳圖

timg.jpg (14.7 KB, 下載次數(shù): 63)

timg.jpg
回復(fù)

使用道具 舉報

7#
ID:517235 發(fā)表于 2019-7-3 12:01 | 只看該作者
lihaijun7781 發(fā)表于 2019-7-2 16:55
你初始化的數(shù)組。, 你用到了 10 ,你已經(jīng)越界了!

感謝回復(fù),我也是發(fā)完貼后發(fā)現(xiàn)程序引用數(shù)組的個數(shù)超出了范圍。
那么,超出后,從第5個i開始引用的數(shù)組按什么數(shù)據(jù)引用的呢?Tab0[]={0x02,0x02,0x02,0x03,0,0,0,0,0,0}這樣好像也不對。
回復(fù)

使用道具 舉報

8#
ID:517235 發(fā)表于 2019-7-3 12:01 | 只看該作者
xianfajushi 發(fā)表于 2019-7-2 19:54
這程序后2個循環(huán)都超數(shù)組了

感謝回復(fù),我也是發(fā)完貼后發(fā)現(xiàn)程序引用數(shù)組的個數(shù)超出了范圍。
那么,超出后,從第5個i開始引用的數(shù)組按什么數(shù)據(jù)引用的呢?Tab0[]={0x02,0x02,0x02,0x03,0,0,0,0,0,0}這樣好像也不對。
回復(fù)

使用道具 舉報

9#
ID:517235 發(fā)表于 2019-7-3 12:03 | 只看該作者
2448289424 發(fā)表于 2019-7-2 23:30
P3=Tab0    i為什么是跟for里面的i同一個,,不是直接uchar code Tab0[]={0x01,0x02,0x03};

感謝回復(fù),程序前面只定義了一個uint i,所以就這么用了
回復(fù)

使用道具 舉報

10#
ID:517235 發(fā)表于 2019-7-3 12:04 | 只看該作者
2448289424 發(fā)表于 2019-7-2 23:32
uchar code Tab0[]={0x01,0x02,0x03}; P3=Tab0[0] led1;亮  P3=Tab0[1] led2;亮 P3=Tab0[2] led12;亮, ...

感謝回復(fù),程序里只定義了一個uint i
回復(fù)

使用道具 舉報

11#
ID:577104 發(fā)表于 2019-7-3 13:55 | 只看該作者
越界訪問了
回復(fù)

使用道具 舉報

12#
ID:332444 發(fā)表于 2019-7-3 16:21 | 只看該作者
ealoo 發(fā)表于 2019-7-3 12:01
感謝回復(fù),我也是發(fā)完貼后發(fā)現(xiàn)程序引用數(shù)組的個數(shù)超出了范圍。
那么,超出后,從第5個i開始引用的數(shù)組按 ...

你只描述了異常,沒有說要實現(xiàn)什么功能,所以不知道如何回復(fù)了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表