版權宣言: 此為航電二乙 科南大大、承翰大大、球爺大大所提供.... ※版權所有 翻印必究※ 此程式僅提供期末考試作弊之利用....切勿拿去做商業用途 --------------------------------------------------------------------- ;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 ---------------------------------------------------------------------
全站熱搜