- 最後登錄
- 2023-6-6
- 在線時間
- 49 小時
- 註冊時間
- 2007-7-13
- 閱讀權限
- 20
- 精華
- 0
- UID
- 1791008
- 帖子
- 192
- 積分
- 835 點
- 潛水值
- 27826 米
| 最近在玩8051,看到你的題目跟一般書上提到的亮燈方式不同,先給你assembly的碼.
要調時間自己接示波器了.寫得不好不要鞭我,這是我第一隻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
複製代碼 ... |
|