PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請問一下,8051的先進魔人大大們 (https://www.pcdvd.com.tw/showthread.php?t=638029)

rickyliu0222 2006-07-21 06:08 PM

建議買這一本~~~

http://tlsj.tenlong.com.tw/WebModul...77244&sid=22158


去看看吧

rickyliu0222 2006-07-21 06:15 PM

補充一下,林振漢老師的這本書

裡面也有組合語言

而且,同一個題目,有組合語言的程式,也有c語言的程式

真的是出外旅行,殺人滅口,必備良藥~~~~~~:D:D:D:D:D

rickyliu0222 2006-07-21 06:21 PM

補充一下

林振漢老師的這一本書

裡面也有組合語言

而且,每一個題目都有組合語言及C語言的程式~~~


實在是居家旅行~上班兼差~~~~必備良書啊~~~~:D:D:D:D:D

rickyliu0222 2006-07-21 06:23 PM

引用:
作者rickyliu0222
補充一下,林振漢老師的這本書

裡面也有組合語言

而且,同一個題目,有組合語言的程式,也有c語言的程式

真的是出外旅行,殺人滅口,必備良藥~~~~~~:D:D:D:D:D



<<< 這一篇是開玩笑~打錯的~~~

望請林老師不要介意~~~


我只是塵世中的小小工程師啊~~~~

就請林老師海量海量 :ase :ase :ase

蒼藍的月光 2006-07-21 06:53 PM

感謝yhboy 和 finkel 兩位大大的解惑,小弟了解了

想再請問一下

CLK1: REG 40H.0
CLK2: REG 40H.1
CLK3: REG 40H.2
CLK4: REG 40H.3
CLK5: REG 40H.4
CLK6: REG 40H.5
CLK7: REG 40H.6
CLK8: REG 40H.7

CLR 40H.7
MOV A,#40H
MOV P0,A

那這樣 A 的值還會是 40H(即 0100 0000)嗎!?

另外 finkel 大大您是學 keil C 的嗎!?

蒼藍的月光 2006-07-21 07:02 PM

紅色 LED 32顆 和 藍色 LED 32顆
紅藍色 LED各自從 P0.6出發,各自無限迴圈一直繞(紅藍色 LED
都只亮一顆LED 做移位);都是透過 P0&P1&P2&P3 顯示



.CHIP 8052
;----------------------------------------------
ORG 0000H
LCALL DELAY \ 呼叫延遲時間約 2 秒
LCALL DELAY / 讓電路穩定

;----------------------------------------------
MOV 40H,#DFH \ 紅色LED初始值
MOV 41H,#FFH \ 只有亮P0.6
MOV 42H,#FFH /
MOV 43H,#FFH /
MOV 44H,#DFH \ 藍色LED初始值
MOV 45H,#FFH \ 只有亮P0.6
MOV 46H,#FFH /
MOV 47H,#FFH /
;----------------------------------------------
LOOP:
LCALL L_DATA 呼叫左旋程式,紅色 LED 從 P0.6
LCALL DELAY1 往 P1 P2 P3 移動
MOV A,40H 40H = 紅色 LED P0埠
MOV P0,A
MOV A,41H 41H = 紅色 LED P1埠
MOV P1,A
MOV A,42H 42H = 紅色 LED P2埠
MOV P2,A
MOV A,43H 43H = 紅色 LED P3埠
MOV P3,A
;----------------------------------------------
LCALL R_DATA 呼叫右旋程式,紅色 LED 從 P0.6
MOV A,44H 44H = 藍色 LED P0埠
MOV P0,A
MOV A,45H 45H = 藍色 LED P1埠
MOV P1,A
MOV A,46H 46H = 藍色 LED P2埠
MOV P2,A
MOV A,47H 47H = 藍色 LED P3埠
MOV P3,A
LJMP LOOP 再跳回 LOOP 無限迴圈

;-------------------------------------------
L_DATA: 左旋初始設定
MOV R0,#40H
MOV R1,#43H
CALL L_CHANGE 左旋資料移動
RET
;-------------------------------------------
R_DATA: 右旋初始設定
MOV R0,#44H
MOV R1,#45H
CALL R_CHANGE   右旋資料移動 
RET
;--------------------------------------------
L_CHANGE: 40H和41H和42H和43H 左旋資料移動
MOV A,@R1
RLC A
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
MOV A,@R1
RLC A
MOV @R1,A
RET
;-------------------------------------
R_CHANGE: 44H和45H和46H和47H 右旋資料移動
MOV A,@R1
RRC A
MOV @R1,A
MOV A,@R0
RRC A
MOV @R0,A
INC R0
INC R0
INC R0
MOV A,@R0
RRC A
MOV @R0,A
DEC R0
MOV A,@R0
RRC A
MOV @R0,A
RET
;--------------------------------------
DELAY: 約 1 秒的延遲時間
MOV R5,#20
CD01: MOV R6,#200
CD02: MOV R7,#250
DJNZ R7,$
DJNZ R6,CD02
DJNZ R5,CD01
RET
;--------------------------------------
DELAY1: 約 0.5 秒的延遲時間
MOV R5,#10
CD03: MOV R6,#200
CD04: MOV R7,#250
DJNZ R7,$
DJNZ R6,CD04
DJNZ R5,CD03
RET
;--------------------------------------
END


用記事本寫,用8051編譯,用LINK聯結,但結果是
.....只有右旋有動作;左旋確沒有動作
小弟有各自測試左旋和右旋,動作都正常OK
但現在加在一起卻,只有右旋有動作,小弟哪邊寫錯了嗎!?

asccpu 2006-07-21 08:01 PM

依程式來看左旋不是沒動作,而是被右旋的結果所"取代"。

蒼藍的月光 2006-07-22 12:14 AM

引用:
作者asccpu
依程式來看左旋不是沒動作,而是被右旋的結果所"取代"。


大大小弟不懂的地方就在這

分開執行左旋和右旋都可以

可是為什麼架構在一起就不行!?

可以提示一下小弟哪邊的觀念不對嗎!?@_@!?

蒼藍的月光 2006-07-22 12:25 AM

引用:
作者abc630
建議可以去挑本書來看....這樣比較循序漸進...

樓主有在工作了...買書是在投資自己... :)


大大,小弟覺得自己好像有點是急病亂投醫....XD

學校:老師上課用的(只有一個學期,不是學年唷!!小弟是
讀進修部四技的) 知城 8551/8052單晶片微電腦原理
與應用

小弟還另外買了:旗標 8051單晶片 徹底研究入門篇

旗標 8051單晶片 徹底研究實習篇

旗標 8051單晶片 徹底研究經驗篇

文魁 單晶片 8051 實作入門

全華 單晶片微電腦 8051/8951原理與
應用修訂 4版

總共 6 本.............XD 這樣會不會投資太多了!?@_@!?

asccpu 2006-07-22 12:47 AM

我舉個例子好了,其他的就由你去體會了或是由他人發揮 :D
假設 PORT 0的狀態是 10000001,現在要把bit4變1,但不改其他值,所以最終狀態是 10010001。
原值是81h(稱A值),現在要加入10h(稱B)之值,要如何才得出91h,有點要注意,這不是算術問題,而是位元運算。
上面的程式是A值送出後,再送B值,A的結果被B取代了....

不過,我有疑問,送同一值出去,紅藍不會同時亮嗎?還是????
LED如何接?


所有的時間均為GMT +8。 現在的時間是09:22 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。