![]() |
/********************************AT89C52???3??D??************************/ #include<reg52.h> //??o????????treg52.h #define uchar unsigned char //?T???o???????D???????????????auchar #define uint unsigned int sbit biaozhun= P1^0;//??????????? sbit jingji = P1^1; sbit dandu = P1^2; sbit paishuiled= P1^3; sbit qiangxi = P1^4; sbit ruoxi = P1^5; sbit xidi = P1^6; sbit piaoxi = P1^7; sbit tuoshui = P2^0; sbit jinshui = P2^2; sbit paishui = P2^3; sbit zz = P2^4; sbit fz = P2^5; sbit baojing = P2^1; /********************************????????????************************/ sbit CX_key = P3^0; sbit QR_key = P3^1; sbit SW_key = P3^6; sbit GKG_key = P3^7; /********************************?????????????????************************/ uchar tt,num,qr,qidong; uint tt1=0; bit XDshanshuo; bit PXshanshuo; bit TSshanshuo; bit BJshanshuo; /********************************????????????************************/ void delay(uint i) { uchar x; //,a,b,c while(i--) T2CON=0X01; for(x=0;x<20;x++);//?????????????????5?? { TH2=0x3c; //????????????????3???? TL2=0xb0; TR2=1; while(!TF2); //2?????????y?????????3? TF2=0; //???????????????? ,???????????¨??3?????????TF2????? while(!qidong); //?Y??????? } } /********************************???????o????************************/ void delayms(uint i) { uchar x; while(i--) for(x=0;x<110;x++); } /*******************************?????????DD??????************************/ void biaozhunfangshi() //???????????????DD { jinshui=0; //???????a delay(4); //??????? jinshui=1; //????1???? xidi=0; //????????a TR1=1; XDshanshuo=1; //???????????????1??????????? delay(20); //??????? xidi=1; //????????a TR1=0; XDshanshuo=1; //1??????????????,??????????? zz=0; //?y??a???a fz=0; //?????a???a paishui=0; BJshanshuo=1; //???????a delay(2); //??????? paishui=1; //1???????? jinshui=0; //???a???? delay(4); //??????? jinshui=1; BJshanshuo=0; //1???????? piaoxi=0; //???a?????? TR1=1; PXshanshuo=1; //???a??????????1?????????? delay(20); //??????? piaoxi=1; //1?????????? TR1=0; PXshanshuo=0; //1??????????????1.?????????? zz=0; //???a?y??a fz=0; //???a?????a paishui=0; BJshanshuo=1; //???a???? delay(2); //??????? paishui=1; //1???????? jinshui=0; //???a???? delay(4); //??????? jinshui=1; BJshanshuo=0; //1???????? piaoxi=0; //???a?????? TR1=1; PXshanshuo=1; //???a??????????1 delay(20); //??????? piaoxi=1; //1?????????? TR1=0; PXshanshuo=0; //1??????????????1 zz=0; //???a?y??a fz=0; //???a?????a paishui=0; BJshanshuo=1; //???a???? delay(2); //??????? paishui=1; //1???????? tuoshui=0; TSshanshuo=1; //???a????? delay(2); //??????? tuoshui=1; TSshanshuo=0; //1????????? biaozhun=1; //1??????????? } /****************************?-????DD??????************************/ void jingjifangshi()//?-???????? { jinshui=0; //???a???? delay (4); //??????? jinshui=1; //1???????? xidi=0; //???a????? TR1=1; //???a??????????1 XDshanshuo=1; //???a??????????? delay(30); //??????? xidi=1; //1????????? TR1=0; XDshanshuo=0; //1??????????????1 zz=0; //???a?y??a fz=0; //1?????????a paishui=0; //???a???? delay(2); //??????? paishui=1; //1???????? jinshui=0; //???a???? delay(4); //??????? jinshui=1; //1???????? piaoxi=0; //???a?????? TR1=1; PXshanshuo=1; //???a??????????1 delay(20); //??????? piaoxi=1; //1?????????? TR1=0; PXshanshuo=0; //1??????????????1 zz=0; //?y??a fz=0;//?????a paishui=0; //???a???? delay(2); //??????? paishui=1; //1???????? tuoshui=0; TSshanshuo=1; //???a????? delay(2); //??????? tuoshui=1; TSshanshuo=0; //1????????? jingji=1; //1???????? } /***************************************************************/ void dandufangshi() //???????????? { jinshui=0; //???a???? delay(4); //??????? jinshui=1; //1???????? xidi=0; XDshanshuo=1; //???a????? TR1=1; //???a??????????1 delay(30); //??????? xidi=1; //1????????? TR1=0; XDshanshuo=0; //1??????????????1 zz=0; //?y??a fz=0; //?????a dandu=1; } /*******************************??????DD??????************************/ void paishuifangshi() //?????????? { paishui=0; //???a???? delay(2); //??????? paishui=1; //1???????? tuoshui=0; TSshanshuo=1; //???a????? delay(2); //??????? tuoshui=1; TSshanshuo=1; //???a????? paishuiled=1; } /*******************************??????D??3??D??************************/ void QiangRuoQieHuan() //??????D??????3??D?? { switch(qr) { case 1:{qiangxi=0;ruoxi=1;}break; //????? case 2:{qiangxi=1;ruoxi=0;}break; //?????? case 3:{qr=1;}break; //????? }delayms(1); } /*******************************???o????y************************/ void main() { EA=1; //???a?D?????????D???? EX0=1; //???a??a2??D??0???D???? IT0=1; //????????a2??D???a????????????顤???? EX1=1; //??a2??D??1?D?? IT1=1; //????????????????顤???? TMOD=0x11; //1????????????????y TH0=(65536-50000)/256; //???????3???? TL0=(65536-50000)%256; //???????3???? ET0=1; //T0?D?????D???? TR0=1; //??????????????? TH1=(65536-50000)/256; //???????3???? TL0=(65536-50000)%256; //???????3???? ET0=1; //T0?D?????D???? TR0=1; //??????????????? TH1=(65536-50000)/256; //???????3???? TL0=(65536-50000)%256; //???????3???? ET1=1; //T1?D?????D???? T2CON=0x01; //??????????21??????????1 num=1; qr=1; //1????????? qidong=0; //???a????? while(1) { QiangRuoQieHuan(); //??????D??????3??D?? switch(num) //3??D??LED????? { case 1:{biaozhun=0;jingji=1;dandu=1;paishuiled=1;}break; //??????? case 2:{biaozhun=1;jingji=0;dandu=1;paishuiled=1;}break; //?-?? case 3:{biaozhun=1;jingji=1;dandu=0;paishuiled=1;}break; //?????? case 4:{biaozhun=1;jingji=1;dandu=1;paishuiled=0;}break; //???? }delayms(1); if(qidong==1) { while(1) { switch(num) //3??D?????????D?? { case 1:{biaozhunfangshi();}break; //????????????? case 2:{jingjifangshi();}break; //?-???????? case 3:{dandufangshi();}break; // ???????????? case 4:{paishuifangshi();}break; //?????????? }delayms(1); return; } } } } /*******************************?D??*********************************/ void int0() interrupt 0 //??DD/?Y???? { qidong++; //????? if(qidong==2) //???1?????????a {qidong=0;TR1=0;zz=0;fz=0;} //????????a } void int1() interrupt 2 { //???a1? EA=0; //1?????D?????????D???? TR0=0; //1??????????????0 TR0=1; //???????????????1 zz=0; //???a?y??a fz=0; //???a?????a TR2=0; //1??????????????2 TF2=0; } //????????????????,???????????¨??3?????????TF2????? void time0() interrupt 1 //???????????D??0?D??????D??o?1 { TH0=(65536-50000)/256; //???????3???? TL0=(65536-50000)%256; //???????3???? tt++; if(QR_key==0) //??????D???a1? { delayms(5); //??????? if(QR_key==0) //???1???????a1????????? { qr+=1; //????? } while(!QR_key); } if(CX_key==0) //3??D????????? { delayms(5); //??????? if(CX_key==0) //???1??????3??D????? {num++; if(num==5)num=1; } while(!CX_key); } /*******************************???a1?************************/ if(GKG_key==0) //???a1? { { while(!GKG_key) {TR1=0;zz=0;fz=0;} //???a??????????1 ?y??a??顤???a???a TR1=1; //???a??????????1 } if(tt==14) //LED 0.7s ?????? { tt=0; { if(XDshanshuo==1) //???1??????????? {xidi=!xidi;} //2?????? if(PXshanshuo==1) //???1??????????? {piaoxi=!piaoxi;} //2??????? if(TSshanshuo==1) //???1??????????? {tuoshui=!tuoshui;} //2?????? } } } } void time1() interrupt 3 //???????????D??1?D??????D??o?3 { TH1=(65536-50000)/256; //???3???? TL1=(65536-50000)%256; //???3???? if(tt1==0) //???????y??a { zz=0; fz=1; } if(tt1==120) //6??o?????????????1 { zz=1; //???????????1 fz=1; } tt1++; //?????????D? if(tt1==200) //4??o?????????????a { zz=1; //?????a fz=0; } if(tt1==320) //6??o?????????????1 { zz=1; //??????2???a fz=1; } if(tt1==400) //4??o?????????y??a { tt1=0; //???????y??a } } 老鐵,程序最好看懂呢 |
hantu 發(fā)表于 2019-4-22 14:22 從229行開始重新排版了一下,現(xiàn)在應該沒有亂碼了 |
hantu 發(fā)表于 2019-4-22 14:22 /*******************************中斷*********************************/ void int0() interrupt 0 //運行/暫停 { qidong++; //啟動 if(qidong==2) //如果啟動打開 {qidong=0;TR1=0;zz=0;fz=0;} //啟動打開 } void int1() interrupt 2 //蓋開關 { EA=0; //關閉中斷總允許位 TR0=0; //關閉定時器0 TR0=1; //啟動定時器1 zz=0; //打開正轉(zhuǎn) fz=0; //打開反轉(zhuǎn) TR2=0; //關閉定時器2 TF2=0; //定時時間到,將定時器溢出標志位TF2清零 } void time0() interrupt 1 //定時器中斷0中斷類型號1 { TH0=(65536-50000)/256; //設定初值 TL0=(65536-50000)%256; //設定初值 tt++; if(QR_key==0) //強弱切換開關 { delayms(5); //延時 if(QR_key==0) //如果強弱開關鍵按下 { qr++; //強弱 }while(!QR_key); } if(CX_key==0) //程序選擇鍵 { delayms(5); //延時 if(CX_key==0) //如果按下程序鍵 {num++; if(num==5)num=1; } while(!CX_key); } } /*******************************蓋開關************************/ if(GKG_key==0) //蓋開關 { { while(!GKG_key) {TR1=0;zz=0;fz=0;} //關閉定時器1 正轉(zhuǎn)、反轉(zhuǎn)打開 TR1=1; //打開定時器1 } if(tt==14) //LED 0.7s 閃爍¸ { tt=0; { if(XDshanshuo==1) //如果是高電平 {xidi=!xidi;} //不洗滌 if(PXshanshuo==1) //如果是高電平 {piaoxi=!piaoxi;} //不漂洗 if(TSshanshuo==1) //如果是高電平 {tuoshui=!tuoshui;} //不脫水 } } } void time1() interrupt 3 //定時器中斷1中斷類型號3 { TH1=(65536-50000)/256; //定初值 TL1=(65536-50000)%256; //定初值 if(tt1==0) //電機正傳 { zz=0; fz=1; } if(tt1==120) //6秒后電機停止 { zz=1; //電機停止 fz=1; } tt1++; //電機繼續(xù) if(tt1==200) //4秒后電機反轉(zhuǎn) { zz=1; //反轉(zhuǎn) fz=0; } if(tt1==320) //6秒后電機停止 { zz=1; //電機不轉(zhuǎn) fz=1; } if(tt1==400) //4秒后電機正傳 { tt1=0; //電機正轉(zhuǎn) } } |
代碼第254行尾少分號 自第239起的代碼段有問題。因為排版極亂沒有規(guī)范縮進,大大增加排錯難度。 |
錯太多了 第96、98行,TSshanshuo錯寫成TSshansuo了 第229行的中斷服務程序少了開始跟結(jié)束的花括號,而且與第223的函數(shù)重名 還有兩個定時器中斷的服務程序?qū)懙靡蔡爆嵙?/td> |
HC6800-ES-V2.0 發(fā)表于 2019-4-22 08:50 程序放下面樓了,越改錯越多不知道為啥 |
aimripeky 發(fā)表于 2019-4-22 10:25 定義了的,頭文件接下來就定義了 |
|
變量重疊 |
你的變量定義類型了嗎 比如 int char。。。 |
發(fā)程序吧,想幫你都沒辦法。 只看你的圖片,好像外部中斷1的服務函數(shù)沒有{},有頭文件沒? |
Powered by 單片機教程網(wǎng)