標題: 求助幫看下這單片機程序,無法編譯,謝了 [打印本頁]

作者: QQQQ987    時間: 2022-9-4 23:14
標題: 求助幫看下這單片機程序,無法編譯,謝了
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
        sbit D0=P2^0;   //三個位控制
  sbit D1=P2^1;
  sbit D2=P2^2;
uchar subf[3]={8,8,8};
uchar dispdata[10]={0,1,2,3,4,5,6,7,8,9,}

void delay(uint t)
{
        uint i;
        while(t--)
        {
                for(i=0;i<150;i++)
                {}
                }
        }
//定時顯示程序
void time0_int(void) interrupt1
{
        uchar i,;
        TH0=0;
        TL0=0;
        display();
}
//主函數
void main(void)
{
  EA=1;
  ET0=1;
TMOD=0X01;
TH0=0;
TL0=0;
TR0=1;
while(1)
{
        uchar i,j;
        for(i=0;i<=9;i++)
        {
                for(j=0;j<=2;j++)
                sub[ i]=dispdata[j]
        }

}
}
//顯示子函數
void display(void)
{
        P0=subf[0];
        D0=1;
        delay(20)
        D0=0;
        P0=subf[0];
        D1=1;
        delay(20);
        D1=0;
        P0=subf[0];
        D2=1;
        delay(20);
        D2=0;
}



//那位大佬幫看下,程序那里錯了,我編繹不過關,

作者: liqingb    時間: 2022-9-4 23:37
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.         sbit D0=P2^0;   //?????
  5.   sbit D1=P2^1;
  6.   sbit D2=P2^2;
  7. uchar subf[3]={8,8,8};
  8. uchar dispdata[10]={0,1,2,3,4,5,6,7,8,9,};

  9. void display(void);
  10. void delay(uint t)
  11. {
  12.         uint i;
  13.         while(t--)
  14.         {
  15.                 for(i=0;i<150;i++)
  16.                 {
  17.        
  18.                 }
  19.         }
  20. }
  21. //??????
  22. void time0_int(void) interrupt 1 using 2
  23. {
  24.         TH0=0;
  25.         TL0=0;
  26.         display();
  27. }
  28. //???
  29. void main(void)
  30. {
  31.   EA=1;
  32.   ET0=1;
  33. TMOD=0X01;
  34. TH0=0;
  35. TL0=0;
  36. TR0=1;
  37. while(1)
  38. {
  39.         uchar i,j;
  40.         for(i=0;i<=9;i++)
  41.         {
  42.                 for(j=0;j<=2;j++)
  43.                 subf[i]=dispdata[j];
  44.         }

  45. }
  46. }
  47. //?????
  48. void display(void)
  49. {
  50.         P0=subf[0];
  51.         D0=1;
  52.         delay(20);
  53.         D0=0;
  54.         P0=subf[0];
  55.         D1=1;
  56.         delay(20);
  57.         D1=0;
  58.         P0=subf[0];
  59.         D2=1;
  60.         delay(20);
  61.         D2=0;
  62. }
復制代碼



雖然不知道你從哪里cop的單你的C語言基礎不是很好
作者: xxxevery    時間: 2022-9-4 23:56
把編譯錯誤信息發(fā)上來看啊,反正你這程序一眼就看到好幾個地方沒加“;”。
作者: 名字不是重點    時間: 2022-9-5 00:15
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.   sbit D0=P2^0;   //三個位控制
  5.   sbit D1=P2^1;
  6.   sbit D2=P2^2;
  7. uchar subf[3]={8,8,8};
  8. uchar dispdata[10]={0,1,2,3,4,5,6,7,8,9} ;//====!

  9. void display(void);//====!

  10. void delay(uint t)
  11. {
  12.         uint i;
  13.         while(t--)
  14.         {
  15.                 for(i=0;i<150;i++);//====!
  16.                 //{} //====!
  17.                 }
  18.         }
  19. //定時顯示程序
  20. void time0_int(void) interrupt 1   //====!
  21. {
  22.         //uchar i;  //====!
  23.         TH0=0;
  24.         TL0=0;
  25.         display();
  26. }
  27. //主函數
  28. void main(void)
  29. {
  30.   EA=1;
  31.   ET0=1;
  32. TMOD=0X01;
  33. TH0=0;
  34. TL0=0;
  35. TR0=1;
  36. while(1)
  37. {
  38.         uchar i,j;
  39.         for(i=0;i<=9;i++)
  40.         {
  41.                 for(j=0;j<=2;j++)
  42.                 subf[i]=dispdata[j];//====!
  43.         }

  44. }
  45. }
  46. //顯示子函數
  47. void display(void)
  48. {
  49.         P0=subf[0];
  50.         D0=1;
  51.         delay(20); //====!
  52.         D0=0;
  53.         P0=subf[0];
  54.         D1=1;
  55.         delay(20);
  56.         D1=0;
  57.         P0=subf[0];
  58.         D2=1;
  59.         delay(20);
  60.         D2=0;
  61. }
復制代碼
你這代碼是自己敲的,還是COPY來的?一大堆錯誤,都是書寫問題!

看看上面這個,有//====!所在的行都是錯的,對比一下你的代碼。


作者: hhdsdy    時間: 2022-9-5 00:16
太粗心了,有好幾個地方漏寫了“;”,定時顯示的程序里i后面多了個“,”,主函數循環(huán)里的sub應為subf,其實編譯不通過都有錯誤提示的,可以查看錯誤的類型以及行號(有的在上一行)。
另外,subf賦值3個,dispdata賦值10個,但在主程序的循環(huán)里,范圍是南轅北轍根本對不上的。
作者: liucan2020    時間: 2022-9-5 14:49
還需要多練習一下
作者: QQQQ987    時間: 2022-9-5 23:33
hhdsdy 發(fā)表于 2022-9-5 00:16
太粗心了,有好幾個地方漏寫了“;”,定時顯示的程序里i后面多了個“,”,主函數循環(huán)里的sub應為subf,其 ...

我這是抄書上一的——不知乍不過




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