- 已加入
- 5/19/05
- 訊息
- 1,601
- 互動分數
- 0
- 點數
- 0
- 年齡
- 38
就是= =~老師出了這道習題
把以下的8051單鏡片的程式碼修改成倒數模式
以及把16進制改成10進制
這是一個16進制的七段顯示器的計數程式
有大大可以教一下嗎?
怎樣改 還有改成這樣的用意在哪q口q?
我不想只要答案 我還想知道改的用意Q口Q~
因為我也想要學Q_Q~~
還有當中的
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
這兩段程式是在做啥的阿Q口Q?
--------------------------我是國界-----------------------------------
ICE_START EQU 1000H
Crystal EQU 11059200
DelayCnt EQU 65536-(8000/108*100)
Addr7seg EQU 0F900H
D7SEG EQU 20H
DATA_7SEGx1 EQU 30H
DATA_7SEGx10 EQU 31H
NUMCNT EQU 33H
ORG ICE_START
AJMP RESET
ORG ICE_START+0BH
AJMP TIMER0
;掃描顯示
TIMER0:
PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
MOV DPTR,#Addr7seg
MOV A,#0FFH
MOVX @DPTR,A
CPL D7SEG.4
CPL D7SEG.5
MOV C,D7SEG.4
MOV P1.4,C
MOV C,D7SEG.5
MOV P1.5,C
ACALL DESPLAY_7seg
POP DPH
POP DPL
POP ACC
POP PSW
RETI
RESET:
;初始化
MOV SP,#70H
MOV D7SEG,#0EFH
MOV TMOD,#01H
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
ANL P1,#0CFH
ORL P1,#10H
MOV DATA_7SEGx1,#0
MOV DATA_7SEGx10,#0
SETB EA
SETB ET0
SETB TR0
MAIN: INC R1
MOV A,R1
ANL A,#0FH
MOV DPTR,#NumTAB
MOVC A,@A+DPTR
MOV DATA_7SEGx1,A
MOV A,R1
SWAP A
ANL A,#0FH
MOV DPTR,#NumTAB
MOVC A,@A+DPTR
MOV DATA_7SEGx10,A
MOV R5,#2
Loop: DJNZ R7,Loop
DJNZ R6,Loop
DJNZ R5,Loop
AJMP MAIN
;顯示
DESPLAY_7seg:
DESPLAY0:
JB P1.4,DESPLAY1
PUSH ACC
MOV A,DATA_7SEGx1
JMP DESPLAY
DESPLAY1:
JB P1.5,DESPLAY_Exit
PUSH ACC
MOV A,DATA_7SEGx10
JMP DESPLAY
DESPLAY:
PUSH DPL
PUSH DPH
MOV DPTR,#Addr7seg
MOVX @DPTR,A
POP DPH
POP DPL
POP ACC
DESPLAY_Exit:
RET
NumTAB:
DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 088H ;A
DB 083H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 086H ;E
DB 08EH ;F
END
--------------------------我是國界------------------------
可以請大大教小弟我嗎Q口Q~~小弟查課本查半天真的想不出所以然來Q_Q~
把以下的8051單鏡片的程式碼修改成倒數模式
以及把16進制改成10進制
這是一個16進制的七段顯示器的計數程式
有大大可以教一下嗎?
怎樣改 還有改成這樣的用意在哪q口q?
我不想只要答案 我還想知道改的用意Q口Q~
因為我也想要學Q_Q~~
還有當中的
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
這兩段程式是在做啥的阿Q口Q?
--------------------------我是國界-----------------------------------
ICE_START EQU 1000H
Crystal EQU 11059200
DelayCnt EQU 65536-(8000/108*100)
Addr7seg EQU 0F900H
D7SEG EQU 20H
DATA_7SEGx1 EQU 30H
DATA_7SEGx10 EQU 31H
NUMCNT EQU 33H
ORG ICE_START
AJMP RESET
ORG ICE_START+0BH
AJMP TIMER0
;掃描顯示
TIMER0:
PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
MOV DPTR,#Addr7seg
MOV A,#0FFH
MOVX @DPTR,A
CPL D7SEG.4
CPL D7SEG.5
MOV C,D7SEG.4
MOV P1.4,C
MOV C,D7SEG.5
MOV P1.5,C
ACALL DESPLAY_7seg
POP DPH
POP DPL
POP ACC
POP PSW
RETI
RESET:
;初始化
MOV SP,#70H
MOV D7SEG,#0EFH
MOV TMOD,#01H
MOV TH0,#High(DelayCnt)
MOV TL0,#Low(DelayCnt)
ANL P1,#0CFH
ORL P1,#10H
MOV DATA_7SEGx1,#0
MOV DATA_7SEGx10,#0
SETB EA
SETB ET0
SETB TR0
MAIN: INC R1
MOV A,R1
ANL A,#0FH
MOV DPTR,#NumTAB
MOVC A,@A+DPTR
MOV DATA_7SEGx1,A
MOV A,R1
SWAP A
ANL A,#0FH
MOV DPTR,#NumTAB
MOVC A,@A+DPTR
MOV DATA_7SEGx10,A
MOV R5,#2
Loop: DJNZ R7,Loop
DJNZ R6,Loop
DJNZ R5,Loop
AJMP MAIN
;顯示
DESPLAY_7seg:
DESPLAY0:
JB P1.4,DESPLAY1
PUSH ACC
MOV A,DATA_7SEGx1
JMP DESPLAY
DESPLAY1:
JB P1.5,DESPLAY_Exit
PUSH ACC
MOV A,DATA_7SEGx10
JMP DESPLAY
DESPLAY:
PUSH DPL
PUSH DPH
MOV DPTR,#Addr7seg
MOVX @DPTR,A
POP DPH
POP DPL
POP ACC
DESPLAY_Exit:
RET
NumTAB:
DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 088H ;A
DB 083H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 086H ;E
DB 08EH ;F
END
--------------------------我是國界------------------------
可以請大大教小弟我嗎Q口Q~~小弟查課本查半天真的想不出所以然來Q_Q~