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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2493|回復: 11
收起左側

關于單片機C語言數組的問題,為什么這個程序在電路中led4會隨著led1和led2亮一下呢?

[復制鏈接]
ID:517235 發表于 2019-7-2 16:33 | 顯示全部樓層 |閱讀模式
關于數組的問題,這個程序是讓led1亮滅三次,led2亮滅三次,led1和led2同時亮四次;
在這個程序沒有對led4進行控制,但是在實際電路中led4會隨著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. 函數功能:延時若Z*10毫秒
  15. 入口參數: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. 函數功能:p1口燈循環點亮

  26. ***************************************************/
  27. main()
  28. {     
  29.      // uint i;
  30.      P3M1=0x30;        // IO口設值(工作模式)
  31.      P3M0=0x0f;        //          IO口設值(工作模式)         
  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. }
復制代碼

回復

使用道具 舉報

ID:571958 發表于 2019-7-2 16:55 | 顯示全部樓層
你初始化的數組 4, 你用到了 10 ,你已經越界了!
回復

使用道具 舉報

ID:332444 發表于 2019-7-2 19:54 | 顯示全部樓層
這程序后2個循環都超數組了
回復

使用道具 舉報

ID:207882 發表于 2019-7-2 23:30 | 顯示全部樓層
P3=Tab0[i]    i為什么是跟for里面的i同一個,,不是直接uchar code Tab0[]={0x01,0x02,0x03};
回復

使用道具 舉報

ID:207882 發表于 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會亮
回復

使用道具 舉報

ID:517235 發表于 2019-7-3 09:40 | 顯示全部樓層
單片機引腳圖
timg.jpg
回復

使用道具 舉報

ID:517235 發表于 2019-7-3 12:01 | 顯示全部樓層
lihaijun7781 發表于 2019-7-2 16:55
你初始化的數組 4, 你用到了 10 ,你已經越界了!

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

使用道具 舉報

ID:517235 發表于 2019-7-3 12:01 | 顯示全部樓層
xianfajushi 發表于 2019-7-2 19:54
這程序后2個循環都超數組了

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

使用道具 舉報

ID:517235 發表于 2019-7-3 12:03 | 顯示全部樓層
2448289424 發表于 2019-7-2 23:30
P3=Tab0    i為什么是跟for里面的i同一個,,不是直接uchar code Tab0[]={0x01,0x02,0x03};

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

使用道具 舉報

ID:517235 發表于 2019-7-3 12:04 | 顯示全部樓層
2448289424 發表于 2019-7-2 23:32
uchar code Tab0[]={0x01,0x02,0x03}; P3=Tab0[0] led1;亮  P3=Tab0[1] led2;亮 P3=Tab0[2] led12;亮, ...

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

使用道具 舉報

ID:577104 發表于 2019-7-3 13:55 | 顯示全部樓層
越界訪問了
回復

使用道具 舉報

ID:332444 發表于 2019-7-3 16:21 | 顯示全部樓層
ealoo 發表于 2019-7-3 12:01
感謝回復,我也是發完貼后發現程序引用數組的個數超出了范圍。
那么,超出后,從第5個i開始引用的數組按 ...

你只描述了異常,沒有說要實現什么功能,所以不知道如何回復了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久影院色老大 | 欧美999 | 欧美日韩电影一区二区 | 国产精品日韩一区 | 国内精品久久久久 | 中文字幕av在线一二三区 | 成人福利影院 | 男人的天堂亚洲 | 日韩成人高清在线 | 中文字幕精品一区二区三区精品 | 久久国内精品 | 精品不卡| 999久久精品 | 亚洲精品一区二区冲田杏梨 | 欧美一区二区三区 | 午夜www| 最新国产精品精品视频 | www,黄色,com | 成人天堂 | 成人av网站在线观看 | 亚洲综合视频 | 国产精品海角社区在线观看 | 精品国产乱码久久久久久丨区2区 | 精品视频一区在线 | 亚洲成人午夜电影 | 午夜激情视频 | 国产传媒毛片精品视频第一次 | 欧美日韩久 | 中文字幕不卡一区 | 欧美99 | 午夜精品久久久久久久久久久久 | 午夜天堂精品久久久久 | 色资源在线观看 | 成人性视频在线播放 | 欧美综合一区二区三区 | 国产成人jvid在线播放 | 国外成人在线视频 | 久久精品国产一区 | 精品免费国产一区二区三区四区 | 911影院 | 黄免费看 |