找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有沒有大佬看一下這個(gè)程序怎么改,編譯時(shí)候的錯(cuò)誤如圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

  1. ********************************AT89C52源程序************************
  2. #include<reg52.h>                                       //包含頭文件reg52.h
  3. #define uchar unsigned char                     //無符號(hào)字符形變量定義為uchar
  4. #define uint unsigned int
  5. sbit biaozhun=  P1^0;                                           //定義端口
  6. sbit jingji   =   P1^1;
  7. sbit dandu  =   P1^2;
  8. sbit paishuiled=  P1^3;
  9. sbit qiangxi =   P1^4;
  10. sbit ruoxi  =    P1^5;
  11. sbit xidi   =    P1^6;
  12. sbit piaoxi  =   P1^7;
  13. sbit tuoshui =    P2^0;
  14. sbit jinshui =    P2^2;
  15. sbit paishui =    P2^3;
  16. sbit zz    =     P2^4;
  17. sbit fz    =     P2^5;
  18. sbit baojing =    P2^1;
  19. ********************************鍵盤接口************************
  20. sbit CX_key  =  P3^0;
  21. sbit QR_key  =  P3^1;
  22. sbit SW_key  =  P3^6;
  23. sbit GKG_key =  P3^7;
  24. ********************************全局變量定義************************
  25. uchar tt,num,qr,qidong;                                    
  26. uint tt1=0;
  27. bit XDshanshuo;
  28. bit PXshanshuo;
  29. bit TSshanshuo;
  30. bit BJshanshuo;
  31. ******************************** 延時(shí)一秒************************
  32. void delay(uint i)                                       
  33. {
  34.         uchar x;//,a,b,c
  35.         while(i--)
  36. T2CON=0X01
  37.         for(x=0;x<20;x++)                                   //定時(shí)器定時(shí)5秒
  38.         {
  39.                 TH2=0x3c;                                     //設(shè)置定時(shí)器初值
  40.                 TL2=0xb0;
  41.                 TR2=1;
  42.                 while(!TF2);                                   //查詢計(jì)數(shù)是否溢出
  43.                 TF2=0                     //定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF2清零
  44.                 while(!qidong);                                      //暫停語句
  45.         }            
  46. }
  47. ******************************** 延時(shí)毫秒************************
  48. void delayms(uint i)                                         
  49. {
  50.         uchar x;                     
  51.         while(i--)
  52.         for(x=0;x<110;x++);               
  53. }
  54. *******************************標(biāo)準(zhǔn)運(yùn)行方式************************
  55. void biaozhunfangshi()                              //標(biāo)準(zhǔn)方式運(yùn)行
  56. {
  57.         jinshui=0;                                      //進(jìn)水打開  
  58.         delay(4);                                       //延時(shí)
  59.         jinshui=1;                                                //進(jìn)水關(guān)閉
  60.         xidi=0;                                             //洗滌打開
  61. TR1=1;             XDshanshuo=1;                             //啟動(dòng)定時(shí)器1洗滌閃爍
  62. delay(20);                                             //延時(shí)
  63.         xidi=1;                                            //洗滌打開        
  64.         TR1=0; 1             XDshanshuo=0;                     //關(guān)掉定時(shí)器,洗滌閃爍
  65.         zz=0;                                             //正轉(zhuǎn)打開
  66.         fz=0;                                             //反轉(zhuǎn)打開           
  67.         paishui=0;         BJshanshuo=1;                         //排水打開
  68.         delay(2);                                         //延時(shí)
  69.         paishui=1;                                              //關(guān)掉排水
  70.         jinshui=0;                                        //打開進(jìn)水
  71.         delay(4);                                         //延時(shí)
  72.         jinshui=1; BJshanshuo=0;                           //關(guān)掉進(jìn)水        
  73.         piaoxi=0;                                         //打開漂洗
  74.         TR1=1;             PXshanshuo=1;                        //打開定時(shí)器1漂洗閃爍
  75.         delay(20);                                        //延時(shí)
  76.         piaoxi=1;                                        //關(guān)掉漂洗
  77.         TR1=0;     PXshanshuo=0;                        //關(guān)掉定時(shí)器1.漂洗閃爍
  78.         zz=0;                                            //打開正轉(zhuǎn)
  79.         fz=0;                                            //打開反轉(zhuǎn)  
  80.         paishui=0;   BJshanshuo=1;                        //打開排水
  81.         delay(2);                                         //延時(shí)
  82.         paishui=1;                                        //關(guān)掉排水
  83.         jinshui=0;                                        //打開進(jìn)水
  84.         delay(4);                                         //延時(shí)
  85.         jinshui=1;  BJshanshuo=0;                          //關(guān)掉進(jìn)水
  86.         piaoxi=0;                                         //打開漂洗
  87.         TR1=1;       PXshanshuo=1;                       //打開定時(shí)器1
  88.         delay(20);                                        //延時(shí)
  89.         piaoxi=1;                                        //關(guān)掉漂洗
  90.         TR1=0;         PXshanshuo=0;                           //關(guān)掉定時(shí)器1
  91.         zz=0;                                           //打開正轉(zhuǎn)
  92.         fz=0;                                           //打開反轉(zhuǎn)
  93.         paishui=0;         BJshanshuo=1;                        //打開排水
  94.         delay(2);                                        //延時(shí)
  95.     paishui=1;                                      //關(guān)掉排水
  96.     tuoshui=0; Tsshansuo=1;                           //打開脫水
  97.     delay(2);                                       //延時(shí)
  98. tuoshui=1; Tsshansuo=0;                              //關(guān)掉脫水
  99. biaozhun=1;                                        //關(guān)掉標(biāo)準(zhǔn)
  100. }
  101. ****************************經(jīng)濟(jì)運(yùn)行方式************************
  102. void jingjifangshi()                                  //經(jīng)濟(jì)方式
  103. jinshui=0;                                          //打開進(jìn)水
  104. delay  (4);                                         //延時(shí)
  105. jinshui=1;                                          //關(guān)掉進(jìn)水
  106. xidi=0;                                            //打開洗滌
  107. TR1=1;                                            //打開定時(shí)器1
  108. XDshanshuo=1;                                     //打開洗滌閃爍
  109. delay(30);                                          //延時(shí)
  110.         xidi=1;                                         //關(guān)掉洗滌
  111.         TR1=0;     XDshanshuo=0;                      //關(guān)掉定時(shí)器1        
  112.         zz=0;                                         //打開正轉(zhuǎn)
  113.         fz=0;                                          //關(guān)掉反轉(zhuǎn)
  114.         paishui=0;                                      //打開排水
  115.         delay(2);                                        //延時(shí)
  116.         paishui=1;                                      //關(guān)掉排水
  117.         jinshui=0;                                       //打開進(jìn)水
  118.         delay(4);                                        //延時(shí)
  119.         jinshui=1;                                       //關(guān)掉進(jìn)水
  120.         piaoxi=0;                                        //打開漂洗
  121.         TR1=1;     PXshanshuo=1;                       //打開定時(shí)器1
  122.         delay(20);                                       //延時(shí)
  123.         piaoxi=1;                                        //關(guān)掉漂洗
  124.         TR1=0;        PXshanshuo=0;                            //關(guān)掉定時(shí)器1        
  125.         zz=0;                                           //正轉(zhuǎn)
  126.         fz=0;//反轉(zhuǎn)
  127.         paishui=0;                                       //打開排水
  128.         delay(2);                                        //延時(shí)
  129.         paishui=1;                                       //關(guān)掉排水
  130.         tuoshui=0;  TSshanshuo=1;                        //打開脫水
  131.         delay(2);                                        //延時(shí)
  132.         tuoshui=1;  TSshanshuo=0;                        //關(guān)掉脫水
  133.         jingji=1;                                        //關(guān)閉進(jìn)水
  134. }
  135. ******************************單獨(dú)運(yùn)行方式************************
  136. void dandufangshi()                                         //單獨(dú)方式
  137. {
  138. jinshui=0;                                          //打開進(jìn)水
  139.         delay(4);                                        //延時(shí)
  140.         jinshui=1;                                      //關(guān)掉進(jìn)水
  141.         xidi=0;                 XDshanshuo=1;                      //打開洗滌
  142.         TR1=1;                                        //打開定時(shí)器1
  143.         delay(30);                                      //延時(shí)
  144.         xidi=1;                                        //關(guān)掉洗滌
  145. TR1=0;                 XDshanshuo=0;                         //關(guān)掉定時(shí)器1
  146.         zz=0;                                           //正轉(zhuǎn)
  147.         fz=0;                                           //反轉(zhuǎn)
  148.         dandu=1;

  149. *******************************排水運(yùn)行方式************************
  150. void paishuifangshi()                                  //排水方式
  151. {
  152.         paishui=0;                                       //打開排水
  153.         delay(2);                                        //延時(shí)
  154.         paishui=1;                                       //關(guān)掉排水
  155.         tuoshui=0;           TSshanshuo=1;                      //打開脫水
  156. delay(2);                                            //延時(shí)
  157.         tuoshui=1; TSshanshuo=1;                          //打開脫水         
  158. paishuiled=1;
  159. }
  160. *******************************強(qiáng)弱切換程序************************
  161. void QiangRuoQieHuan();                             //強(qiáng)弱切換子程序
  162.                 switch(qr)         
  163. case 1:{qiangxi=0;ruoxi=1;}break;                                 //強(qiáng)洗
  164. case 2:{qiangxi=1;ruoxi=0;}break;                                 //弱洗
  165. case 3:{qr=1;}break;                                   //強(qiáng)弱
  166.         }delayms(1);
  167. }
  168. *******************************主函數(shù)************************
  169. void main()
  170. EA=1                                              //打開中斷總允許位
  171. EX0=1;                                            //打開外部中斷0允許位
  172. IT0=1;                                           //設(shè)置外部中斷為下降沿觸發(fā)方式
  173. EX1=1;                                             //外部中斷1中斷
  174. IT1=1;                                          //設(shè)置邊沿觸發(fā)方式           
  175. TMOD=0x11;                                      //工作在方式三
  176. TH0=(65536-50000)/256;                            //設(shè)定初值
  177. TL0=(65536-50000)%256;                           //設(shè)定初值
  178. ET0=1;                                           //T0中斷允許位
  179. TR0=1;                                           //啟動(dòng)定時(shí)器
  180. TH1=(65536-50000)/256;                            //設(shè)定初值
  181. TL0=(65536-50000)%256;                           //設(shè)定初值
  182.         ET0=1;                                       //T0中斷允許位
  183. TR0=1;                                          //啟動(dòng)定時(shí)器
  184. TH1=(65536-50000)/256;                           //設(shè)定初值
  185. TL0=(65536-50000)%256;                          //設(shè)定初值
  186. ET1=1;                                          //T1中斷允許位
  187. T2CON=0x01;                                   //定時(shí)器2工作方式1
  188. num=1;
  189. qr=1;                                           //關(guān)閉強(qiáng)弱
  190. qidong=0;                                       //打開啟動(dòng)
  191. while(1)
  192. {        
  193. QiangRuoQieHuan();                              //強(qiáng)弱切換子程序
  194. switch(num)                                            //程序LED指示
  195.                 {
  196.         case 1:{biaozhun=0;jingji=1;dandu=1;paishuiled=1;}break;            //標(biāo)準(zhǔn)
  197. case 2:{biaozhun=1;jingji=0;dandu=1;paishuiled=1;}break;               //經(jīng)濟(jì)
  198.          case 3:{biaozhun=1;jingji=1;dandu=0;paishuiled=1;}break;          //單獨(dú)
  199.          case 4:{biaozhun=1;jingji=1;dandu=1;paishuiled=0;}break;          //排水
  200.                 }delayms(1);
  201.                 if(qidong==1)
  202.                 {
  203.                         while(1)
  204.                         {
  205.                                 switch(num)                                            //程序方式切換
  206.                                 {
  207.                                         case 1:{biaozhunfangshi();}break;           //標(biāo)準(zhǔn)方式
  208.                                         case 2:{jingjifangshi();}break;              //經(jīng)濟(jì)方式
  209.                                         case 3:{dandufangshi();}break;              // 單獨(dú)方式
  210.                                         case 4:{paishuifangshi();}break;             //排水方式
  211.                                 }delayms(1); return;
  212.                         }
  213.                 }
  214.         }
  215. }
  216. *******************************中斷   *********************************

  217. void int0() interrupt 0                                                       //運(yùn)行/暫停
  218. {
  219.         qidong++;                                          //啟動(dòng)
  220.         if(qidong==2)                                       //如果啟動(dòng)打開
  221.         {qidong=0;TR1=0;zz=0;fz=0;}                         //啟動(dòng)打開
  222. }
  223. void int0() interrupt 2                                    //蓋開關(guān)        
  224. EA=0;                                              //關(guān)閉中斷總允許位
  225. TR0=0;                                             //關(guān)閉定時(shí)器0
  226. TR0=1;                                              //啟動(dòng)定時(shí)器1
  227. zz=0;                                              //打開正轉(zhuǎn)
  228. fz=0;                                              //打開反轉(zhuǎn)
  229. TR2=0;                                                //關(guān)閉定時(shí)器2
  230. TF2=0;                          //定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF2清零
  231. void time0() interrupt 1              //定時(shí)器中斷0中斷類型號(hào)1
  232. {
  233.         TH0=(65536-50000)/256;                              //設(shè)定初值
  234. TL0=(65536-50000)%256;                                //設(shè)定初值
  235.         tt++;
  236.         if(QR_key==0)                                      //強(qiáng)弱切換開關(guān)
  237.         {
  238.                 delayms(5);                                      //延時(shí)
  239.                 if(QR_key==0)                                   //如果強(qiáng)弱開關(guān)鍵按下
  240.                 {
  241.                 qr++;                                           //強(qiáng)弱
  242.                 }while(!QR_key);
  243.         }
  244.         if(CX_key==0)                                      //程序選擇鍵
  245.         {
  246.                 delayms(5)                                     //延時(shí)
  247. if(CX_key==0)                                        //如果按下程序鍵
  248.                 {num++;
  249.                 if(num==5)num=1;
  250.                 }
  251.                 while(!CX_key);
  252.         }
  253. *******************************蓋開關(guān)************************

  254.         if(GKG_key==0)                                                 //蓋開關(guān)
  255.         {
  256.                 while(!GKG_key)
  257.                 {TR1=0;zz=0;fz=0;}                       //關(guān)閉定時(shí)器1 正轉(zhuǎn)、反轉(zhuǎn)打開
  258.                 TR1=1;                                       //打開定時(shí)器1               
  259.         }  
  260. if(tt==14)                                                  //LED 0.7s 閃爍
  261.         {
  262.         tt=0;
  263.         {
  264.                 if(XDshanshuo==1)                             //如果是高電平
  265.                 {xidi=!xidi;}                                  //不洗滌
  266.                 if(PXshanshuo==1)                             //如果是高電平
  267.                 {piaoxi=!piaoxi;}                              //不漂洗
  268.                 if(TSshanshuo==1)                             //如果是高電平
  269.                 {tuoshui=!tuoshui;}                            //不脫水
  270.         }
  271.         }
  272.         
  273. }
  274. void time1() interrupt 3                                //定時(shí)器中斷1中斷類型號(hào)3
  275. {
  276.         TH1=(65536-50000)/256;                           //定初值
  277.         TL1=(65536-50000)%256;                          //定初值
  278.         if(tt1==0)                                             //電機(jī)正傳
  279.         {
  280.                 zz=0;
  281.                 fz=1;
  282.         }
  283.         if(tt1==120)                                      //6秒后電機(jī)停止
  284.         {
  285.                 zz=1;                                        //電機(jī)停止
  286.                 fz=1;
  287.         }
  288.         tt1++;                                            //電機(jī)繼續(xù)
  289.         if(tt1==200)                                                   //4秒后電機(jī)反轉(zhuǎn)
  290.         {
  291.                 zz=1;                                         //反轉(zhuǎn)
  292.                 fz=0;        
  293. }
  294.         if(tt1==320)                                              //6秒后電機(jī)停止
  295.         {
  296.                 zz=1;/                                        //電機(jī)不轉(zhuǎn)
  297.                 fz=1;
  298.         }
  299.         if(tt1==400)                                      //4秒后電機(jī)正傳
  300.         {
  301.                 tt1=0;                                       //電機(jī)正轉(zhuǎn)
  302.         }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:96682 發(fā)表于 2019-4-21 02:14 | 只看該作者
刪除 NO.1 再編譯
回復(fù)

使用道具 舉報(bào)

板凳
ID:140183 發(fā)表于 2019-4-21 08:20 | 只看該作者
帶*的地方在前面加//,有的地方?jīng)]加大括號(hào),標(biāo)點(diǎn)符號(hào)一定在英文輸入的時(shí)候加,否則容易出錯(cuò).
回復(fù)

使用道具 舉報(bào)

地板
ID:164602 發(fā)表于 2019-4-21 08:32 | 只看該作者
錯(cuò)誤類型是發(fā)現(xiàn)非法字符,第一行。
這樣問題就清楚了:注釋不是你這樣寫的,
要么這樣寫://注釋,這種寫法一般只管一行
要么這樣寫:/*注釋*/,這種寫法也以管很多行,只要在/*和*/之間的,都是注釋,不論有多少行
回復(fù)

使用道具 舉報(bào)

5#
ID:505337 發(fā)表于 2019-4-23 13:30 來自觸屏版 | 只看該作者
好了嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:445886 發(fā)表于 2019-4-23 16:34 來自觸屏版 | 只看該作者
你的花括號(hào){}丟了好幾個(gè),
回復(fù)

使用道具 舉報(bào)

7#
ID:280876 發(fā)表于 2019-4-24 20:09 | 只看該作者
建議好好看書再寫代碼:(1)注釋錯(cuò)誤;
                                (2)函數(shù)聲明缺少分號(hào);
                                (3)主函數(shù)居然沒有“{}”花括號(hào);
                                (4)排版太亂了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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