|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
個位大哥幫忙看一下我的程序出什么問題了 |
| 作者:hziee30 欄目:單片機 |
#include <REG51.h> #include <intrins.h> sbit ADJUST=P3^0; //--------時間調(diào)整鍵---------- sbit IN=P3^1; //----------時間增 ---------------- sbit DE=P3^7; //-----------------時間減------------ sbit MIN_0=P3^2; //---------------分鐘底位--------- sbit MIN_1=P3^3; //---------------分鐘高位----- sbit HOUR_0=P3^4; //-------------小時底位--------- sbit HOUR_1=P3^5; //------------小時高位------------ unsigned CHAR cout_adjust=0; //--調(diào)整鍵記數(shù),確定是分鐘調(diào)整還是小時調(diào)整--- unsigned CHAR cout_T0=0; //----記定時中斷次數(shù)------------ unsigned CHAR time_off=1; //--------------在時間調(diào)整是記時關(guān)閉標(biāo)志------ unsigned CHAR cout_sp=1; //---------------小數(shù)點顯示標(biāo)標(biāo)志----------- static unsigned int hour=0; //------------小時記時----------- static unsigned int min=0; //------------分鐘記時----------------- const unsigned CHAR SHOW[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //-----------顯示值---- #define KEY P1 #define VELUE P2 //*------延時,6M晶振延時為(24N+32)us------------*/ void delay(unsigned int N) { unsigned int i; for (i=0;i<N;i++); } /*---------------時間調(diào)整--------------------*/ void time_adjust(void) { if(min==59) { min=0; if(hour==23) hour=0; else hour=hour+1; } else min=min+1; } /*--------------顯示函數(shù)----------------------*/ void show(void) { if(cout_adjust==0) //------四個數(shù)碼管順序掃描顯示------- { MIN_0=1; VELUE=SHOW[min%10]; _nop_(); MIN_0=0; MIN_1=1; VELUE=SHOW[min/10]; _nop_(); MIN_1=0; if(cout_sp!=0) //----------0.5s到顯示小數(shù)點--------- { HOUR_0=1; VELUE=SHOW[hour%10]&0x7f; _nop_(); HOUR_0=0; cout_sp=0; } else { HOUR_0=1; VELUE=SHOW[hour%10]; _nop_(); HOUR_0=0; } HOUR_1=1; VELUE=SHOW[hour/10]; _nop_(); HOUR_1=0; } else if(cout_adjust==1) //--小時調(diào)整時,在小時位顯示調(diào)整的時間 { HOUR_0=1; VELUE=SHOW[hour%10]; _nop_(); HOUR_0=0; HOUR_1=1; VELUE=SHOW[hour/10]; _nop_(); HOUR_1=0; } else if(cout_adjust==2) //分鐘調(diào)整時,在分鐘位顯示調(diào)整的的時間 { MIN_0=1; VELUE=SHOW[min%10]; _nop_(); MIN_0=0; MIN_1=1; VELUE=SHOW[min/10]; _nop_(); MIN_1=0; } } /*------------------判斷按鍵---------------*/ void judge_key(void) { unsigned CHAR key_velue; key_velue=KEY&0x0f; while(key_velue!=0) //-------------判斷是否有鍵按下- { delay(500); //--------------延時10ms消抖動- if((key_velue&KEY)!=0) //--------------判斷是否真的是按鍵 { while(key_velue&KEY!=0); //-等待按鍵釋放- delay(500); //--------------延時10ms消抖動 SWITCH(key_velue) //-------------鍵值散轉(zhuǎn)-- { case 0x01: //------------時間調(diào)整鍵-- { cout_adjust++; if(cout_adjust==3) // --按了三下復(fù)位- cout_adjust=0; if(cout_adjust!=0) time_off=1; else time_off=0; }; break; case 0x02: //-----------------時間值加-- { if(cout_adjust==1) hour++; else if(cout_adjust==2) min++; };break; |
| 2樓: | >>參與討論 |
| 作者: hziee30 于 2006/10/26 15:43:00 發(fā)布:
接上面 我剛學(xué)這個,自己編了一個24小是的時鐘. 在編譯時出現(xiàn)了: linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: SHOW MODULE: time.obj (TIME) 我不知道是什么原因,請大哥們幫忙看看!!!謝謝!!!! |
|
| 3樓: | >>參與討論 |
| 作者: stycx 于 2006/10/26 16:03:00 發(fā)布:
不會是show不能同時做變量名和子函數(shù)名吧,改掉一個看看 |
|
| 4樓: | >>參與討論 |
| 作者: stycx 于 2006/10/27 22:51:00 發(fā)布:
還真是這樣,將 show() 改為 show1() 就可以 #include <REG51.h> #include <intrins.h> sbit ADJUST=P3^0; //--------時間調(diào)整鍵---------- sbit IN=P3^1; //----------時間增 ---------------- sbit DE=P3^7; //-----------------時間減------------ sbit MIN_0=P3^2; //---------------分鐘底位--------- sbit MIN_1=P3^3; //---------------分鐘高位----- sbit HOUR_0=P3^4; //-------------小時底位--------- sbit HOUR_1=P3^5; //------------小時高位------------ unsigned CHAR cout_adjust=0; //--調(diào)整鍵記數(shù),確定是分鐘調(diào)整還是小時調(diào)整--- unsigned CHAR cout_T0=0; //----記定時中斷次數(shù)------------ unsigned CHAR time_off=1; //--------------在時間調(diào)整是記時關(guān)閉標(biāo)志------ unsigned CHAR cout_sp=1; //---------------小數(shù)點顯示標(biāo)標(biāo)志----------- static unsigned int hour=0; //------------小時記時----------- static unsigned int min=0; //------------分鐘記時----------------- const unsigned CHAR SHOW[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //-----------顯示值---- #define KEY P1 #define VELUE P2 //*------延時,6M晶振延時為(24N+32)us------------*/ void delay(unsigned int N) { unsigned int i; for (i=0;i<N;i++); } /*---------------時間調(diào)整--------------------*/ void time_adjust(void) { if(min==59) { min=0; if(hour==23) hour=0; else hour=hour+1; } else min=min+1; } /*--------------顯示函數(shù)----------------------*/ void show1(void) { if(cout_adjust==0) //------四個數(shù)碼管順序掃描顯示------- { MIN_0=1; VELUE=SHOW[min%10]; _nop_(); MIN_0=0; MIN_1=1; VELUE=SHOW[min/10]; _nop_(); MIN_1=0; if(cout_sp!=0) //----------0.5s到顯示小數(shù)點--------- { HOUR_0=1; VELUE=SHOW[hour%10]&0x7f; _nop_(); HOUR_0=0; cout_sp=0; } else { HOUR_0=1; VELUE=SHOW[hour%10]; _nop_(); HOUR_0=0; } HOUR_1=1; VELUE=SHOW[hour/10]; _nop_(); HOUR_1=0; } else if(cout_adjust==1) //--小時調(diào)整時,在小時位顯示調(diào)整的時間 { HOUR_0=1; VELUE=SHOW[hour%10]; _nop_(); HOUR_0=0; HOUR_1=1; VELUE=SHOW[hour/10]; _nop_(); HOUR_1=0; } else if(cout_adjust==2) //分鐘調(diào)整時,在分鐘位顯示調(diào)整的的時間 { MIN_0=1; VELUE=SHOW[min%10]; _nop_(); MIN_0=0; MIN_1=1; VELUE=SHOW[min/10]; _nop_(); MIN_1=0; } } /*------------------判斷按鍵---------------*/ void judge_key(void) { unsigned CHAR key_velue; key_velue=KEY&0x0f; while(key_velue!=0) //-------------判斷是否有鍵按下- { delay(500); //--------------延時10ms消抖動- if((key_velue&KEY)!=0) //--------------判斷是否真的是按鍵 { while(key_velue&KEY!=0); //-等待按鍵釋放- delay(500); //--------------延時10ms消抖動 SWITCH(key_velue) //-------------鍵值散轉(zhuǎn)-- { case 0x01: //------------時間調(diào)整鍵-- { cout_adjust++; if(cout_adjust==3) // --按了三下復(fù)位- cout_adjust=0; if(cout_adjust!=0) time_off=1; else time_off=0; }; break; case 0x02: //-----------------時間值加-- { if(cout_adjust==1) hour++; else if(cout_adjust==2) min++; };break; |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |