|
188黑幣
本人實(shí)在小白,麻煩幫忙編譯成stc89c52的HEX文件,謝謝。
自己編譯,出現(xiàn)以下結(jié)果:Build target 'Target 1'
assembling STARTUP.A51...
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_START
MODULE: STARTUP.obj (?C_STARTUP)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ?C_START
MODULE: STARTUP.obj (?C_STARTUP)
ADDRESS: 000DH
Program Size: data=9.0 xdata=0 code=15
"yuu" - 0 Error(s), 2 Warning(s).
源文件如下:
yuu.rar
(17.18 KB, 下載次數(shù): 30)
2019-7-15 07:42 上傳
點(diǎn)擊文件名下載附件
有錯(cuò)誤,麻煩幫忙檢查一下
代碼如下:
- #include <REG51.H>
- #define uchar unsigned char //類型定義,方便書寫
- #define uint unsigned int
- uchar code roundz[] ={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; //步進(jìn)電機(jī)正轉(zhuǎn)控制數(shù)組
- uchar code roundf[] ={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //步進(jìn)電機(jī)反轉(zhuǎn)控制數(shù)組
- uchar code disptab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極LED顯示器顯示碼
- sbit beep=P2^7;
- sbit baiwei=P2^0;
- sbit shiwei=P2^1;
- sbit gewei=P2^2; //數(shù)碼管位選
- uint num,sec;
- #define K1 0x06
- #define K20x5
- #define K3 0x3 //按鍵碼,分別檢測三個(gè)按鍵是否有按下
- sbit in_water=P3^3;
- sbit out_water=P3^4;
- sbit LED_bz=P3^5;
- sbit LED_qr=P3^6;
- sbit LED_sg=P3^7; //5個(gè)LED燈,分別為進(jìn)水,出水,標(biāo)準(zhǔn),輕柔和甩干
- //**************基本延遲函數(shù)************************************************
- void delay(uint dcnt) // 延遲時(shí)間為dcntms
- {
- uint i,j;
- for(i=dcnt;i>0;i--)
- for(j=120;j>0;j--);
- }
- //************定時(shí)器0控制倒計(jì)時(shí)*****************************************
- void count_down() interrupt 1
- {
- int count ;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256; //定時(shí)器0每50ms產(chǎn)生一次中斷;
- count ++;
- if(count == 20) //每50*20=1s sec的值減1
- {
- count =0;
- sec--;
- if(sec==0) //計(jì)時(shí)結(jié)束時(shí),關(guān)閉總中斷,電機(jī)停止轉(zhuǎn)動(dòng)。
- {
- EA=0;
- P0=0xff;
- P1=0xff;
- P2=0xff;
- P3=0xff;
- while(1);
- }
- }
- }
- //***************倒計(jì)時(shí)的數(shù)碼管顯示程序*******************************
- void display() interrupt 3 //利用定時(shí)器1來進(jìn)行數(shù)碼管顯示
- {
- TH1=(65536-5000)/256; //每5ms掃描一次
- TL1=(65536-5000)%256;
- num=(num%3);
- P0=0xff; //消影
- switch(num)
- {
- case 0:
- P0=disptab[sec/100];
- baiwei=1; shiwei=0;gewei=0;
- break;
- case 1:
- P0=disptab[(sec/10)%10];
- baiwei=0; shiwei=1; gewei=0;
- break;
- case 2:
- P0=disptab[sec%10];
- baiwei=0; shiwei=0; gewei=1;
- break;
- default:break;
- }
- num++;
- }
- //************************步進(jìn)電機(jī)正轉(zhuǎn)控制函數(shù)******************************
- void RotateWise(uinttime,uchar stepcnt) //time為轉(zhuǎn)一步時(shí)間,stepcnt為圈數(shù)
- {
- uchar i ,j;
- for(i=0;i<stepcnt;i++)
- {
- for(j=0;j<8;j++)
- {
- P1= roundz[j] ;
- delay (time); //更改delay里數(shù)值可改變轉(zhuǎn)速,轉(zhuǎn)一圈時(shí)間為time*8 ms
- }
- }
- }
- //***********************步進(jìn)電機(jī)反轉(zhuǎn)控制函數(shù)****************************
- void ContraRotate(uinttime,uchar stepcnt) //time為轉(zhuǎn)一步時(shí)間,stepcnt為圈數(shù)
- {
- uchar i ,j;
- for(i=0;i<stepcnt;i++)
- {
- for(j=0;j<8;j++)
- {
- P1= roundf[j] ; //更改delay里數(shù)值可改變轉(zhuǎn)速,轉(zhuǎn)一圈時(shí)間為time*8 ms
- delay (time);
- }
- }
- }
- //**************************洗滌子程序****************************************
- void xidi()
- {
- uint i;
- in_water = 0;
- delay(9000); //開水閥,進(jìn)水9s
- in_water = 1; //關(guān)水閥
- delay(1000);
- for(i=10;i>0;i--) //轉(zhuǎn)動(dòng)十次
- {
- RotateWise(50,10) ; //正轉(zhuǎn)10圈,轉(zhuǎn)速為50ms*8
- delay(1000); //停止一秒
- ContraRotate(50,10) ; //反轉(zhuǎn)10圈,轉(zhuǎn)速為50ms*8
- delay(1000);
- }
- }
- //**************************漂洗子程序****************************************
- void piaoxi()
- {
- uint i;
- in_water = 0;
- delay(9000); //開水閥,進(jìn)水9s
- in_water = 1; //關(guān)水閥
- delay(1000);
- for(i=5;i>0;i--) //轉(zhuǎn)動(dòng)五次
- {
- RotateWise(100,10) ; //正轉(zhuǎn)10圈,轉(zhuǎn)速為100ms*8
- delay(1000); //停止一秒
- ContraRotate(100,10) ; //反轉(zhuǎn)10圈,轉(zhuǎn)速為100ms*8
- delay(1000);
- }
- }
- //*********************脫水子程序*******************************************
- void tuoshui()
- {
- uint i;
- out_water = 0; //打開排水閥
- delay(9000); //排水9s
- for(i=10;i>0;i--) //轉(zhuǎn)動(dòng)十次
- {
- RotateWise(50,10) ; //正轉(zhuǎn)10圈,轉(zhuǎn)速為50ms*8
- }
- beep=0;
- delay(1000); //蜂鳴器警報(bào)
- beep=1;
- out_water =1 ; //甩干完畢,關(guān)閉水閥
- }
- //********************標(biāo)準(zhǔn)模式************************************************
- void biaozhun()
- { sec=360; //設(shè)定倒計(jì)時(shí)數(shù)目
- LED_bz = 0; //點(diǎn)亮“標(biāo)準(zhǔn)”LED燈
- xidi(); //洗滌
- piaoxi();
- piaoxi(); //2次漂洗
- tuoshui(); //脫水
- LED_bz=1; //熄滅LED燈
- }
- //*********************輕揉模式********************************************
- void qingrou()
- { sec=250; //設(shè)定倒計(jì)時(shí)數(shù)目
- LED_qr = 0; //點(diǎn)亮“輕揉”LED燈
- piaoxi();
- piaoxi(); //2次漂洗
- tuoshui(); //脫水
- LED_qr = 1; //熄滅LED燈
- }
- //**********************甩干模式********************************************
- void shuaigan()
- {
- sec=50; //設(shè)定倒計(jì)時(shí)數(shù)目
- LED_sg = 0; //點(diǎn)亮“甩干”LED燈
- tuoshui(); //脫水
- LED_sg = 1; //熄滅LED燈
- }
- //********************鍵盤掃描程序****************************************
- uchar scankey()
- {
- int key;
- if((P3&0x07)== 0x07)
- return(0xff); //消抖
- delay(30);
- if((P3&0x07)== 0x07)
- return(0xff);
- key = P3&0x07;
- while ((P3&0x07)!=0x07); //當(dāng)有按鍵按下的時(shí)候,返回key值,判斷哪個(gè)按鍵被按下
- return key;
- }
- //******************主函數(shù)************************************************
- void main()
- {
- TMOD|=0x11; //定時(shí)器0和定時(shí)器1模式 工作方式1
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256; //定時(shí)0器寄存器裝初值,每50ms產(chǎn)生一次中斷
- EA=0; //關(guān)總中斷
- ET0=1; //開定時(shí)器0中斷
- TH1=(65536-5000)/256; //定時(shí)器1寄存器裝初值,沒5ms產(chǎn)生一次中斷
- TL1=(65536-5000)%256;
- ET1=1; //打開定時(shí)器1中斷
- TR0=1;
- TR1=1; //打開定時(shí)器0和定時(shí)器1
- while(1)
- {
- uchar key = scankey();
- if (key == K1)
- {
- EA=1; //開總中斷[em12]
- biaozhun();
- }
- if (key == K2)
- {
- EA=1;
- qingrou();
- }
- if (key == K3)
- {
- EA=1;
- shuaigan();
- } } }
復(fù)制代碼
|
|