麻煩大家?guī)臀铱纯?,這程序編譯總是出現(xiàn)missing return-expression,謝謝!
#include #include #define uchar unsigned char #define uint unsigned int
#include "CH452W4.C" unsigned char minute=30,hour=12; uchar keyp;
/*********************************************************** * 延時函數(shù) ***********************************************************/ void delayms(uint t) { uchar i; while(t--) for(i=0;i<120;i++); }
/*********************************************************** * 數(shù)碼管顯示 ***********************************************************/ void display() { // CH452_Write(CH452_DIG7 | 0 |CH452_BCD_DOT_X ); //顯示數(shù)碼管的第8位,并加顯小數(shù)點 // CH452_Write(CH452_DIG6 | 3); //顯示數(shù)碼管的第7位 // CH452_Write(CH452_DIG5 | 2); //顯示數(shù)碼管的第6位 CH452_Write(CH452_DIG4 |hour/10); //顯示小時 CH452_Write(CH452_DIG3 |hour%10); CH452_Write(CH452_DIG2 |0x12); //顯示"-" CH452_Write(CH452_DIG1 |minute/10); //顯示分鐘 CH452_Write(CH452_DIG0 |minute%10);
}
/********************************************************** * 處理按鍵值函數(shù) *************************************************************/ uchar workkeycode(uchar x)
{ if(x==0x51) //鍵盤第一次按下 { delayms(10); if(x==0x51) { while(!x); //等待鍵盤釋放 while(1) //個位閃爍 { CH452_Write(CH452_DIG0 |0x10); delayms(250); CH452_Write(CH452_DIG0 |minute/10); delayms(250); x=0x51; if(x==0) //鍵盤再次按下 { delayms(10); if(x==0x51) { while(!x); //等待鍵盤釋放 while(1) //十位閃爍 { CH452_Write(CH452_DIG1 |0x10); delayms(250); CH452_Write(CH452_DIG1 |minute%10); delayms(250); if(x==0x51) //鍵盤第三次按下 { delayms(10); if(x==0x51) { while(!x); //等待鍵盤釋放 while(1) //百位閃爍 { CH452_Write(CH452_DIG2 |0x10); delayms(250); CH452_Write(CH452_DIG2 |0x12); delayms(250); if(x==0x51) //鍵盤第四次按下 { delayms(10); if(x==0x51) { while(!x); //等待鍵盤釋放 while(1) //千位閃爍 { CH452_Write(CH452_DIG3 |0x10); delayms(250); CH452_Write(CH452_DIG3 |hour/10); delayms(250); if(x==0x51) //鍵盤第五次按下 { delayms(10); if(x==0x51) { while(!x); //等待鍵盤釋放 while(1) //千位閃爍 { CH452_Write(CH452_DIG4 |0x10); delayms(250); CH452_Write(CH452_DIG4 |hour%10); delayms(250); } } } } } } } } } } } } } } } }
/*********************************************************** * 顯示左循環(huán)函數(shù) *************************************************************/ void shife8() { uchar i; for(i=0;i<8;i++) { CH452_Write(CH452_LEFTCYC); //寫左循環(huán)命令 delayms(300); //移動的速度控制 } } /*********************************************************** * 主函數(shù) *************************************************************/ void main() { //CH452_DOUT=1; // 設置該引腳為輸入方向 IE1=0; //設置CH452按鍵中斷 EX1=1; EA=1; CH452_Write(CH452_RESET); CH452_Write(CH452_BCD); // 選擇BCD譯碼方式,掃描極限為8個數(shù)碼管 // CH452_Write(CH452_SELF_BCD ); // 選擇自定義BCD譯碼方式,掃描極限為8個數(shù)碼管 // CH452_Write(CH452_TWINKLE + 0x26);//設置閃爍控制,0x26表示[0010 0110]: //高四位的第2位數(shù)碼管閃爍,低四位的第2和第3位閃爍 CH452_Write(CH452_SYSON2); // 開啟顯示、鍵盤 display(); // 顯示 shife8(); //左循環(huán)8次 // CH452_Write(CH452_CLR_BIT |16); //段位清0,從第一位到第八位,從0段到第63段,剛好8個數(shù)碼管,8X8=64。 // CH452_Write(CH452_LEVEL|0x2b); //加載光柱,編碼小于光柱的會點亮,大于和等于光柱的都會熄滅 while(1) { // CH452_Write(CH452_DIG6 |CH452_BCD_DOT_X); } }
/*********************************************************** * // INT1中斷服務程序 *************************************************************/ void int1() interrupt 2 //using 1 { keyp=CH452_Read(); //按鍵值 keyp=workkeycode(keyp); //處理按鍵值 if(keyp/10!=0) CH452_Write(CH452_DIG5 | (keyp/10)); //如果十位不為0,顯示按鍵碼的十位 else CH452_Write(CH452_DIG5 |CH452_BCD_SPACE); //如果十位為0,則不顯示 CH452_Write(CH452_DIG4 | (keyp%10)); //顯示按鍵碼的個位
CH452_Write(CH452_SLEEP); }