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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3300|回復: 7
收起左側

MAIN.C(16): error C129: missing \';\' before \'temp\'有錯誤怎么改 大佬幫幫忙

[復制鏈接]
ID:553887 發表于 2019-6-15 22:01 | 顯示全部樓層 |閱讀模式
30黑幣
捕獲.PNG
  1. #include<reg52.h>
  2. #include<string.h>
  3. #include <stdio.h>
  4. #include"intrins.h"
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};
  8. uchar code table1[]="ALC warn=90mg/L";                 //初始顯示
  9. uchar code table2[]="current=";                                //報警濃度和實測濃度表示
  10. uchar code table3[]="mg/L";
  11. sbit led=P2^6;
  12. sbit beep=P1^3;
  13. sbit lcdrs=P2^5;               //1602液晶的RS腳接在P2.3口上
  14. sbit lcdrw=P2^4;               //1602液晶的RW腳接在P2.4口上
  15. sbit lcden=P2^3;               //1602液晶的E腳接在P2.5口上
  16. sbit SDA=P3^6;                                                         
  17. sbit SCL=P3^7;
  18. int count,t,num;
  19. uchar cur1,cur2,cur3;                                
  20. uint cur_bj=90;                         //CO報警值
  21. unsigned char ADbuf;//設置8位的寄存器用來暫存A/D轉換結果
  22. void delay(unsigned int z)
  23. {
  24.         uint i,j;
  25.         for(i=z;i>0;i--)
  26.           for(j=110;j>0;j--);
  27. }


  28. /*******************************延時函數*********************************/
  29. void delayms(unsigned int ms)
  30. {
  31.         unsigned char i=100,j;
  32.         for(;ms;ms--)
  33.         {
  34.                 while(--i)
  35.                 {
  36.                         j=10;
  37.                         while(--j);
  38.                 }
  39.         }
  40. }










  41. /*******************************報警函數*********************************/
  42. void led_warn()                                                
  43. {
  44.         led=~led;
  45.         delay(200);
  46. }
  47. void beep_warn()


  48. {
  49.         beep=~beep;
  50.         delay(200);
  51. }



  52.    /******************************寫命令函數********************************/
  53. void write_com(uchar com)
  54. {
  55.          lcdrs=0;
  56.          P0=com;                                //讀命令
  57.          delay(1);
  58.          lcden=1;                                //啟動脈沖
  59.          delay(1);
  60.          lcden=0;
  61. }
  62. /******************************寫數據函數********************************/
  63. void write_data(uchar date)
  64. {
  65.          lcdrs=1;
  66.          P0=date;                                //寫命令
  67.          delay(1);
  68.          lcden=1;                                //啟動脈沖
  69.          delay(1);
  70.          lcden=0;
  71. }
  72. /******************************LCD初始化*********************************/
  73. void init_1602()
  74. {
  75.          lcden=0;
  76.          write_com(0x38);                        //設置16*2顯示;5*7點陣;8位數據接口
  77.          write_com(0x0c);                        //設置開顯示,不顯示光標
  78.          write_com(0x06);                        //寫一個字符后地址指針自動加1
  79.          write_com(0x01);                        //設置清0,數據指針清零
  80. }










  81. void IICstart(void)
  82. {
  83.      SDA=1;                //先將SDA=1,以準備在SCL=1時,將SDA=0
  84.      SCL=1;                //時鐘總線拉高
  85.      _nop_();                          //略做延時
  86.      _nop_();                          //略做延時
  87.      SDA=0;                //SCL=1時,將SDA拉低即產生啟動信號
  88.      _nop_();                          //略做延時
  89.      _nop_();                          //略做延時
  90.      SCL=0;                //將SCL=0,完成啟動信號操作      
  91. }




  92. /*****************************IIC停止信號函數***********************************/
  93. void IICstop(void)
  94. {
  95.      SDA=0;                //先將SDA=0,以準備在SCL=1時,將SDA=1
  96.      SCL=1;                //時鐘總線拉高
  97.      _nop_();                          //略做延時
  98.      _nop_();                          //略做延時
  99.      SDA=1;                //SCL=1時,將SDA拉高即產生停止信號
  100.      _nop_();                          //略做延時
  101.      _nop_();                          //略做延時
  102.      SCL=0;                //將SCL=0,完成啟動信號操作      
  103. }


  104. /*****************************向IIC總線寫入1個字節函數**************************/
  105. void Write1Byte(unsigned char Buf1)
  106. {
  107.      unsigned char k;      //1個字節要分8次寫入,需要定義一個寄存器用來計數
  108.      for(k=0;k<8;k++)      //做一個8次的循環,每次寫入1位,需要寫8次
  109.      {
  110.          if(Buf1&0x80)     //從最高位開始寫
  111.          {
  112.              SDA=1;        //如果欲寫入數據為1,就將數據線置1
  113.          }
  114.          else
  115.          {
  116.              SDA=0;        //如果欲寫入數據為0,就將數據線寫0
  117.          }
  118.          _nop_();          //略做延時
  119.          _nop_();          //略做延時
  120.          SCL=1;            //時鐘線做一個上升沿,將一位數據寫入
  121.          Buf1=Buf1<<1;     //數據左移一位,將下次要寫入的位數據移到最高位
  122.          _nop_();          //略做延時
  123.          SCL=0;            //將SCL=0,以準備通過上升沿將數據寫入
  124.          _nop_();          //略做延時
  125.      }
  126.      SDA=1;                //將SDA=1,準備讀應答信號
  127.      _nop_();              //略做延時
  128.      SCL=1;                //將SCL=1,做個上升沿準備讀應答信號
  129.      _nop_();              //略做延時
  130.      _nop_();              //略做延時
  131.      SCL=0;                //將SCL=0,結束應答信號讀操作
  132. }


  133. /****************************從IIC總線讀入1個字節函數******************************/
  134. unsigned char Read1Byte(void)
  135. {
  136.      unsigned char k;      //1個字節要分8次讀出,需要定義一個寄存器用來計數
  137.      unsigned char t=0;    //定義一個寄存器用保存讀出數據
  138.      for(k=0;k<8;k++)      //做一個8次的循環,每次讀入1位,需要讀8次
  139.      {
  140.          t=t<<1;           //數據左移一位,空出最低位以準備保存讀入的一位數據
  141.          SDA=1;            //將SDA寫1準備讀
  142.          SCL=1;            //將SCL=1,做個上升沿準備讀一位數據
  143.          _nop_();          //略做延時
  144.          _nop_();          //略做延時
  145.          if(SDA==1)        //讀一位數據,并判斷
  146.          {
  147.              t=t|0x01;     //如果讀入數據為1,就將接收緩沖區最低一位置1
  148.          }
  149.          else
  150.          {
  151.              t=t&0xfe;     //如果讀入數據為0,就將接收緩沖區最低一位寫0
  152.          }
  153.          SCL=0;            //SCL恢復為0,結束一位數據讀操作
  154.          _nop_();          //略做延時
  155.          _nop_();          //略做延時
  156.      }
  157.      return t;             //將讀入的一個字節返回
  158. }


  159. /******************************軟件模擬IIC向PCF8591指定地址寫一個字節函數********************************/
  160. void WritePCF8591(unsigned char Databuf)
  161. {                          //直接調用本函數即可啟動PCF8591的D/A轉換
  162.     IICstart();            //IIC啟動信號


  163.     Write1Byte(0x90);      //發送PCF8591的器件地址和寫信號


  164.     Write1Byte(0x40);      //發送器件子地址


  165.     Write1Byte(Databuf);   //發送數據


  166.     IICstop();             //產生IIC停止信號
  167. }




  168. /******************************軟件模擬IIC從PCF8563指定地址讀一個字節函數************************************/
  169. unsigned char ReadPCF8591(unsigned char Ch)
  170. {                          //直接調用本函數即可從PCF8591的Ch通道讀出數據返回
  171.     unsigned char buf;     //定義一個寄存器用來暫存讀出的數據
  172.     IICstart();            //IIC啟動信號


  173.     Write1Byte(0x90);      //發送PCF8591的器件地址和寫信號


  174.     Write1Byte(0x40|Ch);   //發送器件通道參數Ch=0-3


  175.     IICstart();            //IIC啟動信號


  176.     Write1Byte(0x91);      //發送PCF8591的器件地址和讀信號


  177.     buf=Read1Byte();//讀一個字節數據


  178.     IICstop();             //產生IIC停止信號


  179.     return(buf);           //將讀出數據返回
  180. }




  181. /******************************顯示初始值函數**********************************/
  182. void dis_init()
  183. {
  184.         uchar a,b,c;
  185.         write_com(0x80+0x00);        //初始化顯示
  186.          for(a=0;a<15;a++)
  187.          {
  188.                   write_data(table1[a]);
  189.                   delay(1);
  190.          }
  191.         delay(200);
  192.         write_com(0x80+0x40);        //第二行顯示酒精濃度表示單位        
  193.          for(b=0;b<8;b++)
  194.          {
  195.                   write_data(table2[ b]);[/b][ b]
  196.                   delay(1);
  197.          }
  198.                  write_com(0x80+0x4B);        //第二行顯示酒精濃度表示單位        
  199.          for(c=0;c<4;c++)
  200.          {
  201.                   write_data(table3[c]);
  202.                   delay(1);
  203.          }


  204. }






  205. /*********************************1602顯示濃度數據h和酒精報警程序**************************/
  206. void dis_cur(uint t)
  207. {
  208.   uchar i;
  209.      t=t*100/255;
  210.    i=t/100;
  211.    write_com(0x80+0x48);           //顯示濃度百位
  212.    write_data(table[ i]);[/i][ i]
  213.    cur1=table[ i];[/i][ i]
  214.   i=t%100/10;


  215.     write_com(0x80+0x49);
  216.         write_data(table[ i]);[/i][ i]
  217.          cur2=table[ i];[/i][ i]
  218.   i=t%100%10;
  219.           write_com(0x80+0x4A);           //顯示濃度個位
  220.          write_data(table[ i]);[/i][ i]


  221.          cur3=table[ i];[/i][ i]




  222.          if(t>cur_bj)
  223.           {         
  224.                 led_warn();
  225.             beep_warn();
  226.           }


  227.     else
  228.           {
  229.                 led=1;
  230.                 beep=1;
  231.           }


  232. }


  233. /*******************************串口初始化********************************/
  234. void  UARTinit()
  235. {
  236. //   TMOD=0X21;
  237. //   SCON=0X40;
  238.   TMOD=0x20;
  239.   PCON=0x00;
  240.   SCON=0x50;
  241.    TH1=0XFF;
  242.    TL1=0XFD;
  243.    TH0=(65536-45872)/256;
  244.    TL0=(65536-45872)%256;
  245.    TR1=1;
  246.    TR0=1;
  247.    EA=1;
  248.    ES=1;
  249.    TI=0;
  250.    ET0=1;
  251. }
  252. /*******************************發送一個字節************************************/
  253. void UART_Send_Byte(unsigned char mydata)        
  254. {
  255.          ES=0;
  256.          TI=0;
  257.          SBUF=mydata;
  258.          while(!TI);
  259.          TI=0;
  260.          ES=1;
  261. }
  262. /****************************發送文本串****************************************/
  263. void UART_Send_Str(char *s)         
  264. {
  265.          int i=0;
  266.          while(s[ i]!=0)[/i][ i]
  267.          {
  268.                  UART_Send_Byte(s[ i]);[/i][ i]
  269.                  i++;
  270.          }


  271. }


  272. void T0_time() interrupt 1
  273. {
  274.    count++;
  275.    TH0=(65536-45872)/256;
  276.    TL0=(65536-45872)%256;
  277.            if(count==400)
  278.                 {
  279.                  count=0;
  280.                  num=1;
  281.                 }


  282. }




  283. main()
  284. {
  285. uchar g,s,b;


  286. //        uchar i = 0;
  287. //          uchar code Buffer[]="0" ;  //所要發送的數據
  288. //          uchar *p;


  289.         led=1;
  290.         beep=1;
  291.         lcdrw=0;                           //確定讀操作
  292.         init_1602();                   //初始化LCD1602
  293.         delay(5);
  294.         dis_init();                                //1602顯示初始化  
  295.         delay(2000);
  296.         UARTinit();                           //串口初始化


  297.         
  298.          
  299. //          Com_Init();
  300. //          p = Buffer;
  301.         while(1)        
  302.         {
  303.                    ADbuf=ReadPCF8591(0);     //將AIN0通道A/D轉換結果暫存在ADbuf
  304.                     dis_cur(ADbuf);        //濃度顯示
  305.                   b=ADbuf/100;
  306.                 s=ADbuf%100/10;
  307.                 g=ADbuf%100%10;
  308.                 if(num==1)
  309.                 {
  310.                         UART_Send_Byte(g);
  311.                         UART_Send_Byte(s);
  312.                         UART_Send_Byte(b);
  313.                 //        UART_Send_Str("hello");
  314. //                UART_Send_Str("ADbuf/100");
  315. //                UART_Send_Str("ADbuf%100/10");
  316. //                UART_Send_Str("ADbuf%100%10");


  317.                 }
  318.    /*
  319.                  SBUF = *p ;
  320.             while(!TI){  ;//如果發送完畢,硬件會置位TI
  321.               _nop_();   //此句似乎可以去掉
  322.             }
  323.             TI = 0;  //TI清零
  324.             p++;
  325.             if(*p == '\0')
  326.               break;  */
  327.         }  
  328. }
復制代碼

獨立按鍵.png
回復

使用道具 舉報

ID:552614 發表于 2019-6-16 07:51 | 顯示全部樓層
沒這么寫過unsigned char,可能中間加個空格就可以了吧。
回復

使用道具 舉報

ID:105364 發表于 2019-6-16 10:15 | 顯示全部樓層
015行應為unsigned char dispbuf[3];//char 后面要有空格
主要還是016行的 uint問題。截圖不全,不知有沒定義 #define uint unsigned int
回復

使用道具 舉報

ID:483407 發表于 2019-6-16 10:37 | 顯示全部樓層
007,008,009,015,這只是能看到的幾行,
unsigned char dat=0x00;
char 與 dat  之間缺個空格吧
回復

使用道具 舉報

ID:376767 發表于 2019-6-16 10:53 | 顯示全部樓層
unsigned char后面加空格,還有uint、uchar看看有沒有對應的typedef,類型聲明和變量名之間要加空格
回復

使用道具 舉報

ID:564486 發表于 2019-6-17 14:52 | 顯示全部樓層
第15行 char后面要加空格
回復

使用道具 舉報

ID:553887 發表于 2019-6-19 20:40 | 顯示全部樓層
47okey 發表于 2019-6-16 10:15
015行應為unsigned char dispbuf[3];//char 后面要有空格
主要還是016行的 uint問題。截圖不全,不知有沒 ...

有定義
回復

使用道具 舉報

ID:542954 發表于 2019-8-11 20:32 | 顯示全部樓層
我似乎看到了一個重復定義的問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在欧美一区二区 | 日本精品视频 | 亚洲激情自拍偷拍 | 久久伊人免费视频 | 日韩欧美在线观看 | 欧美日韩综合一区 | 亚洲综合一区二区三区 | 亚洲日日 | 视频一区 国产精品 | 久久亚洲一区二区 | 国产剧情一区 | 日韩av免费在线观看 | 久久免费高清 | 欧美视频精品 | 欧美乱操 | 欧美一区二区三区四区视频 | 久久久久久国产精品免费免费 | 亚洲免费一区 | 99精品一区二区三区 | 日本a网站| 91精品国产高清一区二区三区 | 婷婷精品| 国产性网 | 日韩视频一区二区三区 | 男女污污动态图 | 欧美性精品 | 蜜桃传媒av | 免费一区二区三区在线视频 | 色婷婷av久久久久久久 | 久久精品视频在线播放 | 日韩精品三区 | 一区二区高清不卡 | 成人免费视频网站在线观看 | 久草在线中文888 | 精品一区二区三区四区视频 | 国产欧美一区二区精品久导航 | 欧美成年人| 国产精品国产成人国产三级 | 日韩高清在线 | 亚洲一区视频在线 | 影音av |