想請教8051跑馬燈程式的or&and問題? |
答題得分者是:暗黑破壞神
|
joe0806
一般會員 發表:3 回覆:4 積分:1 註冊:2004-10-11 發送簡訊給我 |
以下是我跑馬燈的程式 ORG 0
MOV R1,#10000000B
MOV R2,#00000001B
START: MOV A,R1
ORL A,R2
MOV P1,A
ACALL DELAY
ACALL LOOP
JMP START
LOOP: MOV A,R1
RR A
MOV R1,A
MOV A,R2
RL A
MOV R2,A
RET
DELAY: MOV R7,#30H
D2: DJNZ R7,D2
RET
END 原先程式的動作是從左右兩邊一直跑到中間然後在從中間回到兩邊
那我現在如果想把動作改成如下:(1表示會亮)
00011000
00111100
01111110
11111111
01111110
00111100
00011000
那程式應該如何改寫才好ㄋ?
請各位高手教教小弟我吧 謝謝
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
1.取兩個BYTE。
BYTE A = 10000000
BYTE B = 00000001
而 mask A = F0
mask B = 0F
A shift right 4
B shift left 4
(A AND mask_A) OR (B AND mask_B) --> 00011000
然後
set Flag C
A shift right 1
set Flag C
B shift left 1
(A AND mask_A) OR (B AND mask_B) --> 00111100
以此類推
|
pdcmg
一般會員 發表:3 回覆:22 積分:20 註冊:2004-11-09 發送簡訊給我 |
|
joe0806
一般會員 發表:3 回覆:4 積分:1 註冊:2004-10-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |