来源:网上转载 作者:程序匠人
;*****************************************************
;Company :
;File Name : JJ.asm
;Author :
;Create Data : 2006-04-30
;Last Modified : 2006-04-30
;Description :
;Version : 1.0
;*****************************************************
IE EQU 00H
IRQ EQU 01H
TM0 EQU 02H
BTM EQU 03H
TL0 EQU 04H
TH0 EQU 05H
LCDON EQU 07H
PA EQU 08H
PB EQU 09H
PC EQU 0AH
PD EQU 0BH
LVD EQU 0DH
TBR EQU 0EH
INX EQU 0FH
DPL EQU 10H
DPM EQU 11H
DPH EQU 12H
PULLEN EQU 13H
OXS EQU 14H
LPS1 EQU 15H
PACR EQU 16H
PBCR EQU 17H
PCCR EQU 18H
PDCR EQU 19H
TEMP EQU 20H
TEMP0 EQU 21H
TEMP1 EQU 22H
TEMP2 EQU 23H
TEMP3 EQU 24H
TEMP4 EQU 25H
TEMP5 EQU 26H
TEMP6 EQU 27H
FLAG0 EQU 28H
PH0 EQU 29H
PM0 EQU 2AH
PL0 EQU 2BH
PH1 EQU 2CH
PM1 EQU 2DH
PL1 EQU 2EH
FLAG EQU 2FH;
FLAG1 EQU 30H
FLAG2 EQU 31H ;XIAO SHUDIAN BIAOZHI
FLAG3 EQU 32H ;SHI BIE S12 S13
SH EQU 33H ;MAI CHONG DE JI SHU EXAMPLE:20,40,80.160
SM EQU 34H
SL EQU 35H
SUML EQU 36H
SUMM EQU 37H
SUMH EQU 38H
;;;;;;;;;YI WEI BIAN LIANG;;;;;;;;;;;;
LFT_H EQU 39H ;left high nibble register
LFT_L EQU 3AH ;left low nibble register
N EQU 3BH ;variable register(N=1~7)
RUT_H EQU 3CH ;left result high nibble register
RUT_L EQU 3DH ;left result low nibble register
R7 EQU 3EH
RH EQU 3FH
RL EQU 40H
T0 EQU 20H
T1 EQU 21H
T2 EQU 22H
T3 EQU 23H
Q EQU 41H
ORG 0000H
MAIN:;;;;;;;;;;4M QI ZHEN;;;;;;;;;;
ldi PACR,0FH
LDI PBCR,0FH
LDI PB,0000B
LDI T1,0FH
LDI T2,0FH
LDI T3,0FH
LDI RL,00H
LDI RH,00H
LDI OXS,0001B
CALL DELAY5MS
LDI OXS,0011B
CALL DELAY5MS
LDI LPS1,0011B
LDI LVD,0000B
LDI LCDON,0100B
;;;;;;;;;;;;;;;;;;;;;;;
CALL SSTOP
CALL RD24
SBIM RL,0BH
BC TT
CALL DISPLAY
JMP TT1
TT: LDI RL,00H
CALL DISPLAY
TT1: JMP $
;;;;;;;;;;;;;;;;;;;;;;;;;;;
RD24:
LDI PA,1000B
LDI PB,0000B
CALL START24
LDI LFT_L,00H
LDI LFT_H,0AH
CALL SHIFT0
CALL ACK
LDI LFT_L,00H
LDI LFT_H,00H
CALL SHIFT0
CALL ACK
CALL START24
LDI LFT_L,01H
LDI LFT_H,0AH
CALL SHIFT0
CALL ACK
LDI PA,1000B
LDI R7,07H
LDI PA,1000B
LDI PACR,0111B
RD000:
LDI PB,0001B
LDI Q,1000B
AND PA,00H
ADD PA,00H
LDA RL,00H
ADCM RL,00H
LDA RH,00H
ADCM RH,00H
LDI PB,0000B
SBIM R7,01H
BC RD000
RTNI
SHIFT0:
LDI N,07H ;left 7 bit
SHIFT8: LDA LFT_H,00H
STA PA,00H
LDI PB,0001B
SBIM N,01H ;N-1 to judge left is ok ?
BC LEFT
LDI PB,0000B ;N>0,jump to LEFT
JMP ENDLEFT ;N<0,left ok! jump to ENDLEFT
LEFT:
LDA LFT_L,00H ;left low nibble one bit
ADDM LFT_L,00H
LDA LFT_H,00H ;left high nibble one bit
ADCM LFT_H,00H
LDI PB,0000B
JMP SHIFT8 ;jump to left again
ENDLEFT: RTNI ;return to main program
START24:DI PA,0000B
LDI PA,1000B
LDI PB,0001B
LDI PA,0000B
LDI PB,0000B
RTNI
SSTOP: LDI PA,0000B
LDI PB,0001B
LDI PA,1000B
RTNI
ACK: LDI PB,0001B
LDI PB,0000B
RTNI
DELAY2:
NOP
NOP
NOP
NOP
RTNI
;;;;;;YAN SHI;;;;;;;;;;
DELAY5MS:
LDI T2,0FH
DELAY1: LDI T1,0fH
DELAY0: LDI T0,0FH
DELAY: SBIM T0,01H
BC DELAY
SBIM T1,01H
BC DELAY0
SBIM T2,01H
BC DELAY1
RTNI
;;;;;;;;;;;;;;;;;;
DISPLAY:
LDI DPH,06H
LDI DPM,00H
LDI DPL,08H
LDI TBR,0EH
LDA RL,00H
CALL MARK
STA INX,00H
ADIM DPL,01H
LDA TBR,00H
STA INX,00H
RTNI
ORG 02DFH
MARK:
TJMP
RTNW 07H,0DH ;0
RTNW 06H,00H ;1
RTNW 03H,0EH ;2
RTNW 07H,0AH ;3
RTNW 06H,03H ;4
RTNW 05H,0BH ;5
RTNW 05H,0FH ;6
RTNW 07H,00H ;7
RTNW 07H,0FH ;8
RTNW 07H,0BH ;9
END
PA0----SDA PB0----SCL PB1----WP
;Company :
;File Name : JJ.asm
;Author :
;Create Data : 2006-04-30
;Last Modified : 2006-04-30
;Description :
;Version : 1.0
;*****************************************************
IE EQU 00H
IRQ EQU 01H
TM0 EQU 02H
BTM EQU 03H
TL0 EQU 04H
TH0 EQU 05H
LCDON EQU 07H
PA EQU 08H
PB EQU 09H
PC EQU 0AH
PD EQU 0BH
LVD EQU 0DH
TBR EQU 0EH
INX EQU 0FH
DPL EQU 10H
DPM EQU 11H
DPH EQU 12H
PULLEN EQU 13H
OXS EQU 14H
LPS1 EQU 15H
PACR EQU 16H
PBCR EQU 17H
PCCR EQU 18H
PDCR EQU 19H
TEMP EQU 20H
TEMP0 EQU 21H
TEMP1 EQU 22H
TEMP2 EQU 23H
TEMP3 EQU 24H
TEMP4 EQU 25H
TEMP5 EQU 26H
TEMP6 EQU 27H
FLAG0 EQU 28H
PH0 EQU 29H
PM0 EQU 2AH
PL0 EQU 2BH
PH1 EQU 2CH
PM1 EQU 2DH
PL1 EQU 2EH
FLAG EQU 2FH;
FLAG1 EQU 30H
FLAG2 EQU 31H ;XIAO SHUDIAN BIAOZHI
FLAG3 EQU 32H ;SHI BIE S12 S13
SH EQU 33H ;MAI CHONG DE JI SHU EXAMPLE:20,40,80.160
SM EQU 34H
SL EQU 35H
SUML EQU 36H
SUMM EQU 37H
SUMH EQU 38H
;;;;;;;;;YI WEI BIAN LIANG;;;;;;;;;;;;
LFT_H EQU 39H ;left high nibble register
LFT_L EQU 3AH ;left low nibble register
N EQU 3BH ;variable register(N=1~7)
RUT_H EQU 3CH ;left result high nibble register
RUT_L EQU 3DH ;left result low nibble register
R7 EQU 3EH
RH EQU 3FH
RL EQU 40H
T0 EQU 20H
T1 EQU 21H
T2 EQU 22H
T3 EQU 23H
Q EQU 41H
ORG 0000H
MAIN:;;;;;;;;;;4M QI ZHEN;;;;;;;;;;
ldi PACR,0FH
LDI PBCR,0FH
LDI PB,0000B
LDI T1,0FH
LDI T2,0FH
LDI T3,0FH
LDI RL,00H
LDI RH,00H
LDI OXS,0001B
CALL DELAY5MS
LDI OXS,0011B
CALL DELAY5MS
LDI LPS1,0011B
LDI LVD,0000B
LDI LCDON,0100B
;;;;;;;;;;;;;;;;;;;;;;;
CALL SSTOP
CALL RD24
SBIM RL,0BH
BC TT
CALL DISPLAY
JMP TT1
TT: LDI RL,00H
CALL DISPLAY
TT1: JMP $
;;;;;;;;;;;;;;;;;;;;;;;;;;;
RD24:
LDI PA,1000B
LDI PB,0000B
CALL START24
LDI LFT_L,00H
LDI LFT_H,0AH
CALL SHIFT0
CALL ACK
LDI LFT_L,00H
LDI LFT_H,00H
CALL SHIFT0
CALL ACK
CALL START24
LDI LFT_L,01H
LDI LFT_H,0AH
CALL SHIFT0
CALL ACK
LDI PA,1000B
LDI R7,07H
LDI PA,1000B
LDI PACR,0111B
RD000:
LDI PB,0001B
LDI Q,1000B
AND PA,00H
ADD PA,00H
LDA RL,00H
ADCM RL,00H
LDA RH,00H
ADCM RH,00H
LDI PB,0000B
SBIM R7,01H
BC RD000
RTNI
SHIFT0:
LDI N,07H ;left 7 bit
SHIFT8: LDA LFT_H,00H
STA PA,00H
LDI PB,0001B
SBIM N,01H ;N-1 to judge left is ok ?
BC LEFT
LDI PB,0000B ;N>0,jump to LEFT
JMP ENDLEFT ;N<0,left ok! jump to ENDLEFT
LEFT:
LDA LFT_L,00H ;left low nibble one bit
ADDM LFT_L,00H
LDA LFT_H,00H ;left high nibble one bit
ADCM LFT_H,00H
LDI PB,0000B
JMP SHIFT8 ;jump to left again
ENDLEFT: RTNI ;return to main program
START24:DI PA,0000B
LDI PA,1000B
LDI PB,0001B
LDI PA,0000B
LDI PB,0000B
RTNI
SSTOP: LDI PA,0000B
LDI PB,0001B
LDI PA,1000B
RTNI
ACK: LDI PB,0001B
LDI PB,0000B
RTNI
DELAY2:
NOP
NOP
NOP
NOP
RTNI
;;;;;;YAN SHI;;;;;;;;;;
DELAY5MS:
LDI T2,0FH
DELAY1: LDI T1,0fH
DELAY0: LDI T0,0FH
DELAY: SBIM T0,01H
BC DELAY
SBIM T1,01H
BC DELAY0
SBIM T2,01H
BC DELAY1
RTNI
;;;;;;;;;;;;;;;;;;
DISPLAY:
LDI DPH,06H
LDI DPM,00H
LDI DPL,08H
LDI TBR,0EH
LDA RL,00H
CALL MARK
STA INX,00H
ADIM DPL,01H
LDA TBR,00H
STA INX,00H
RTNI
ORG 02DFH
MARK:
TJMP
RTNW 07H,0DH ;0
RTNW 06H,00H ;1
RTNW 03H,0EH ;2
RTNW 07H,0AH ;3
RTNW 06H,03H ;4
RTNW 05H,0BH ;5
RTNW 05H,0FH ;6
RTNW 07H,00H ;7
RTNW 07H,0FH ;8
RTNW 07H,0BH ;9
END
PA0----SDA PB0----SCL PB1----WP