Re: [問題] 我的8051開機會閃一閃...

看板Electronics作者 (羽仔)時間17年前 (2009/02/21 20:19), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串3/3 (看更多)
: 看到這問題,我只想請問你。 : 你程式寫了嗎? : 如果寫了你閃led燈是HI動作還是LOW動作呢? : 你有量過開機時LED腳位那邊電壓狀態嗎? : 你只給接好圖。沒有線路圖,如何請更強的高手幫助呢? : MAX232插拔有時會傳送訊號,所以真不知道你原本LED燈是什麼情況下該閃。 : 而且做電燈電視開關不是會用繼電器做?否則110V交流電。如何用5V的MCU控制? : 親身碰到有時看動作狀態有時也不一定知道是什麼問題。 : 大多只能提供方向。 #include<reg51.h> #include<stdio.h> #define uchar unsigned char sbit wled = P3^2; sbit rel01 = P1^0; sbit rel02 = P1^1; sbit rel03 = P1^2; sbit rel04 = P1^3; sbit rel05 = P1^4; sbit rel06 = P1^5; sbit rel07 = P1^6; sbit rel08 = P1^7; sbit rel09 = P0^0; sbit rel10 = P0^1; sbit rel11 = P0^2; sbit rel12 = P0^3; sbit rel13 = P0^4; sbit rel14 = P0^5; sbit rel15 = P0^6; sbit rel16 = P0^7; sbit rel17 = P2^7; sbit rel18 = P2^6; sbit rel19 = P2^5; sbit rel20 = P2^4; sbit rel21 = P2^3; sbit rel22 = P2^2; sbit rel23 = P2^1; sbit rel24 = P2^0; delay(int count) { int i,j; for(i=0;i<count;i++) for(j=0;j<200;j++); } led_bl() { int i; for(i=0;i<1;i++) { wled = 0; delay(10); wled = 1; delay(10); } } init_rs232() { SCON=0x50; TMOD=0x20; TH1=0xFD; TR1=1; TI=1; } tx_char(uchar c) { while(1)if(T1)break; TI=0; SBUF=c; } tx_str(char *str) { do{tx_char(*str++);} while(*str!='\0'); } char rx_char() { while(1)if(RI)break; RI=0; //wled = 0; delay(5); //wled = 1; delay(0); return SBUF; } main() { uchar mn; led_bl(); init_rs232(); delay(200); mn = '0'; /* P2=0; switch(P2) { case 0 : mn='0';break; case 1 : mn='1';break; case 2 : mn='2';break; case 3 : mn='3';break; case 4 : mn='4';break; case 5 : mn='5';break; case 6 : mn='6';break; case 7 : mn='7';break; case 8 : mn='8';break; case 9 : mn='9';break; case 10 : mn='a';break; case 11 : mn='b';break; case 12 : mn='c';break; case 13 : mn='d';break; case 14 : mn='e';break; case 15 : mn='f';break; case 16 : mn='g';break; } */ printf("This machine is \"%c\"", mn);printf("\n"); while(1) { int i; uchar command[4]; led_bl(); for(i=0;i<4;i++) { command[i]=rx_char(); } if(command[0]==mn)//機器組 { if(command[1]=='d') { switch(command[2]) { case 'A':rel01 = 0; break; case 'a':rel01 = 1; break; case 'B':rel02 = 0; break; case 'b':rel02 = 1; break; case 'C':rel03 = 0; break; case 'c':rel03 = 1; break; case 'D':rel04 = 0; break; case 'd':rel04 = 1; break; case 'E':rel05 = 0; break; case 'e':rel05 = 1; break; case 'F':rel06 = 0; break; case 'f':rel06 = 1; break; case 'G':rel07 = 0; break; case 'g':rel07 = 1; break; case 'H':rel08 = 0; break; case 'h':rel08 = 1; break; case 'I':rel09 = 0; break; case 'i':rel09 = 1; break; case 'J':rel10 = 0; break; case 'j':rel10 = 1; break; case 'K':rel11 = 0; break; case 'k':rel11 = 1; break; case 'L':rel12 = 0; break; case 'l':rel12 = 1; break; case 'M':rel13 = 0; break; case 'm':rel13 = 1; break; case 'N':rel14 = 0; break; case 'n':rel14 = 1; break; case 'O':rel15 = 0; break; case 'o':rel15 = 1; break; case 'P':rel16 = 0; break; case 'p':rel16 = 1; break; case 'Q':rel17 = 0; break; case 'q':rel17 = 1; break; case 'R':rel18 = 0; break; case 'r':rel18 = 1; break; case 'S':rel19 = 0; break; case 's':rel19 = 1; break; case 'T':rel20 = 0; break; case 't':rel20 = 1; break; case 'U':rel21 = 0; break; case 'u':rel21 = 1; break; case 'V':rel22 = 0; break; case 'v':rel22 = 1; break; case 'W':rel23 = 0; break; case 'w':rel23 = 1; break; case 'X':rel24 = 0; break; case 'x':rel24 = 1; break; case 'Z':P0=0x00;P2=0x00;P1=0x00;break; case 'z':P0=0xFF;P2=0xFF;P1=0xFF;break; default: printf("Command miss");printf("\n"); } } else { printf("Command miss");printf("\n"); } } else { printf("Command miss");printf("\n"); } } 我不知道我的做法會不會佷奇怪... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.152.161.22

02/21 21:44, , 1F
我記得旗標的8051徹底研究那幾本書內有一章是在說類似
02/21 21:44, 1F

02/21 21:45, , 2F
的問題...如果排除是軟體而是硬體線路問題建議去翻翻看...
02/21 21:45, 2F

02/21 21:48, , 3F
如果誤動作會傷亡的那種建議還是從線路上搞定比較安心...
02/21 21:48, 3F

02/21 23:06, , 4F
我有到網上到處翻, 但是好像其他人都沒問題...
02/21 23:06, 4F

02/21 23:08, , 5F
我現在連用電晶體轉rs232跟TTL都試過了, 關機很久後也是會..
02/21 23:08, 5F

02/21 23:26, , 6F
我到覺得先看硬體
02/21 23:26, 6F

02/23 00:14, , 7F
用stc的mcu沒有問題了,應該是剛開機電壓還未去到高電位,謝謝
02/23 00:14, 7F
文章代碼(AID): #19d_5SpR (Electronics)
文章代碼(AID): #19d_5SpR (Electronics)