|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
AT89S52,這個程序是不是錯誤百出啊? |
| 作者:jerry_21cn 欄目:單片機 |
我要在四位數碼管上顯示分鐘和秒鐘,高手們幫我看看,這個程序不長啊! #include <reg52.h> sbit LED=P2^5; sbit BELL=P2^7; sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; code const unsigned CHAR disp[]= { 0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F, 0x6F,0x77,0x7C,0x39,0X5E,0x79,0x71,0x76,0x74, 0x38,0x73,0x6E,0x3E,0x1E,0x78,0,0x40, }; bit sec_flag; unsigned CHAR min,sec; unsigned CHAR dis[4]; unsigned int time_down; void init() { TMOD=0x01; TH0=0xff; TL0=0x9b; EA=1; ET0=1; TR0=1; } void Timer0_ISR(void) interrupt 1 using 3 { if(!time_down) //過去一秒鐘 { time_down=9999; sec_flag=1; //過去一秒鐘,取出秒信號 } else time_down--; } void dlms(unsigned int x) { unsigned int y; for(y=x;y>0;y--); } void clock() { if(sec_flag) { sec_flag=0; LED=!LED; if(sec==59&&min==59) { LED=0; BELL=0; min=0; sec=0; } else if(sec==59) { sec=0; LED=0; BELL=0; dlms(6000); min++; } else sec++; } } void DISPLAY() { dis[0]=min/10; dis[1]=min%10; dis[2]=sec/10; dis[3]=sec%10; TR0=0; if(sec_flag) { if(min/10==5&&min%10==9&&sec/10==5&&sec%10==9) //分、秒都到59時,都顯示0 { P2_0=P2_1=P2_2=P2_3=1; P0=disp[0]; dlms(6000); } else if(min%10==9&&sec/10==5&&sec%10==9) //分鐘的個位到9,秒鐘到59時 { P2_0=1; P2_1=P2_2=P2_3=0; P0=disp[dis[0]]; //分鐘的十位即第一塊顯示 P2_0=0; P2_1=P2_2=P2_3=1; P0=disp[0]; dlms(6000); } else if(sec/10==5&&sec%10==9) //秒鐘到59時 { P2_1=1; P2_0=P2_2=P2_3=0; P0=disp[dis[1]]; //分鐘的個位即第二塊顯示 P2_2=P2_3=1; P2_1=P2_0=0; P0=disp[0]; //第一塊不變,其余兩塊顯示0 dlms(6000); } else if(sec%10==9) //秒鐘個位到9時 { P2_2=1; P2_0=P2_1=P2_3=0; P0=disp[dis[2]]; //秒鐘的十位顯示 P2_3=1; P2_1=P2_2=P2_0=0; P0=disp[0]; & |
| 2樓: | >>參與討論 |
| 作者: chaly 于 2005/6/12 9:53:00 發(fā)布:
幫你看過了 幫你看過了,編譯的話沒有出錯的呀 |
|
| 3樓: | >>參與討論 |
| 作者: chaly 于 2005/6/12 10:02:00 發(fā)布:
原理圖畫得不完整 原理圖少好多東西的,好多標簽都沒有對應起來 |
|
| 4樓: | >>參與討論 |
| 作者: jerry_21cn 于 2005/6/12 10:38:00 發(fā)布:
原理圖沒有錯啊,主要是程序DISPLAY部分我覺得有錯啊 我試其它的程序可以運行啊,主要是這個程序,我覺得肯定有錯啊,特別是顯示部分DISPLAY() |
|
| 5樓: | >>參與討論 |
| 作者: shazi2666 于 2005/6/12 11:35:00 發(fā)布:
是呀!電路圖不全的!!! |
|
| 6樓: | >>參與討論 |
| 作者: jerry_21cn 于 2005/6/12 15:36:00 發(fā)布:
怎么不全啊?不用管電路圖細節(jié)啊! |
|
| 7樓: | >>參與討論 |
| 作者: jerry_21cn 于 2005/6/12 21:57:00 發(fā)布:
求救啊!顯示不正確! 燒進去以后,四位數碼管都顯示“8.”(即abcdefgdp 全部都顯示)不變。哪里錯了啊???高手們,幫幫忙啊! |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |