|
中颖SH69P53的LCD驱动程序
; Test self SH69P53,ram(192*4), ROM(3072*16), Timer0&1, ; ADC function program ;************************* list p=69P56 ;************************* IE EQU 00H ; IEX, IET0, IET1, IEP IRQ EQU 01H TM0 EQU 02H TM1 EQU 03H TL0 EQU 04H TH0 EQU 05H TL1 EQU 06H TH1 EQU 07H PORTA EQU 08H PORTB EQU 09H PORTC EQU 0AH PORTD EQU 0BH PORTE EQU 0CH PPHL EQU 0DH ; PULLEN, PH/PL, OXS(1:OSCX, 0:OSC), OXON TBR EQU 0EH INX EQU 0FH DPL EQU 10H DPM EQU 11H DPH EQU 12H T0SE EQU 13H PBIE EQU 14H PBIF EQU 15H ALM EQU 16H AEC EQU 17H PAXOUT EQU 18H PBXOUT EQU 19H PCXOUT EQU 1AH PDXOUT EQU 1BH PEXOUT EQU 1CH EL EQU 1DH WDT EQU 1EH ; EQU 1FH VACR EQU 20H ; BIT3=VREFS, BIT[2:0]=ACR2~0 ADCS EQU 21H ; BIT3=ADCON, BIT[2:0]=CH2~1 GOT EQU 22H ; BIT3=GO/DONEB, BIT2&BIT1=TADC1&0, BIT0=ADCS ADCDL EQU 23H ADCDH EQU 24H LCD EQU 25H ; , LCDON, RLCD[1:0](Bias Resistor) LPS EQU 26H ; LPS[1:0], DUTY[1:0] LVD EQU 27H ; LVD, SEG=OUTPUT, PE=SEG, PD=SEG
PWM0 EQU 00H ; +7 PWM1 EQU 01H ; +7 PP0L EQU 02H ; +7 PP0M EQU 03H ; +7 PP0H EQU 04H ; +7 PD0L EQU 05H ; +7 PD0M EQU 06H ; +7 PD0H EQU 07H ; +7 PP1L EQU 08H ; +7 PP1M EQU 09H ; +7 PP1H EQU 0AH ; +7 PD1L EQU 0BH ; +7 PD1M EQU 0CH ; +7 PD1H EQU 0DH ; +7 RDT1 EQU 0EH ; +7 RDT2 EQU 0FH ; +7 RDT3 EQU 10H ; +7 RDT4 EQU 11H ; +7
; ADRn ADR0 EQU 060H ADR1 EQU ADR0+01h ADR2 EQU ADR0+02h ADR3 EQU ADR0+03h ADR4 EQU ADR0+04h ADR5 EQU ADR0+05h ADR6 EQU ADR0+06h ADR7 EQU ADR0+07h ADR8 EQU ADR0+08h ADR9 EQU ADR0+09h ADRA EQU ADR0+0Ah ADRB EQU ADR0+0BH ADRC EQU ADR0+0CH ADRE EQU ADR0+0EH ADRF EQU ADR0+0FH
TFLG EQU 040H CT0 EQU 041H CT1 EQU 042H CTP EQU 043H CT EQU 044H
TEMP0 EQU 028H
; SELF TEST FLAG AS NORMAL RAM FLG0 EQU 050H FLG1 EQU 051H FLG2 EQU 052H FLG3 EQU 053H FLG4 EQU 054H FLGA EQU 055H FLGB EQU 056H FLGC EQU 057H FLGD EQU 058H FLGE EQU 059H FLGF EQU 05AH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 0000H PROGRAM: JMP POWERON NOP RTNI RTNI NOP
ORG 0005H POWERON: ; LDA WDT,0 ; BA3 T_WDT LDI PAXOUT,0FH ; PORTA OUTPUT ENABLE LDI PBXOUT,0FH ; PORTB OUTPUT ENABLE ; LDI PCXOUT,0FH ; PORTC OUTPUT ENABLE LDI PDXOUT,0FH ; PORTD OUTPUT ENABLE LDI PORTD,00H LDI PEXOUT,0FH ; PORTE OUTPUT ENABLE LDI TM0,03H ; LDA WDT,0 ; BA3 WDT_RST
LDI CT0,00H LDI CT1,00H LDI CT,00H LDI FLGA,00H STA FLGB,0 STA FLGC,0 STA FLGD,0 STA FLGE,0 STA TFLG,0
; JMP TIME_L1 ; JMP T_TIMER ; JMP T_PINT ; JMP VIN_PH ; JMP T_ALM ; JMP T_WDT
;****************************************************************** ORT OUTPUT TEST ;***************** T_PORT: NOP NOP NOP NOP LDA WDT,0 LDI PORTA,0FH LDI PORTB,0FH LDI PORTC,0FH LDI PORTD,0FH LDI PORTE,0FH NOP NOP NOP NOP NOP NOP LDA WDT,0 LDI PORTA,00H LDI PORTB,00H LDI PORTC,00H LDI PORTD,00H LDI PORTE,00H ADIM CT,01H BNC T_PORT ADIM CT0,01H BNC T_PORT+2 ADIM CT1,01H BNC T_PORT+4 LDA WDT,0 BA3 $+2 JMP $+2 STOP LDA TFLG,0 BNZ $+6 LDI PPHL,0001B ; OSCX ON CALL DLAY5MS LDI PPHL,0011B ; SYSCLK=OSCX LDI TFLG,0FH JMP T_PORT LDI TFLG,00H LDI TM0,03H ; 1/32, 4/32768Hz*32(03H)*256=1s ; LDI TL0,00H ; LDI TH0,00H ; LDI IRQ,00H ANDIM PBXOUT,1010B ; PORTB.2&.0=INPUT ORIM PPHL,1100B ; PULL UP ON LDI PORTB,0101B ; PORTB.2&.0=INPUT PULL HIGH NOP LDA WDT,0 LDA PORTB,0 STA FLGB,0 EORIM FLGB,0101B BNZ START+4 ; RUN=OSCX(FFH) ANDIM PPHL,1100B ; OSCX OFF NOP ; JMP $ ; JMP T_PORT JMP START ; RUN=OSC(00H) ;****************************************************************** ;TEST START ;***************** START: LDI FLG1,00H LDI FLG0,00H CALL DISPLAY JMP T_LCD LDI FLG1,0FH LDI FLG0,0FH CALL DISPLAY
T_LCD: ; JMP T_T0 LDI LCD,0100B ; LCD ON ; LDI DPH,06H ; LDI DPM,00H ; LDI DPL,00H ; LDI INX,0FH ; LDI DPL,01H ; LDI INX,0FH ; LDI LPS,0011B ; LDI LVD,0011B ; NOP LDI PORTD,00H LDI PORTE,00H ; CALL DLY100 ; LDI PORTA,00H ; CALL DLY500 ; JMP $-5 ; LDI LCD,00H ; NOP ; NOP ; NOP ; STOP ; NOP ; NOP ; JMP $-1 ;**************************************************************** ;TEST LCDRAM TSLCD: LDI FLG2,0DH ; TEST LCDRAM($300H~$31DH, $328H~$344H) LDI FLG1,0DH ;(20) LDI FLG0,00H CALL DISPLAY CALL DLY500 LDI LVD,00H LDI LPS,0000B LCD_L0: LDA LVD,0 STA FLG1,0 LDA LPS,0 STA FLG0,0 CALL DISPLAY NOP CALL LCDTEST ADI LPS,01H BA2 $+3 STA LPS,0 JMP LCD_L0 LDI LPS,07H LCD_L1: LDA LVD,0 STA FLG1,0 LDA LPS,0 STA FLG0,0 CALL DISPLAY NOP CALL LCDTEST ADIM LPS,04H BC $+2 JMP LCD_L1 ADI LVD,01H BA2 $+3 STA LVD,0 JMP LCD_L1-1 LDI LVD,0111B STA FLG1,0 LDI TEMP0,0FH STA FLG0,0 CALL DISPLAY CALL LCDOUT SBIM TEMP0,01H BC $-4
JMP START JMP T_T0 ;****************************** LCDTEST: LDI TEMP0,0FH ; CALL RAMTEST1 ; CALL DLY500 ; SBIM TEMP0,01H ; BC $-3 CALL RAMTEST2 RTNI LCDOUT: ; SCAN OUTPUT $358H~$36BH NOP LDI DPH,06H LDI DPM,00H LDI DPL,00H LDI INX,01H LDI DPL,01H LDI INX,02H LDI DPL,02H LDI INX,04H LDI DPL,03H LDI INX,08H LDI DPL,04H LDI INX,03H LDI DPL,05H LDI INX,05H LDI DPL,06H LDI INX,09H LDI DPL,07H LDI INX,0AH LDI DPM,05H LDI DPL,08H RAM_L0: LDA TEMP0,0 ; AC=(TEMP0) STA INX,0 ; RAM=(AC) CALL DLY100 ADIM DPL,01H BC $+6 SBI DPL,0CH BNZ RAM_L0 SBI DPM,06H BAZ $+4 JMP RAM_L0 ADIM DPM,01H JMP RAM_L0 RTNI ;************************** RAMTEST1: LDI FLG1,02H LDA TEMP0,0 STA FLG0,0 ; CALL DISPLAY LDI DPH,06H LDI DPM,00H LDI DPL,00H RAM_L1: LDA TEMP0,0 ; AC=(TEMP0) STA INX,0 ; RAM=(AC) CALL DLY100 ADIM DPL,01H BC $+6 SBI DPL,0FH BNZ RAM_L1 SBI DPM,01H BAZ $+4 JMP RAM_L1 ADIM DPM,01H JMP RAM_L1 LDI DPH,06H LDI DPM,02H LDI DPL,08H RAM_L2: LDA TEMP0,0 ; AC=(TEMP0) STA INX,0 ; RAM=(AC) CALL DLY100 ADIM DPL,01H BC $+6 SBI DPL,05H BNZ RAM_L2 SBI DPM,04H BAZ $+4 JMP RAM_L2 ADIM DPM,01H JMP RAM_L2 CALL DLY500 LDI DPH,06H LDI DPM,00H LDI DPL,00H RAM_L3: LDA TEMP0,0 ; AC=(TEMP0) SUBM INX,0 ; RAM-(AC)=RAM=00H BAZ $+2 CALL RAMERR CALL DLY100 ADIM DPL,01H BC $+6 SBI DPL,0FH BNZ RAM_L3 SBI DPM,01H BAZ $+4 JMP RAM_L3 ADIM DPM,01H JMP RAM_L3 LDI DPH,06H LDI DPM,02H LDI DPL,08H RAM_L4: LDA TEMP0,0 ; AC=(TEMP0) STA FLGF,0 ANDIM FLGF,03H SUBM INX,0 ; RAM-(AC)=RAM=00H BAZ $+2 CALL RAMERR CALL DLY100 ADIM DPL,01H BC $+6 SBI DPL,05H BNZ RAM_L4 SBI DPM,04H BAZ $+4 JMP RAM_L4 ADIM DPM,01H JMP RAM_L4 CALL DLY500
RTNI ;************************* RAMTEST2: ; LDI FLG1,03H ; LDA TEMP0,0 ; STA FLG0,0 ; CALL DISPLAY LDI DPH,06H LDI DPM,02H STA FLGE,1 LDI DPL,08H STA FLGF,1 LDI DPM,00H STA DPM,1 LDI DPL,00H STA DPL,1 RAM_L5: LDA DPM,1 STA DPM,0 LDA DPL,1 STA DPL,0 LDI INX,01H ; jmp $-1 CALL DLY100 ; nop LDI INX,02H CALL DLY100 ; nop LDI INX,04H CALL DLY100 ; nop LDI INX,08H CALL DLY100 ; nop LDA LPS,0 BA1 $+9 LDI INX,0FH CALL DLY100 LDI INX,00H CALL DLY100 CALL ADDLCDL LDA TEMP0,0 BNZ RAM_L5 RTNI
LDI INX,00H CALL DLY100 LDA FLGE,1 STA DPM,0 LDA FLGF,1 STA DPL,0 LDI INX,01H CALL DLY100 LDI INX,02H CALL DLY100 LDI INX,0FH LDA DPM,1 STA DPM,0 LDA DPL,1 STA DPL,0 LDI INX,0FH CALL DLY100 LDI INX,00H LDA FLGE,1 STA DPM,0 LDA FLGF,1 STA DPL,0 LDI INX,00H CALL DLY100 CALL ADDLCDH LDA DPM,1 STA DPM,0 LDA DPL,1 STA DPL,0 CALL ADDLCDL LDA TEMP0,0 BNZ RAM_L5 RTNI ADDLCDL: LDI TEMP0,00H ADIM DPL,01H BC $+6 SBI DPL,0FH BNZ ADDL_L1 SBI DPM,01H BAZ $+4 JMP ADDL_L1 ADIM DPM,01H ADDL_L1: LDI TEMP0,0FH LDA DPM,0 STA DPM,1 LDA DPL,0 STA DPL,1 RTNI
ADDLCDH: ADIM DPL,01H BC $+6 SBI DPL,05H BNZ ADDL_L2 SBI DPM,04H BNZ ADDL_L2 RTNI ADIM DPM,01H ADDL_L2: LDA DPM,0 STA FLGE,1 LDA DPL,0 STA FLGF,1 RTNI
;************************* RAMERR: LDA DPH,0 STA FLG2,0 LDA DPM,0 STA FLG1,0 LDA DPL,0 STA FLG0,0 ; CALL ERR RTNI
;**************************************** ;T0 ;**************************************** T_T0: LDI FLG2,0BH ; TEST T0 LDI FLG1,0BH LDI FLG0,0CH CALL DISPLAY LDA TM0,0 STA TM0,1
LDA T0SE,0 STA FLG0,0 CALL DISPLAY LDI TM0,1111B LDI TL0,00H LDI TH0,0FH LDI IRQ,00H NOP NOP LDA IRQ,0 BA2 $+7 LDA TH0,0 STA FLG1,0 LDA TL0,0 STA FLG0,0 CALL DISPLAY1 JMP $-7 T0_LOOP: LDI T0SE,01H STA FLG0,0 LDI FLG1,0BH CALL DISPLAY1 LDI TM0,1111B LDI TL0,00H LDI TH0,0FH LDI IRQ,00H NOP NOP LDA IRQ,0 BA2 $+7 LDA TH0,0 STA FLG1,0 LDA TL0,0 STA FLG0,0 CALL DISPLAY1 JMP $-7 ADIM T0SE,01H BA2 $+2 JMP T0_LOOP+1 LDA TM0,1 STA TM0,0 LDI T0SE,00H
LDI FLG1,0CH LDA T0SE,0 STA FLG0,0 CALL DISPLAY LDI TM1,1111B LDI TL1,00H LDI TH1,0FH LDI IRQ,00H NOP NOP LDA IRQ,0 BA1 $+7 LDA TH1,0 STA FLG1,0 LDA TL1,0 STA FLG0,0 CALL DISPLAY JMP $-7
T1_LOOP: LDI T0SE,04H STA FLG0,0 LDI FLG1,0CH CALL DISPLAY LDI TM1,1111B LDI TL1,00H LDI TH1,0FH LDI IRQ,00H NOP NOP LDA IRQ,0 BA1 $+7 LDA TH1,0 STA FLG1,0 LDA TL1,0 STA FLG0,0 CALL DISPLAY JMP $-7 ADIM T0SE,04H BNC T1_LOOP+1 LDI T0SE,0010B LDI TM0,1111B LDI TL0,00H LDI TH0,0FH LDI IRQ,00H LDI IE,0100B HALT NOP NOP LDI FLG1,0BH LDI FLG0,0BH CALL DISPLAY1 LDI T0SE,1000B LDI TM1,1111B LDI TL1,00H LDI TH1,0FH LDI IRQ,00H LDI IE,0010B HALT NOP NOP LDI FLG1,0CH LDI FLG0,0CH CALL DISPLAY LDI T0SE,0011B LDI TM0,1111B LDI TL0,00H LDI TH0,0FH LDI IRQ,00H LDI IE,0100B HALT NOP NOP LDI FLG1,0BH LDI FLG0,0CH CALL DISPLAY1 LDI T0SE,1100B LDI TM1,1111B LDI TL1,00H LDI TH1,0FH LDI IRQ,00H LDI IE,0010B HALT NOP NOP LDI FLG1,0CH LDI FLG0,0BH CALL DISPLAY CALL DLY2000
;********************************************************* T_END: LDI WDT,00H LDA PPHL,0 BA1 $+5 ; RUN=OSCX LDI FLG2,0FH LDI FLG1,0FH LDI FLG0,0FH ; TEST END JMP $+4 LDI FLG2,00H LDI FLG1,00H LDI FLG0,00H ; TEST END CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY LDI PAXOUT,0FH STA PBXOUT,0 STA PCXOUT,0 STA PDXOUT,0 LDI PORTC,0FH STOP NOP NOP JMP T_END
;******************************************************************** DISPLAY1: ORIM PCXOUT,0111B ANDIM PORTC,1000B LDI PEXOUT,0FH LDI PDXOUT,0FH LDI TBR,0EH LDA FLG1,0 CALL MARK STA PORTE,0 LDA TBR,0 STA PORTD,0 ORIM PORTC,0010B LDI TM1,00H LDI TL1,00H LDI TH1,08H ANDIM IRQ,1101B LDA WDT,0 LDA IRQ,0 BA1 $+2 JMP $-3 LDI TBR,0EH LDA FLG0,0 CALL MARK STA PORTE,0 LDA TBR,0 STA PORTD,0 ANDIM PORTC,1101B ORIM PORTC,0001B LDI TM1,00H LDI TL1,00H LDI TH1,08H ANDIM IRQ,1101B LDA WDT,0 LDA IRQ,0 BA1 $+2 JMP $-3 ANDIM PORTC,1000B LDI TM1,00H LDI TL1,00H LDI TH1,08H ANDIM IRQ,1101B LDA WDT,0 LDA IRQ,0 BA1 $+2 JMP $-3 RTNI DLAY5MS: LDI CT0,04H NOP ADIM CT0,01H BNC $-2 RTNI
DLY500: LDI TL0,00H LDI TH0,08H DLY5_0: ANDIM IRQ,1011B LDA WDT,0 LDA IRQ,0 BA2 $+2 JMP $-3 RTNI
DLY100: LDI TL0,0CH LDI TH0,0CH JMP DLY5_0
DLY1000: LDI CT,02H CALL DLY500 SBIM CT,01H BNZ $-2 RTNI DLY2000: LDI CT,04H CALL DLY500 SBIM CT,01H BNZ $-2 RTNI
DISPLAY: ORIM PCXOUT,0111B ; PC2~0=OUTPUT ANDIM PORTC,1000B LDI PEXOUT,0FH LDI PDXOUT,0FH LDI TBR,0EH LDA FLG1,0 CALL MARK STA PORTE,0 LDA TBR,0 STA PORTD,0 ORIM PORTC,0010B CALL DLY500 LDI TBR,0EH LDA FLG0,0 CALL MARK STA PORTE,0 LDA TBR,0 STA PORTD,0 ANDIM PORTC,1101B ORIM PORTC,0001B CALL DLY500 CALL CLS CALL DLY500 RTNI
CLS: ; LDI PORTE,00H ; LDI PORTF,00H ANDIM PORTC,1000B RTNI ORG 5DFH MARK: TJMP
; ORG 5E0H RTNW 0EH,07H ;0 RTNW 08H,04H ;1 RTNW 0DH,03H ;2 RTNW 0DH,06H ;3 RTNW 0BH,04H ;4 RTNW 07H,06H ;5 RTNW 07H,07H ;6 RTNW 0CH,04H ;7 RTNW 0FH,07H ;8 RTNW 0FH,06H ;9 RTNW 0FH,05H ;a RTNW 03H,07H ;b RTNW 06H,03H ;c RTNW 09H,07H ;d RTNW 07H,03H ;E RTNW 07H,01H ;F RTNW 01H,02H ;Do C4 12H**************************************************************** RTNW 03H,06H ;Re D4 36H RTNW 02H,0DH ;Me RTNW 06H,0FH ;Fa RTNW 06H,0CH ;So RTNW 00H,0DH ;La RTNW 05H,02H ;Si RTNW 04H,0BH ;Do^30=17,31=4B RTNW 05H,0DH ;Re^ RTNW 06H,0EH ;Me^ RTNW 03H,09H ;Fa^ RTNW 06H,06H ;So^ RTNW 01H,09H ;La^ RTNW 06H,05H ;Si^ RTNW 04H,0AH ;Do^^
;********************************************************* END
|