版權宣言:
此為航電二乙 科南大大、承翰大大、球爺大大所提供....
※版權所有 翻印必究※
此程式僅提供期末考試作弊之利用....切勿拿去做商業用途
---------------------------------------------------------------------
;P99 練習題:兩霹靂燈方向為相反移動
;
;.構想顯示方式:
; 10000001
; 01000010
; 00100100
; 00011000
; 00100100
; 01000010
; 10000001
;
;想法:把R1放入10000000,把R2放入00000001,個別右旋及左旋後做OR閘運算
;
;程式開始:
MOV R1,#10000000B
MOV R2,#00000001B
MOV A,R2
ORL A,R1
MOV P0,A
ACALL DELAY100MS
START:
;把R1右旋 保存R1
MOV A,R1
RR A
MOV R1,A
;把R2左旋 保存R2
MOV A,R2
RL A
MOV R2,A
;對R1、R2做OR閘運算輸出
ORL A,R1
MOV P0,A
ACALL DELAY100MS
SJMP START
;100ms 延遲副程式:
DELAY100MS:
PUSH ACC
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV R0,#194
DELAY100ms_1:
MOV R1,#255
DJNZ R1,$
DJNZ R0,DELAY100ms_1
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP ACC
RET
END
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Intel-8051 Macro Assembler - Version 1.00
PASS1.....
PASS2.....
Lines Assembled : 59 Assembly Errors : 0
---------------------------------------------------------------------
;P99 練習題:由左至右每次移入一顆LED燈,停在其未滿的位置,若全滿就從最右邊由左至右一出一顆LED燈
;
;構想顯示方式:
;LOOP1: 10000000
; 11000000
; 11100000
; 11110000
; 11111000
; 11111100
; 11111110
; 11111111
;LOOP2: 01111111
; 00111111
; 00011111
; 00001111
; 00000111
; 00000011
; 00000001
; 00000000
;
;想法:把R1放入10000000,對R1做右旋後,把其值和R1做OR閘運算,保存其結果至R1,連續八次;把R2放入01111111,對R2做右旋後,把其值和R2做AND閘運算,保存其結果至R2,連續八次
;
;程式開始:
START:
MOV R3,#8
MOV R1,#10000000B
MOV P0,R1
ACALL DELAY100MS
LOOP1:
MOV A,R1
RR A
ORL A,R1
MOV P0,A
MOV R1,A
ACALL DELAY100MS
DJNZ R3,LOOP1
MOV R3,#8
MOV R2,#01111111B
MOV P0,R2
ACALL DELAY100MS
LOOP2:
MOV A,R2
RR A
ANL A,R2
MOV P0,A
MOV R2,A
ACALL DELAY100MS
DJNZ R3,LOOP2
SJMP START
;100ms 延遲副程式:
DELAY100MS:
PUSH ACC
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV R0,#194
DELAY100ms_1:
MOV R1,#255
DJNZ R1,$
DJNZ R0,DELAY100ms_1
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP ACC
RET
END
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Intel-8051 Macro Assembler - Version 1.00
PASS1.....
PASS2.....
Lines Assembled : 78 Assembly Errors : 0
---------------------------------------------------------------------
;P99 練習題:奇偶LED交互閃爍顯示
;
;.構想顯示方式:
; 01010101
; 10101010
;
;想法:把A放入01010101,對暫存器做右旋動作
;
;程式開始:
MOV A,#01010101B
START:
MOV P0,A
RR A
ACALL DELAY100MS
SJMP START
;100ms 延遲副程式:
DELAY100MS:
PUSH ACC
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV R0,#194
DELAY100ms_1:
MOV R1,#255
DJNZ R1,$
DJNZ R0,DELAY100ms_1
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP ACC
RET
END
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Intel-8051 Macro Assembler - Version 1.00
PASS1.....
PASS2.....
Lines Assembled : 38 Assembly Errors : 0
---------------------------------------------------------------------