![]() |
||
Advance Member
![]() ![]() 加入日期: Jul 2004
文章: 372
|
引用:
請問你的聯特力是勝特力嗎???? 另外,根據一些實用 7805 供電 8051 的資料 由於8051消耗電流160mA 左右 如果輸入電壓在 12V 的情況下就會過造成 7805 過燙 解決方案是降低輸入電壓,或是串連一顆電阻,當然這顆必需是大功率的 以及選用安培數較高的 7805 只是若為了穩定電流,應該不需要接 120Hz 而且我以前在用 7805 的時候也沒接過什麼 120Hz 的訊號源 該不會那是直接應用全波整流?? 因為市電是60Hz所以全波整流時漣波電壓頻率是兩倍的 120Hz |
||||||||
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Jan 2004 您的住址: 高雄市
文章: 1,244
|
引用:
大大您好,是小弟打錯了,是勝特力才對...~"~....謝謝大大您的指正!^^! 那大大可以教一下小弟怎麼看勝特力裡的L7805CV的Datasheet 嗎!?@_@!? 謝謝感激不盡!n_n! |
|||
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Jan 2004 您的住址: 高雄市
文章: 1,244
|
請益,使用AT89C2051,程式怎麼改才能減少至2KB
動作說明: 總共 15 隻腳位,先把要秀的資料存放在2051的記憶體位 置 30H 和 31H 再處理後透過別顆 IC 的腳位輸出;30H 的資料負 責LED 8~15 而 31H 的資料負責 LED 0~7 動作要求 ![]() 從左到右,依序為 LED 0 ~ LED 14 (1 為 亮 , 0 為不亮) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 注意1:並沒有全部都按照每次都增加亮一個的順序 即: 1000 => 1100 注意2.增加的 LED 需閃爍三次,方可進入下一個狀態 即: 1000 => 1100 => 1000 => 1100 => 1000 => 1100 |
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Jan 2004 您的住址: 高雄市
文章: 1,244
|
程式如下:
ORG 0000H START: ;主程式開始 ;-------------------------------------------------- ; LED 0 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#00H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 0 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#00H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 0 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 1 LCALL IC資料寫入副程式 MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#00H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 0 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 1 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 0 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#01H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 2 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#03H ;LED 0 ~ 7 顯示 0 0 0 0 0 0 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 3 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#07H ;LED 0 ~ 7 顯示 0 0 0 0 0 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 4 & LED 5 & LED 6 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#0FH ;LED 0 ~ 7 顯示 0 0 0 0 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 7 顯示狀態 ;-------------------------------------------------- MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#7FH ;LED 0 ~ 7 顯示 0 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 8 顯示狀態 ;-------------------------------------------------- MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#00H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 0 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; P.9 顯示狀態 ;-------------------------------------------------- MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 0 0 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#01H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY |
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Jan 2004 您的住址: 高雄市
文章: 1,244
|
;--------------------------------------------------
; LED 10 & LED 11 & LED 12 狀態顯示 ;-------------------------------------------------- MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#03H ;LED 8 ~ 14 顯示 0 0 0 0 0 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;-------------------------------------------------- ; LED 13 & LED 14 狀態顯示 ;-------------------------------------------------- MOV 30H,#7FH ;LED 8 ~ 14 顯示 0 1 1 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#7FH ;LED 8 ~ 14 顯示 0 1 1 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#7FH ;LED 8 ~ 14 顯示 0 1 1 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY MOV 30H,#1FH ;LED 8 ~ 14 顯示 0 0 0 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 LCALL DELAY ;----------------------------------------------------------- ; LED 0 ~ LED 14 全亮 ;----------------------------------------------------------- MOV 30H,#FFH ;LED 8 ~ 14 顯示 1 1 1 1 1 1 1 1 MOV 31H,#FFH ;LED 0 ~ 7 顯示 1 1 1 1 1 1 1 1 LCALL IC資料寫入副程式 JMP $ ;程式執行到此停止 ;================================================== 延遲時間副程式 DELAY: MOV R5,#4 DELAY_1: MOV R6,#250 DELAY_2: MOV R7,#200 DJNZ R7,$ DJNZ R6,DELAY_2 DJNZ R5,DELAY_1 RET END 小弟知道小弟現在寫的程式很笨,很龐大約3.2KB燒不進去89C2051 小弟現在想到的是建DPTR,可是還是覺得程式很大;不知道有無先進前輩可以指導一下小弟該怎麼改或是寫,謝謝,感激不盡 |
![]() |
![]() |
Major Member
![]() 加入日期: Feb 2001 您的住址: 虛無飄渺
文章: 105
|
LED_PORT_1 = 0x00
LED_PORT_2 = 0x00 LED_STATUS_1 = 0x00 LED_STATUS_2 = 0x00 LED_STATUS_3 = 0x00 LED_STATUS_4 = 0x00 SET X = 0 ; Index X = 0 TEST_LOOP: Set Flag C = 1 LED_STATUS_1 = ROL LED_STATUS_1 ; 0x01 C <- |7|6|5|4|3|2|1|0| <- C LED_STATUS_2 = ROL LED_STATUS_2 ; 0x00 C <- |7|6|5|4|3|2|1|0| <- C LED_STATUS_3 = LED_PORT_1_TABLE,X ; Index X get Table Data LED_STATUS_4 = LED_PORT_2_TABLE,X ; Index X get Table Data LED_STATUS_1 = LED_STATUS_1 OR LED_STATUS_3 LED_STATUS_2 = LED_STATUS_2 OR LED_STATUS_4 LED_PORT_1 = LED_STATUS_1 ; 0x01 LED_PORT_2 = LED_STATUS_2 ; 0x00 LED_PORT_1 = LED_STATUS_1 xor LED_STATUS_3 ; 0x00 LED_PORT_2 = LED_STATUS_2 xor LED_STATUS_4 ; 0x00 LED_PORT_1 = LED_STATUS_1 ; 0x01 LED_PORT_2 = LED_STATUS_2 ; 0x00 LED_PORT_1 = LED_STATUS_1 xor LED_STATUS_3 ; 0x00 LED_PORT_2 = LED_STATUS_2 xor LED_STATUS_4 ; 0x00 LED_PORT_1 = LED_STATUS_1 ; 0x01 LED_PORT_2 = LED_STATUS_2 ; 0x00 LED_PORT_1 = LED_STATUS_1 xor LED_STATUS_3 ; 0x00 LED_PORT_2 = LED_STATUS_2 xor LED_STATUS_4 ; 0x00 INC X ; Index X + 1 CMP X,#0A BNE TEST_LOOP LED_PORT_1 = #0FFH LED_PORT_2 = #0FFH JMP $ LED_PORT_1_TABLE: .DB $01,$02,$04,$08,$70,$80,$00,$00,$00,$00 LED_PORT_2_TABLE: .DB $00,$00,$00,$00,$00,$00,$01,$02,$1C,$60 ============================================ 我沒辦法給你8051正確的寫法~ 所以只能用觀念來教你~ 上述的方式我已經用Code去驗證過了~ 可以完整呈現你上面貼的流程~ 方法好不好是其次~ 不過Size應該可以省不少喔~ 因為我貼的是不屬於任何語法~ 試著寫看看吧~ 加油喔~~~ . . 此文章於 2006-08-02 02:46 PM 被 Marow 編輯. |
![]() |
![]() |