close

LED  

在網路上看到有人提問這張圖如何處理,覺得相當有趣與一般書上所提的範例皆不相同.

想試一下程度,這是我的第一支Assembly程式,程式碼如下: 

 ORG 0000H
 AJMP MAIN
 ORG 000BH
 AJMP TIMER0_INT
MAIN:
 MOV TMOD,#00000000B
 MOV TL0,#(8192-5000) MOD 32
 MOV TH0,#(8192-5000)/32
 MOV R0,#00
 MOV DPTR,#TABLE
 MOV R1,#00
 MOV P1,#11111101B
 SETB ET0
 SETB EA
 SETB TR0

LOOP: AJMP LOOP 
;

ST0:
 CJNE R0,#1,ST1
 ACALL LED2
ST1:
 CJNE R0,#2,ST2
 ACALL LED2
ST2:
 CJNE R0,#4,ST3
 ACALL LED2
ST3: 
 CJNE R0,#10,ST4
 ACALL LED1
ST4:
 CJNE R0,#12,ST5
 ACALL LED1
ST5:
 CJNE R0,#16,ST6
 ACALL LED1
ST6:
 CJNE R0,#18,ST7
 ACALL LED1
ST7: 
 CJNE R0,#24,ST8
 ACALL LED1
ST8: 
 CJNE R0,#30,ST9
 ACALL LED1
ST9: 
 CJNE R0,#48,ST10
 ACALL LED1
ST10:
 CJNE R0,#64,ST11
 ACALL LED2
ST11: 
 CJNE R0,#82,ST12
 ACALL LED2
ST12: 
 CJNE R0,#100,ST13
 ACALL LED2
ST13: 
 CJNE R0,#106,ST14
 ACALL LED2
ST14: 
 CJNE R0,#124,ST15
 ACALL LED2
 MOV R0,#0
 MOV R1,#0
ST15:
 RETI
//       AJMP LOOP

TIMER0_INT:
 MOV TL0,#(8192-5000) MOD 32
 MOV TH0,#(8192-5000)/32
 INC R0
 ACALL  ST0
 RETI
;
LED2:
 MOV A,R1
 MOVC A,@A+DPTR
 MOV P2,A
 INC R1
 RET
;
LED1:
 MOV A,R1
 MOVC A,@A+DPTR
 MOV P1,A
 INC R1
 RET
;


TABLE: DB 11101111B ;P2.4 0.5MS
 DB 01111111B ;P2.7 1MS
 DB  10111111B  ;P2.6 2MS
 DB 11111100B ;P1.0 & P1.1 5MS
 DB 11111001B ;P1.2 & P1.1 6MS
 DB 11110101B ;P1.3 & P1.1 8MS
 DB 11101101B ;P1.4 & P1.1 9MS
 DB 10111101B ;P1.6 & P1.1 12MS
 DB 01111101B ;P1.7 & P1.1 15MS
 DB 11011101B ;P1.5 & P1.1 24MS
 DB 11111110B ;P2.0 32MS
 DB 11110111B ;P2.3 41MS
 DB 11111101B ;P2.1 50MS
 DB 11011111B ;P2.5 53MS
OVER: DB 11111011B ;P2.2 62MS
;
 END

arrow
arrow
    全站熱搜

    linear 發表在 痞客邦 留言(0) 人氣()