欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: C語言程序 傳的是數組一個數,為什么數顯不對? [打印本頁]

作者: 殿堂之上    時間: 2023-10-20 18:24
標題: C語言程序 傳的是數組一個數,為什么數顯不對?
#include <reg52.h>
#include <intrins.h>
#define SXLed_P P0//數碼管數據傳輸
unsigned  char code Number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7F,0x6F,0x40,0x80,0x00};//共陰極數碼管0-9.-滅
void Init(void);//變量初始化        函數
void T0_Init(void);//定時器T0初始化函數
void SXLed (unsigned char location,unsigned char Num);//數碼管顯示函數
unsigned int i;
unsigned char SX[7];//數碼管內容暫存器
sbit SXLed_W=P2^7;//數碼管位選控制位
sbit SXLed_D=P2^6;//數碼管段選控制位
void main(void)
{
        Init();                                                                //變量初始化                                
        T0_Init();                                                                //定時器T0初始化
       P1=0x00;                                                           //開啟Led燈
        while(1);
}
void Init(void)
{
i=0;
SX[0]=11;
SX[1]=2;
SX[2]=3;
SX[3]=4;
SX[4]=5;
SX[5]=6;
SX[6]=7;
SX[7]=8;
}
void T0_Init(void)
{
TMOD|=0x01;                                                                  //定時器T0工作在16位定時模式
        EA=1;                                                                                        //開總中斷
        ET0=1;                                                                                //開定時器中斷
        TR0=1;                                                                                //啟動定時器
        TH0=0xee;                                                                        //定時5毫秒高四位初值重裝
        TL0=0x00;                                                                        //定時5毫秒高四位初值
}
void T0_Timer(void) interrupt 1
{
        TH0=0xee;                                                                        //定時5毫秒高四位初值重裝
        TL0=0x00;                                                                              //定時5毫秒高四位初值重裝
        SXLed(1,SX[7]);
        i++;
        if(!(i%100))
        {        
                P1=~P1;
        }
}
void SXLed (unsigned char location,unsigned char Num)//location顯示位置,num顯示數字
{
                SXLed_P=0xff;                                                                               //消影
                SXLed_W=1;                                                                                //打開位選鎖存器
                SXLed_P=~(0x80>>location);                                                         //送位碼
                SXLed_W=0;                                                                                //鎖存位選數據
                SXLed_P=0xff;
                SXLed_D=1;                                                                                //打開段選鎖存器
                SXLed_P=Number[Num];                                                               //送段碼
                SXLed_D=0;                                                                                //鎖存段選數據
}
SXLed(1,SX[7]);這里改成SXLed(1,8)就可以SXLed(1,SX[7]);這樣就會顯示亂碼,不是傳的是數組的一個嗎?




作者: chxelc    時間: 2023-10-20 18:58
數組類型未定義,在變量申明區加上unsigned char SX[];試試。
作者: Hephaestus    時間: 2023-10-20 19:52
unsigned char SX[7];
SX[7]=8;

這兩句話自相矛盾,回去重學c語言。
作者: tyrl800    時間: 2023-10-20 20:05
unsigned char SX[7];//數碼管內容暫存器;改成unsigned char SX[8];
作者: wulin    時間: 2023-10-20 21:11


  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define SXLed_P P0//數碼管數據傳輸
  4. unsigned  char code Number[]={//共陰極數碼管0-9.-滅
  5.         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  6.         0x07,0x7F,0x6F,0x40,0x80,0x00};
  7. void Init(void);//變量初始化函數
  8. void T0_Init(void);//定時器T0初始化函數
  9. void SXLed ();//數碼管顯示函數
  10. unsigned int i;
  11. unsigned char SX[8];//數碼管內容暫存器
  12. sbit SXLed_W=P2^7;//數碼管位選控制位
  13. sbit SXLed_D=P2^6;//數碼管段選控制位
  14. void main(void)
  15. {
  16.         Init();        //變量初始化
  17.         T0_Init();     //定時器T0初始化
  18.         P1=0x00;       //開啟Led燈
  19.         while(1);
  20. }
  21. void Init(void)
  22. {
  23.         i=0;
  24.         SX[0]=Number[1];
  25.         SX[1]=Number[2];
  26.         SX[2]=Number[3];
  27.         SX[3]=Number[4];
  28.         SX[4]=Number[5];
  29.         SX[5]=Number[6];
  30.         SX[6]=Number[7];
  31.         SX[7]=Number[8];
  32. }
  33. void T0_Init(void)        //2毫秒@11.0592MHz
  34. {
  35.         TMOD= 0x01;                        //設置定時器模式
  36.         TH0 = 0xF8;                                //設置定時初始值
  37.         TL0 = 0xCD;                                //設置定時初始值
  38.         TF0 = 0;                                //清除TF0標志
  39.         TR0 = 1;                                //定時器0開始計時
  40.         EA=1;            //開總中斷
  41.         ET0=1;           //開定時器中斷
  42. }

  43. void T0_Timer(void) interrupt 1
  44. {
  45.         TH0 = 0xF8;        //定時2毫秒高四位初值重裝
  46.         TL0 = 0xCD;        //定時2毫秒高四位初值重裝
  47.         SXLed();
  48.         i++;
  49.         if(!(i%100))
  50.         {        
  51.                 P1=~P1;
  52.         }
  53. }
  54. void SXLed()
  55. {
  56.         static unsigned char i=0;
  57.         SXLed_P=0x00;        //消影
  58.         SXLed_D=1;           //打開段選鎖存器
  59.         SXLed_D=0;           //鎖存段選數據
  60.         SXLed_P=~(0x01<<i);  //送位碼
  61.         SXLed_W=1;           //打開位選鎖存器
  62.         SXLed_W=0;           //鎖存位選數據
  63.         SXLed_P=SX[i];       //送段碼
  64.         SXLed_D=1;           //打開段選鎖存器
  65.         SXLed_D=0;           //鎖存段選數據
  66.         i=++i%8;             //循環計數
  67. }
復制代碼




作者: 殿堂之上    時間: 2023-10-20 22:02
chxelc 發表于 2023-10-20 18:58
數組類型未定義,在變量申明區加上unsigned char SX[];試試。

定義了,在前面有
作者: 殿堂之上    時間: 2023-10-20 22:09
Hephaestus 發表于 2023-10-20 19:52
unsigned char SX[7];
SX[7]=8;

數組是從0開始算,=8中的8是第七個元素中存放的值,哪里有問題?
作者: dsf232    時間: 2023-10-20 23:18
unsigned char SX[7],數組的元素序號從0開始,因此SX[7]=8;這句話會導致數組越界,超過訪問范圍,導致未定義錯誤發生
作者: Hephaestus    時間: 2023-10-21 00:04
殿堂之上 發表于 2023-10-20 22:09
數組是從0開始算,=8中的8是第七個元素中存放的值,哪里有問題?

不用脫鞋數腳趾,數你的手指就行,0、1、2……

那么你的第七根手指是幾???數數也能數不明白?
作者: adject    時間: 2023-10-21 01:35
unsigned char SX[7] ,SX[8]  數組越界
作者: zhuls    時間: 2023-10-21 07:23
你的SX定義了7個成員,SX[7]溢出了。SX[0]到SX[6]才是真正的成員。
作者: 123456ZXC1    時間: 2023-10-22 16:47
有沒有可能SX[7]啥都沒有
作者: 圣博朗西斯    時間: 2023-10-27 11:28
數組超出定義范圍了




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1