找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1100|回复: 6
打印 上一主题 下一主题
收起左侧

有没有大佬看一下这个程序怎么改,编译时候的错误如图

[复制链接]
跳转到指定楼层
楼主

  1. ********************************AT89C52源程序************************
  2. #include<reg52.h>                                       //包含头文件reg52.h
  3. #define uchar unsigned char                     //无符号字符形变量定义为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. ******************************** 延时一秒************************
  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++)                                   //定时器定时5秒
  38.         {
  39.                 TH2=0x3c;                                     //设置定时器初值
  40.                 TL2=0xb0;
  41.                 TR2=1;
  42.                 while(!TF2);                                   //查询计数是否溢出
  43.                 TF2=0                     //定时时间到,将定时器溢出标志位TF2清零
  44.                 while(!qidong);                                      //暂停语句
  45.         }            
  46. }
  47. ******************************** 延时毫秒************************
  48. void delayms(uint i)                                         
  49. {
  50.         uchar x;                     
  51.         while(i--)
  52.         for(x=0;x<110;x++);               
  53. }
  54. *******************************标准运行方式************************
  55. void biaozhunfangshi()                              //标准方式运行
  56. {
  57.         jinshui=0;                                      //进水打开  
  58.         delay(4);                                       //延时
  59.         jinshui=1;                                                //进水关闭
  60.         xidi=0;                                             //洗涤打开
  61. TR1=1;             XDshanshuo=1;                             //启动定时器1洗涤闪烁
  62. delay(20);                                             //延时
  63.         xidi=1;                                            //洗涤打开        
  64.         TR1=0; 1             XDshanshuo=0;                     //关掉定时器,洗涤闪烁
  65.         zz=0;                                             //正转打开
  66.         fz=0;                                             //反转打开           
  67.         paishui=0;         BJshanshuo=1;                         //排水打开
  68.         delay(2);                                         //延时
  69.         paishui=1;                                              //关掉排水
  70.         jinshui=0;                                        //打开进水
  71.         delay(4);                                         //延时
  72.         jinshui=1; BJshanshuo=0;                           //关掉进水        
  73.         piaoxi=0;                                         //打开漂洗
  74.         TR1=1;             PXshanshuo=1;                        //打开定时器1漂洗闪烁
  75.         delay(20);                                        //延时
  76.         piaoxi=1;                                        //关掉漂洗
  77.         TR1=0;     PXshanshuo=0;                        //关掉定时器1.漂洗闪烁
  78.         zz=0;                                            //打开正转
  79.         fz=0;                                            //打开反转  
  80.         paishui=0;   BJshanshuo=1;                        //打开排水
  81.         delay(2);                                         //延时
  82.         paishui=1;                                        //关掉排水
  83.         jinshui=0;                                        //打开进水
  84.         delay(4);                                         //延时
  85.         jinshui=1;  BJshanshuo=0;                          //关掉进水
  86.         piaoxi=0;                                         //打开漂洗
  87.         TR1=1;       PXshanshuo=1;                       //打开定时器1
  88.         delay(20);                                        //延时
  89.         piaoxi=1;                                        //关掉漂洗
  90.         TR1=0;         PXshanshuo=0;                           //关掉定时器1
  91.         zz=0;                                           //打开正转
  92.         fz=0;                                           //打开反转
  93.         paishui=0;         BJshanshuo=1;                        //打开排水
  94.         delay(2);                                        //延时
  95.     paishui=1;                                      //关掉排水
  96.     tuoshui=0; Tsshansuo=1;                           //打开脱水
  97.     delay(2);                                       //延时
  98. tuoshui=1; Tsshansuo=0;                              //关掉脱水
  99. biaozhun=1;                                        //关掉标准
  100. }
  101. ****************************经济运行方式************************
  102. void jingjifangshi()                                  //经济方式
  103. jinshui=0;                                          //打开进水
  104. delay  (4);                                         //延时
  105. jinshui=1;                                          //关掉进水
  106. xidi=0;                                            //打开洗涤
  107. TR1=1;                                            //打开定时器1
  108. XDshanshuo=1;                                     //打开洗涤闪烁
  109. delay(30);                                          //延时
  110.         xidi=1;                                         //关掉洗涤
  111.         TR1=0;     XDshanshuo=0;                      //关掉定时器1        
  112.         zz=0;                                         //打开正转
  113.         fz=0;                                          //关掉反转
  114.         paishui=0;                                      //打开排水
  115.         delay(2);                                        //延时
  116.         paishui=1;                                      //关掉排水
  117.         jinshui=0;                                       //打开进水
  118.         delay(4);                                        //延时
  119.         jinshui=1;                                       //关掉进水
  120.         piaoxi=0;                                        //打开漂洗
  121.         TR1=1;     PXshanshuo=1;                       //打开定时器1
  122.         delay(20);                                       //延时
  123.         piaoxi=1;                                        //关掉漂洗
  124.         TR1=0;        PXshanshuo=0;                            //关掉定时器1        
  125.         zz=0;                                           //正转
  126.         fz=0;//反转
  127.         paishui=0;                                       //打开排水
  128.         delay(2);                                        //延时
  129.         paishui=1;                                       //关掉排水
  130.         tuoshui=0;  TSshanshuo=1;                        //打开脱水
  131.         delay(2);                                        //延时
  132.         tuoshui=1;  TSshanshuo=0;                        //关掉脱水
  133.         jingji=1;                                        //关闭进水
  134. }
  135. ******************************单独运行方式************************
  136. void dandufangshi()                                         //单独方式
  137. {
  138. jinshui=0;                                          //打开进水
  139.         delay(4);                                        //延时
  140.         jinshui=1;                                      //关掉进水
  141.         xidi=0;                 XDshanshuo=1;                      //打开洗涤
  142.         TR1=1;                                        //打开定时器1
  143.         delay(30);                                      //延时
  144.         xidi=1;                                        //关掉洗涤
  145. TR1=0;                 XDshanshuo=0;                         //关掉定时器1
  146.         zz=0;                                           //正转
  147.         fz=0;                                           //反转
  148.         dandu=1;

  149. *******************************排水运行方式************************
  150. void paishuifangshi()                                  //排水方式
  151. {
  152.         paishui=0;                                       //打开排水
  153.         delay(2);                                        //延时
  154.         paishui=1;                                       //关掉排水
  155.         tuoshui=0;           TSshanshuo=1;                      //打开脱水
  156. delay(2);                                            //延时
  157.         tuoshui=1; TSshanshuo=1;                          //打开脱水         
  158. paishuiled=1;
  159. }
  160. *******************************强弱切换程序************************
  161. void QiangRuoQieHuan();                             //强弱切换子程序
  162.                 switch(qr)         
  163. case 1:{qiangxi=0;ruoxi=1;}break;                                 //强洗
  164. case 2:{qiangxi=1;ruoxi=0;}break;                                 //弱洗
  165. case 3:{qr=1;}break;                                   //强弱
  166.         }delayms(1);
  167. }
  168. *******************************主函数************************
  169. void main()
  170. EA=1                                              //打开中断总允许位
  171. EX0=1;                                            //打开外部中断0允许位
  172. IT0=1;                                           //设置外部中断为下降沿触发方式
  173. EX1=1;                                             //外部中断1中断
  174. IT1=1;                                          //设置边沿触发方式           
  175. TMOD=0x11;                                      //工作在方式三
  176. TH0=(65536-50000)/256;                            //设定初值
  177. TL0=(65536-50000)%256;                           //设定初值
  178. ET0=1;                                           //T0中断允许位
  179. TR0=1;                                           //启动定时器
  180. TH1=(65536-50000)/256;                            //设定初值
  181. TL0=(65536-50000)%256;                           //设定初值
  182.         ET0=1;                                       //T0中断允许位
  183. TR0=1;                                          //启动定时器
  184. TH1=(65536-50000)/256;                           //设定初值
  185. TL0=(65536-50000)%256;                          //设定初值
  186. ET1=1;                                          //T1中断允许位
  187. T2CON=0x01;                                   //定时器2工作方式1
  188. num=1;
  189. qr=1;                                           //关闭强弱
  190. qidong=0;                                       //打开启动
  191. while(1)
  192. {        
  193. QiangRuoQieHuan();                              //强弱切换子程序
  194. switch(num)                                            //程序LED指示
  195.                 {
  196.         case 1:{biaozhun=0;jingji=1;dandu=1;paishuiled=1;}break;            //标准
  197. case 2:{biaozhun=1;jingji=0;dandu=1;paishuiled=1;}break;               //经济
  198.          case 3:{biaozhun=1;jingji=1;dandu=0;paishuiled=1;}break;          //单独
  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;           //标准方式
  208.                                         case 2:{jingjifangshi();}break;              //经济方式
  209.                                         case 3:{dandufangshi();}break;              // 单独方式
  210.                                         case 4:{paishuifangshi();}break;             //排水方式
  211.                                 }delayms(1); return;
  212.                         }
  213.                 }
  214.         }
  215. }
  216. *******************************中断   *********************************

  217. void int0() interrupt 0                                                       //运行/暂停
  218. {
  219.         qidong++;                                          //启动
  220.         if(qidong==2)                                       //如果启动打开
  221.         {qidong=0;TR1=0;zz=0;fz=0;}                         //启动打开
  222. }
  223. void int0() interrupt 2                                    //盖开关        
  224. EA=0;                                              //关闭中断总允许位
  225. TR0=0;                                             //关闭定时器0
  226. TR0=1;                                              //启动定时器1
  227. zz=0;                                              //打开正转
  228. fz=0;                                              //打开反转
  229. TR2=0;                                                //关闭定时器2
  230. TF2=0;                          //定时时间到,将定时器溢出标志位TF2清零
  231. void time0() interrupt 1              //定时器中断0中断类型号1
  232. {
  233.         TH0=(65536-50000)/256;                              //设定初值
  234. TL0=(65536-50000)%256;                                //设定初值
  235.         tt++;
  236.         if(QR_key==0)                                      //强弱切换开关
  237.         {
  238.                 delayms(5);                                      //延时
  239.                 if(QR_key==0)                                   //如果强弱开关键按下
  240.                 {
  241.                 qr++;                                           //强弱
  242.                 }while(!QR_key);
  243.         }
  244.         if(CX_key==0)                                      //程序选择键
  245.         {
  246.                 delayms(5)                                     //延时
  247. if(CX_key==0)                                        //如果按下程序键
  248.                 {num++;
  249.                 if(num==5)num=1;
  250.                 }
  251.                 while(!CX_key);
  252.         }
  253. *******************************盖开关************************

  254.         if(GKG_key==0)                                                 //盖开关
  255.         {
  256.                 while(!GKG_key)
  257.                 {TR1=0;zz=0;fz=0;}                       //关闭定时器1 正转、反转打开
  258.                 TR1=1;                                       //打开定时器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                                //定时器中断1中断类型号3
  275. {
  276.         TH1=(65536-50000)/256;                           //定初值
  277.         TL1=(65536-50000)%256;                          //定初值
  278.         if(tt1==0)                                             //电机正传
  279.         {
  280.                 zz=0;
  281.                 fz=1;
  282.         }
  283.         if(tt1==120)                                      //6秒后电机停止
  284.         {
  285.                 zz=1;                                        //电机停止
  286.                 fz=1;
  287.         }
  288.         tt1++;                                            //电机继续
  289.         if(tt1==200)                                                   //4秒后电机反转
  290.         {
  291.                 zz=1;                                         //反转
  292.                 fz=0;        
  293. }
  294.         if(tt1==320)                                              //6秒后电机停止
  295.         {
  296.                 zz=1;/                                        //电机不转
  297.                 fz=1;
  298.         }
  299.         if(tt1==400)                                      //4秒后电机正传
  300.         {
  301.                 tt1=0;                                       //电机正转
  302.         }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:96682 发表于 2019-4-21 02:14 | 只看该作者
删除 NO.1 再编译
回复

使用道具 举报

板凳
ID:140183 发表于 2019-4-21 08:20 | 只看该作者
带*的地方在前面加//,有的地方没加大括号,标点符号一定在英文输入的时候加,否则容易出错.
回复

使用道具 举报

地板
ID:164602 发表于 2019-4-21 08:32 | 只看该作者
错误类型是发现非法字符,第一行。
这样问题就清楚了:注释不是你这样写的,
要么这样写://注释,这种写法一般只管一行
要么这样写:/*注释*/,这种写法也以管很多行,只要在/*和*/之间的,都是注释,不论有多少行
回复

使用道具 举报

5#
ID:505337 发表于 2019-4-23 13:30 来自手机 | 只看该作者
好了吗
回复

使用道具 举报

6#
ID:445886 发表于 2019-4-23 16:34 来自手机 | 只看该作者
你的花括号{}丢了好几个,
回复

使用道具 举报

7#
ID:280876 发表于 2019-4-24 20:09 | 只看该作者
建议好好看书再写代码:(1)注释错误;
                                (2)函数声明缺少分号;
                                (3)主函数居然没有“{}”花括号;
                                (4)排版太乱了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表