版權宣言:
此為航電二乙 科南大大、承翰大大、球爺大大所提供....
※版權所有 翻印必究※
此程式僅提供期末考試作弊之利用....切勿拿去做商業用途

---------------------------------------------------------------------
;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
---------------------------------------------------------------------

swszg 發表在 痞客邦 留言(1) 人氣()