📄 中西文混合显示.asm
字号:
;RD?DB0-DB7;RE0?A0,RE1?/RD,RE2?/WR,??CE??
;????INTEL8080??,?????M6800?????
;???????
LIST P=16F877
#INCLUDE<P16F877.INC>
COM EQU 20H
DAT EQU 21H
READA EQU 22H
COUNT0 EQU 23H
COUNT1 EQU 24H
COUNT2 EQU 25H
NCURADH EQU 26H
NCURADL EQU 27H
CURADDR EQU 28H
OX EQU 2AH
OY EQU 2BH
OYH EQU 2CH
OYH0 EQU 2DH
ORG 00H
NOP
ORG 10H
GOTO STAR
TABSY ;DMF50081?????
ADDWF PCL,1
RETLW 30H ;??LCD,8*8??,80H-9FH,??????
RETLW 87H ;?????7
RETLW 07H ;?????7
RETLW 27H ;???????39
RETLW 42H ;??????????50
RETLW 0F0H ;LCD?????239,
RETLW 28H
RETLW 00H ;?????????????????40
TABSC
ADDWF PCL,1
RETLW 00H
RETLW 00H
RETLW 0F0H ;??????????0000H,??0F0H?
RETLW 00H
RETLW 040H
RETLW 0F0H ;??????????04B0H,??0F0H?
RETLW 00H
RETLW 80H ;??????????2A30H
RETLW 00H
RETLW 00H ;??????????2EE0H
CTAB
ADDWF PCL,1
RETLW 53H ;S
RETLW 65H ;e
RETLW 76H ;v
RETLW 69H ;i
RETLW 63H ;c
RETLW 65H ;e
RETLW 72H ;r
RETLW 20H ;??
RETLW 54H ;T
RETLW 45H ;E
RETLW 4CH ;L
RETLW 3AH ;:
RETLW 00H
RETLW 30H ;0
RETLW 31H ;1
RETLW 30H ;0
RETLW 36H ;6
RETLW 32H ;2
RETLW 37H ;7
RETLW 38H ;8
RETLW 30H ;0
RETLW 38H ;8
RETLW 36H ;6
RETLW 36H ;6
CH_TAB
ADDWF PCL,1
RETLW 040H
RETLW 040H
RETLW 20H
RETLW 20H
RETLW 27H
RETLW 0FEH
RETLW 09H
RETLW 20H
RETLW 89H
RETLW 20H
RETLW 52H
RETLW 7CH
RETLW 52H
RETLW 44H
RETLW 016H
RETLW 0A8H
RETLW 2BH
RETLW 98H
RETLW 22H
RETLW 50H
RETLW 0E2H
RETLW 20H
RETLW 22H
RETLW 30H
RETLW 22H
RETLW 50H
RETLW 22H
RETLW 88H
RETLW 23H
RETLW 0EH
RETLW 22H
RETLW 04H
WRINSTR
MOVF COM,0
NOP
MOVWF PORTD
BSF PORTE,0 ;??A0=1
BSF PORTE,1;/RD=1
BCF PORTE,2;/WR=0
BCF PORTC,3
NOP
NOP
CALL DELAY
CALL DELAY
BSF PORTC,3
RETURN
;???????????
WRDATA
MOVF DAT,0
NOP
MOVWF PORTD
BCF PORTE,0 ;??A0=0
BSF PORTE,1;/RD=1
BCF PORTE,2 ;/WR=0
BCF PORTC,3
NOP
NOP
CALL DELAY
CALL DELAY
BSF PORTC,3
RETURN
;????????????
REDATA
BSF STATUS,RP0
MOVLW 0FFH
MOVWF TRISD ;??D????
BCF STATUS,RP0
BSF PORTE,0;??A0=1
BCF PORTE,1;/RD=0
BSF PORTE,2;/WR=1
BCF PORTC,3
NOP
CALL DELAY
MOVF PORTD,0
MOVWF READA
BSF PORTC,3
BSF STATUS,RP0
MOVLW 00H
MOVWF TRISD
BCF STATUS,RP0
RETURN
DELAY
MOVLW 0FH
MOVWF COUNT2
DELAY_1 DECFSZ COUNT2,1
GOTO DELAY_1
RETURN
;??????
INIT
BSF STATUS,RP0 ;?????
MOVLW 87H
MOVWF ADCON1
CLRF TRISD ;0=OUT,1=IN
CLRF TRISE ;D?,E?????????????
CLRF TRISC
BCF STATUS,RP0
CLRF PORTD
CLRF PORTE
BSF PORTC,3
CLRF DAT
CLRF COM
CLRF READA
INITSY MOVLW 40H ;SYSTEMSET???
MOVWF COM
CALL WRINSTR
MOVLW 08H
MOVWF COUNT0 ;??????
CLRF COUNT1 ;??????
INITSY1 MOVF COUNT1,0
CALL TABSY ;?SYSTEMSET?
MOVWF DAT
CALL WRDATA
INCF COUNT1,1
DECFSZ COUNT0,1 ;P1-P8??????
GOTO INITSY1
INITSC MOVLW 44H ;SCROLL???
MOVWF COM
CALL WRINSTR
MOVLW 0AH
MOVWF COUNT0
CLRF COUNT1
INITSC1 MOVF COUNT1,0
CALL TABSC ;?SCROLL?
MOVWF DAT
CALL WRDATA
INCF COUNT1,1
DECFSZ COUNT0,1 ;P1-P10??????
GOTO INITSC1
MOVLW 5AH ;HDOT SCR??
MOVWF COM
CALL WRINSTR
MOVLW 00H ;????P1
MOVWF DAT
CALL WRDATA ;????
MOVLW 5BH ;OVLAY??
MOVWF COM
CALL WRINSTR
MOVLW 00H ;????P1
MOVWF DAT
CALL WRDATA ;????
MOVLW 59H ;DISP ON/OFF??
MOVWF COM
CALL WRINSTR
MOVLW 56H ;????,??????,???,???
MOVWF DAT
CALL WRDATA ;????
MOVLW 4CH ;CSRDIR-RIGHT??
MOVWF COM
CALL WRINSTR ;?????????????
RETURN
CLEAR
MOVLW 42H
MOVWF COM
CALL WRINSTR
CLRF COUNT0
CLRF COUNT1
CLR CLRF DAT
CALL WRDATA
DECFSZ COUNT0,1
GOTO CLR
DECFSZ COUNT1,1
GOTO CLR
RETURN
COUNTSCR
CLRF OYH ;????
BCF STATUS,0
RLF OY,1
RLF OYH,1
BCF STATUS,0
RLF OY,1
RLF OYH,1
BCF STATUS,0
RLF OY,1
RLF OYH,1
MOVF OYH,0
MOVWF OYH0 ;OY*8?????
MOVF OY,0 ;OY*8?????W?
BCF STATUS,0
RLF OY,1
RLF OYH,1
BCF STATUS,0
RLF OY,1 ;OY*32???
RLF OYH,1 ;OY*32???
BCF STATUS,0
ADDWF OY,0 ;OY*40?????OY?
BTFSC STATUS,0
INCF OYH,1 ;????????
ADDWF OX,1 ;????????OX?
BTFSC STATUS,0
INCF OYH,1 ;????????
MOVF OYH0,0
ADDWF OYH,0 ;OY*40???
ADDLW 40H ;?????????SAD2H
MOVWF OY ;????????OY?
MOVLW 46H ;CSRW,??????
MOVWF COM
CALL WRINSTR
MOVF OX,0 ;CSR-000H VRAM1
MOVWF DAT
CALL WRDATA ;????
MOVF OY,0 ;CSR-000H VRAM1
MOVWF DAT
CALL WRDATA
RETURN
DIS_CH
MOVLW 5DH ;CSRFORM??,????????
MOVWF COM
CALL WRINSTR
MOVLW 07H ;?????????CSX=8
MOVWF DAT
CALL WRDATA
MOVLW 07H ;???????,?????CSY=8
MOVWF DAT
CALL WRDATA
MOVLW 5BH ;OVLAY??
MOVWF COM
CALL WRINSTR
MOVLW 00H ;????P1
MOVWF DAT
CALL WRDATA ;????
MOVLW 47H ;???????
MOVWF COM
CALL WRINSTR
CALL REDATA
MOVF READA,0
MOVWF NCURADL
CALL REDATA
MOVF READA,0
MOVWF NCURADH
MOVLW 4FH ;????????+AP
MOVWF COM
CALL WRINSTR
MOVLW 42H ;?????
MOVWF COM
CALL WRINSTR
CLRF CURADDR ;????,????????????
DIS_C1 MOVF CURADDR,0
CALL CH_TAB
MOVWF DAT
CALL WRDATA
INCF CURADDR,1
INCF CURADDR,1
BTFSS CURADDR,5
GOTO DIS_C1
MOVLW 46H ;??????
MOVWF COM
CALL WRINSTR
MOVLW 01H
ADDWF NCURADL,1
MOVF NCURADL,0
MOVWF DAT
CALL WRDATA
MOVF NCURADH,0
MOVWF DAT
CALL WRDATA
MOVLW 42H ;?????
MOVWF COM
CALL WRINSTR
MOVLW 01H
MOVWF CURADDR
DIS_C2 MOVF CURADDR,0
CALL CH_TAB
MOVWF DAT
CALL WRDATA
INCF CURADDR,1
INCF CURADDR,1
BTFSS CURADDR,5
GOTO DIS_C2
RETURN
;????????????(???????)
DIS_EN
MOVLW 5DH ;CSRFORM??,????????
MOVWF COM
CALL WRINSTR
MOVLW 07H ;?????????CSX=8
MOVWF DAT
CALL WRDATA
MOVLW 87H ;???????,?????CSY=8
MOVWF DAT
CALL WRDATA
MOVLW 5BH ;OVLAY
MOVWF COM
CALL WRINSTR
MOVLW 01H ;
MOVWF DAT
CALL WRDATA
MOVLW 59H ;DISP ON/OFF
MOVWF COM
CALL WRINSTR
MOVLW 56H ;??1-4????
MOVWF DAT
CALL WRDATA
MOVLW 46H ;CSRW??
MOVWF COM
CALL WRINSTR
MOVLW 00H ;????CSR=0000H
MOVWF DAT ;???????00H
CALL WRDATA
CLRF DAT ;???????00H
CALL WRDATA
MOVLW 4CH ;CSRDIR??
MOVWF COM
CALL WRINSTR
MOVLW 42H ;MWRITE??
MOVWF COM
CALL WRINSTR
MOVLW 18H
MOVWF COUNT0
CLRF COUNT1
DISLOOP MOVF COUNT1,0
CALL CTAB ;??
MOVWF DAT
CALL WRDATA
INCF COUNT1,1
DECFSZ COUNT0,1 ;??????
GOTO DISLOOP
RETURN
STAR
CALL INIT
CALL CLEAR
CHIN CALL DIS_EN
MOVLW 010H
MOVWF OX
MOVLW 046H
MOVWF OY
CALL COUNTSCR
CALL DIS_CH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -