dsp液晶屏

************************************************
* FileName:     ex8.asm                        *
* Description:  液晶屏             *
* Copyright(C) SanZhi Electronic, Author Zpin  *
************************************************

       .title "exx"
       .global _c_int00
       .mmregs

LCDAWD .set  7009h  ;液晶屏片选1写数据
LCDARO .set  700Ah  ;液晶屏片选1读状态
LCDAWO .set  7008h  ;液晶屏片选1写命令
LCDBWD .set  6009h  ;液晶屏片选2写数据
LCDBRO .set  600Ah  ;液晶屏片选2读状态
LCDBWO .set  6008h  ;液晶屏片选2写命令
STATE   .set    60h    ;STATE
CONTROL .set    61h    ;CONTROL
DAT     .set    62h    ;DATA
XPOS    .set    66h    ;列指针
YPOS    .set    67h    ;行指针
VXPOS   .set    68h
VYPOS   .set    69h
       
       .data
       ;.word 2100h,0900h,1100h,2400h,2200h,0100h,0900h,2000h,2400h
        ;.byte  000H,010H,008H,006H,001H,082H,008cH,040H,030H,00cH,003H,00cH,010H,060H,0c0H,040H,000H,004H,034H,0c4H,04H,0c4H,03cH,020H,010H,00fH,0e8H,008H,008H,028H,018H,000H     ;欢
        .byte  14h,24h,44h,84h,64h,1Ch,20h,18h,0Fh,0E8h,08h,08h,28h,18h,08h,00h,20h,10h,4Ch,43h,43h,2Ch,20h,10h,0Ch,03h,06h,18h,30h,60h,20h,00h
        .byte  40h,41h,0CEh,04h,00h,0FCh,04h,02h,02h,0FCh,04h,04h,04h,0FCh,00h,00h,40h,20h,1Fh,20h,40h,47h,42h,41h,40h,5Fh,40h,42h,44h,43h,40h,00h
        .byte  40h,20h,0F0h,1Ch,07h,0F2h,94h,94h,94h,0FFh,94h,94h,94h,0F4h,04h,00h,00h,00h,7Fh,00h,40h,41h,22h,14h,0Ch,13h,10h,30h,20h,61h,20h,00h
        .byte  00h,00h,00h,0FEh,22h,22h,22h,22h,0FEh,22h,22h,22h,22h,0FEh,00h,00h,80h,40h,30h,0Fh,02h,02h,02h,02h,0FFh,02h,02h,42h,82h,7Fh,00h,00h
        .byte  00h,04h,84h,84h,84h,84h,84h,84h,84h,84h,84h,84h,84h,04h,00h,00h,00h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,00h
        .byte  40h,0A0h,98h,8Fh,88h,0F8h,88h,88h,00h,0F8h,08h,08h,08h,0F8h,00h,00h,80h,40h,20h,18h,07h,02h,04h,18h,00h,7Fh,10h,10h,10h,3Fh,00h,00h
        .byte  08h,0F8h,08h,08h,08h,10h,0E0h,00h,00h,00h,00h,00h,00h,00h,00h,00h,20h,3Fh,20h,20h,20h,10h,0Fh,00h,00h,00h,00h,00h,00h,00h,00h,00h
        .byte   00h,70h,88h,08h,08h,08h,38h,00h,00h,00h,00h,00h,00h,00h,00h,00h, 00h,38h,20h,21h,21h,22h,1Ch,00h,00h,00h,00h,00h,00h,00h,00h,00h
        .byte   08h,0F8h,08h,08h,08h,08h,0F0h,00h,00h,00h,00h,00h,00h,00h,00h,00h,20h,3Fh,21h,01h,01h,01h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
        .byte   00h,10h,0Ch,04h,4Ch,0B4h,94h,05h,0F6h,04h,04h,04h,14h,0Ch,04h,00h,00h,82h,82h,42h,42h,23h,12h,0Ah,07h,0Ah,12h,0E2h,42h,02h,02h,00h
        .byte   02h,0FAh,82h,82h,0FEh,80h,40h,60h,58h,46h,48h,50h,20h,20h,20h,00h,08h,08h,04h,24h,40h,3Fh,22h,2Ch,21h,2Eh,20h,30h,2Ch,23h,20h,00h
        .byte   40h,20h,0F0h,0Ch,03h,00h,38h,0C0h,01h,0Eh,04h,0E0h,1Ch,00h,00h,00h,00h,00h,0FFh,00h,40h,40h,20h,10h,0Bh,04h,0Bh,10h,20h,60h,20h,00h
        ;.byte  0H,40H,020H,01fH,020H,047H,042H,041H,00H,07fH,040H,042H,044H,023H,060H,010H,00H,042H,044H,088H,00H,0fcH,04H,02H,03H,0feH,02H,02H,02H,0feH,00H,00H                   ;迎
        ;.byte  00,00,00,0ffH,00,080H,043H,045H,029H,019H,017H,021H,021H,041H,0c3H,040H,00H,040H,020H,0f8H,07H,04H,0f4H,014H,014H,014H,0ffH,014H,014H,014H,0f6H,04H                 ;使
        ;.byte  00H,080H,060H,01fH,02H,02H,02H,02H,07fH,02H,02H,042H,082H,07fH,00H,00H,00H,00H,00H,0feH,022H,022H,022H,022H,0feH,022H,022H,022H,022H,0ffH,02,00                     ;用
        ;.byte  00h,020h,020h,020h,020h,020h,020h,020h,020h,020h,020h,020h,020h,020h,030h,020h,00h,00h,04h,084h,084h,084h,084h,084h,084h,084h,084h,084h,0c4h,086h,04h,00h           ;三
DELAY  .macro sec_tenth     ;延时 sec_tenth/10 秒
       STM sec_tenth-1,AR5
loop1? STM #09h,AR6
loop0? STM #49999,AR7
       BANZ $,*AR7-
       BANZ loop0?,*AR6-
       BANZ loop1?,*AR5-
       .endm

       .sect ".vectors"
rst:   B _c_int00
       NOP
       NOP
       .space 15*4*16

          .text
_c_int00

       LD #0h,DP
       STM #3000h,SP
       SSBX INTM
       STM #07FFFh,SWWSR    ;IO总线外部等待时间14个周期
       STM #01h,2Bh

       STM #0h,CLKMD        ;20MHz工作
tst    BITF CLKMD,#1h
       BC tst,TC
       STM #01007h,CLKMD
       RPT #0FFh
       NOP
      
       ST #0FFFFh,IFR
       ORM #0001h,IMR
       RSBX INTM
      
       LD #0h,DP
        call LCDRESET;read state
        st #4h,ar1
        ST #0H,DAT
        CALL FILL
bb      st #2000h,AR0 ;欢
        st #1fh,XPOS
        st #02H,YPOS
        CALL WRITE
        ST #1fH,XPOS
        ST #03H,YPOS
        CALL WRITE
        
        st #2fh,XPOS  ;迎
        st #02H,YPOS
        CALL WRITE
        ST #2fH,XPOS
        ST #03H,YPOS
        CALL WRITE
                       ;使
        st #3fh,XPOS
        st #02H,YPOS
        CALL WRITE
        ST #3fH,XPOS
        ST #03H,YPOS
        CALL WRITE
       
       
        st #4fh,XPOS
        st #02H,YPOS
        CALL WRITE
        ST #4fH,XPOS
        ST #03h,YPOS
        CALL WRITE               ;用
       
        st #0bh,XPOS         ;三
        st #04H,YPOS
        CALL WRITE
        ST #0bH,XPOS
        ST #05h,YPOS
        CALL WRITE

        st #1ah,XPOS         ;知
        st #04H,YPOS
        CALL WRITE
        ST #1aH,XPOS
        ST #05h,YPOS
        CALL WRITE

        st #29h,XPOS         ;D
        st #04H,YPOS
        CALL WRITE
        ST #29H,XPOS
        ST #05h,YPOS
        CALL WRITE
       
        st #31h,XPOS         ;S
        st #04H,YPOS
        CALL WRITE
        ST #31H,XPOS
        ST #05h,YPOS
        CALL WRITE

       
        st #39h,XPOS         ;P
        st #04H,YPOS
        CALL WRITE
        ST #39H,XPOS
        ST #05h,YPOS
        CALL WRITE

        st #041h,XPOS         ;实
        st #04H,YPOS
        CALL WRITE
        ST #041H,XPOS
        ST #05h,YPOS
        CALL WRITE

        st #50h,XPOS         ;验
        st #04H,YPOS
        CALL WRITE
        ST #50H,XPOS
        ST #05h,YPOS
        CALL WRITE

        st #5fh,XPOS         ;仪
        st #04H,YPOS
        CALL WRITE
        ST #5fH,XPOS
        ST #05h,YPOS
        CALL WRITE
        NOP
        NOP
        CALL DELAY
        call DELAY
        CALL DELAY
        ST #00H,DAT
        CALL FILL
        CALL DELAY
        banz bb,*ar1-
        nop
        nop
        nop
        b bb
FILL    ST  #00H,YPOS
LFLPB   ST  #00H,XPOS
LFLPA   CALL LCDPOS
        nop
        nop
        nop
        rpt #10
        CALL LCDWD
        ADDM #01H,XPOS
        BITF XPOS,#80H
        BC  LFLPA,NTC
        ADDM #01H,YPOS
        BITF YPOS,#08H
        BC LFLPB,NTC
        RET

WRITE    MVDK XPOS,VXPOS
         ST #0FH,AR2
WRITE1   MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD         
         ADDM #01H,XPOS
         BANZ WRITE1,*AR2-
         MVDK VXPOS,XPOS
         ST #0FH,AR2
         RET

WAITIDLE1    PORTR  LCDARO,STATE ;READ CS1 STATE
                nop
             nop
             BITF STATE,#80H    ;为0表示准备好
             BC WAITIDLE1,tc
                 ret
WAITIDLE2    PORTR  LCDBRO,STATE  ;READ CS2 STATE
             nop
             nop
             BITF STATE,#080H
             BC WAITIDLE2,tc
             ret
LCDWC1         CALL WAITIDLE1            ;WRITE CS1 CONTROL
              PORTW  CONTROL,LCDAWO
              RET
LCDWC2         CALL WAITIDLE2            ;WRITE CS2 CONTROL
              PORTW  CONTROL,LCDBWO 
                 RET
LCDWD1           CALL WAITIDLE1            ;WRITE CS1 DATA
                 PORTW DAT,LCDAWD
                 RET
LCDWD2           CALL WAITIDLE2             ;WRITE CS2 DATA
                 PORTW DAT,LCDBWD
                 RET                          
LCDRESET         ;ST #003EH,CONTROL        ;复位LCD
                 ;CALL LCDWC1
                 ;CALL LCDWC2
                ST #003FH,CONTROL        ;复位LCD
                 CALL LCDWC1
                 CALL LCDWC2
                 ST #00C0H,CONTROL
                 CALL LCDWC1
                 CALL LCDWC2
                 RET
LCDWD            BITF XPOS,#0040H
                 BC LWDLAY,tc
                 CALL LCDWD1
                ;RPT #1AH
                 B LWDLAX
LWDLAY           CALL LCDWD2
                ;RPT #1AH
LWDLAX           RET

LCDPOS      BITF XPOS,#0040H    ;XPOS列方向小于64则对CS1操作
            BC LPSLAY,tc
            MVDK YPOS,VYPOS
           ANDM #0007H,VYPOS
           ADDM #0B8H,VYPOS
           MVDK VYPOS,CONTROL
           CALL LCDWC1            ;设页码
           MVDK XPOS,VXPOS
           ANDM #03FH,VXPOS
           ORM  #40H,VXPOS
           MVDK VXPOS,CONTROL       ;设列码
           CALL LCDWC1
           B LCDLAX
LPSLAY     MVDK YPOS,VYPOS
            ANDM #0007H,VYPOS    ;XPOS列方向大于等于64则对CS1操作
           ADDM #0B8H,VYPOS
           MVDK VYPOS,CONTROL
           CALL LCDWC2            ;设页码
           MVDK XPOS,VXPOS
           ANDM #03FH,VXPOS
           ORM  #40H,VXPOS
           MVDK VXPOS,CONTROL
           CALL LCDWC2             ;设列码
LCDLAX      RET  


DELAY  ST #0100h,AR7        ;延时子程序
       BANZ $,*AR7-
       BANZ DELAY,*AR6-
       RET

      
;testxf   stm #ST1,AR0
;      bitf *AR0,#2000h
;      bc clrxf,TC
;      ssbx xf
;      ret
;clrxf rsbx xf
;      ret

;testxf   ssbx xf
;      DELAY #1
;      rsbx xf
;      DELAY #1
;      b testxf

 

 

AD

************************************************
* FileName:     ex8.asm                        *
* Description:  液晶屏             *
* Copyright(C) SanZhi Electronic, Author Zpin  *
************************************************

       .title "exx"
       .global _c_int00
       .mmregs

LCDAWD .set  7009h  ;液晶屏片选1写数据
LCDARO .set  700Ah  ;液晶屏片选1读状态
LCDAWO .set  7008h  ;液晶屏片选1写命令
LCDBWD .set  6009h  ;液晶屏片选2写数据
LCDBRO .set  600Ah  ;液晶屏片选2读状态
LCDBWO .set  6008h  ;液晶屏片选2写命令
STATE   .set    60h    ;STATE
CONTROL .set    61h    ;CONTROL
DAT     .set    62h    ;DATA
XPOS    .set    66h    ;列指针
YPOS    .set    67h    ;行指针
VXPOS   .set    68h
VYPOS   .set    69h
       
       .data
       ;.byte  018H,0cH,0feH,0ffH,0feH,0cH,018H,0h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,80h,80h,80h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,01h,01h,01h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
        ;.byte  0h,0h,0ffh,0ffh,0ffh,0h,0h,0h;第1个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第2个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第3个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第4个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第5个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第6个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第7个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第8个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第9个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第10个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第11个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第12个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第13个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第14个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,80h,80h,80h,80h
        ;.byte  1h,1h,1h,1h,1h,1h,1h,1h ;第15个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;.byte  80h,80h,80h,80h,90h,0A0h,0C0h,80h
        ;.byte  1h,1h,1h,1h,9h,5h,3h,1h ;第16个8列
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h
        ;.byte  0h,0h,0h,0h,0h,0h,0h,0h       
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        .byte  18h;1列 2000 xpos=0,ypos=0
        .byte  0ch;2列 2001 xpos=1,ypos=0
        .byte  0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh  ;3列2002-2009xpos=2,ypos=0-7
        .byte  0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh  ;4列200a-2011xpos=3,ypos=0-7
        .byte  0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh  ;5列2012-2019xpos=4,ypos=0-7
        .byte  0ch;6列 201axpos=5,ypos=0
        .byte  18h;7列 201bxpos=6,ypos=0
        .byte  80h,01h,90h,0A0h,0C0h,80h,9h,5h,3h,1h;201c-2025
               ;xpos=7-123,ypos=4;xpos=7-123,ypos=5;xpos=124-127,ypos=4;xpos=124-127,ypos=5
DELAY  .macro sec_tenth     ;延时 sec_tenth/10 秒
       STM sec_tenth-1,AR5
loop1? STM #09h,AR6
loop0? STM #49999,AR7
       BANZ $,*AR7-
       BANZ loop0?,*AR6-
       BANZ loop1?,*AR5-
       .endm

       .sect ".vectors"
rst:   B _c_int00
       NOP
       NOP
       .space 15*4*16

          .text
_c_int00
       LD #0h,DP
       STM #3000h,SP
       SSBX INTM
       STM #07FFFh,SWWSR    ;IO总线外部等待时间14个周期
       STM #01h,2Bh
       STM #0h,CLKMD        ;20MHz工作
tst    BITF CLKMD,#1h
       BC tst,TC
       STM #09007h,CLKMD
       RPT #0FFh
       NOP
       ST #0FFFFh,IFR             
       ORM #0001h,IMR
       RSBX INTM
       LD #0h,DP
        call LCDRESET;read state
        ST #0H,DAT
        CALL FILL
main    nop
        nop
        call XY
        ;DELAY #0FFFFH
        ST #0H,DAT
        CALL FILL
        ;DELAY  #0FFFFH
        B   main
       
;----------------------------------------->
XY       st   #0,XPOS
         ST  #0,YPOS 
         st #2000h,ar0
         MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD  ;1arrange

         st  #1,XPOS
         ST  #0,YPOS
         MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD  ;2arrange
         NOP       
        
         NOP
         ST #2,XPOS
         ST #0,YPOS
         CALL SHU    ;3arrange
        
         ST #3,XPOS
         ST #0,YPOS
         CALL SHU    ;4arrange
        
         ST #4,XPOS
         ST #0,YPOS
         CALL SHU    ;5arrange
        
          st  #5,XPOS
         ST  #0,YPOS
         MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD   ;6arrange
        
          st  #6,XPOS
         ST  #0,YPOS
         MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD    ;7arrange
        
         NOP
         ST #5,XPOS
         ST #3,YPOS
         CALL HEN
        
         NOP
         ST #5,XPOS
         ST #4,YPOS
         st #201dh,ar0
         CALL HEN
        
         ST #201EH,AR0
         ST #124,XPOS
         ST #3,YPOS
         ST #3,AR2
HEND     MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD
         ADDM #1,XPOS
         BANZ HEND,*AR2-
        
         ST #124,XPOS
         ST #4,YPOS
         ST #3,AR2
HEND1    MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD
         ADDM #1,XPOS
         BANZ HEND1,*AR2-
         ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
SHU      ST #07H,AR2
SHU1     MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD         
         ADDM #01H,YPOS
         BANZ SHU1,*AR2-
         ST #07H,AR2
         RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HEN      ST #118,AR2
HEN1     MVDK *AR0,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD         
         ADDM #01H,XPOS
         BANZ HEN1,*AR2-
         ST #118,AR2
         RET       
;----------------------------------填充
FILL    ST  #00H,YPOS
LFLPB   ST  #00H,XPOS
LFLPA   CALL LCDPOS
        nop
        nop
        nop
        rpt #10
        CALL LCDWD
        ADDM #01H,XPOS
        BITF XPOS,#80H
        BC  LFLPA,NTC
        ADDM #01H,YPOS
        BITF YPOS,#08H
        BC LFLPB,NTC
        RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每64个点一次
WRITE    MVDK XPOS,VXPOS
         ST #07H,AR2
WRITE1   MVDK *AR0+,DAT
         ANDM #0FFH,DAT
         CALL LCDPOS
         CALL LCDWD         
         ADDM #01H,XPOS
         BANZ WRITE1,*AR2-
         MVDK VXPOS,XPOS
         ST #0FH,AR2
         RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDRESET         ST #003FH,CONTROL        ;复位LCD
                 CALL LCDWC1
                 CALL LCDWC2
                 ST #00C0H,CONTROL
                 CALL LCDWC1
                 CALL LCDWC2
                 RET
LCDWD            BITF XPOS,#0040H
                 BC LWDLAY,tc
                 CALL LCDWD1
                 B LWDLAX
LWDLAY           CALL LCDWD2
LWDLAX           RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDPOS      BITF XPOS,#0040H    ;XPOS列方向小于64则对CS1操作
            BC LPSLAY,tc
            MVDK YPOS,VYPOS
           ANDM #0007H,VYPOS
           ADDM #0B8H,VYPOS
           MVDK VYPOS,CONTROL
           CALL LCDWC1            ;设页码
           MVDK XPOS,VXPOS
           ANDM #03FH,VXPOS
           ORM  #40H,VXPOS
           MVDK VXPOS,CONTROL       ;设列码
           CALL LCDWC1
           B LCDLAX
LPSLAY     MVDK YPOS,VYPOS
            ANDM #0007H,VYPOS    ;XPOS列方向大于等于64则对CS1操作
           ADDM #0B8H,VYPOS
           MVDK VYPOS,CONTROL
           CALL LCDWC2            ;设页码
           MVDK XPOS,VXPOS
           ANDM #03FH,VXPOS
           ORM  #40H,VXPOS
           MVDK VXPOS,CONTROL
           CALL LCDWC2             ;设列码
LCDLAX      RET  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDWC1         CALL WAITIDLE1            ;WRITE CS1 CONTROL
              PORTW  CONTROL,LCDAWO
              RET
LCDWC2         CALL WAITIDLE2            ;WRITE CS2 CONTROL
              PORTW  CONTROL,LCDBWO 
                 RET
LCDWD1           CALL WAITIDLE1            ;WRITE CS1 DATA
                 PORTW DAT,LCDAWD
                 RET
LCDWD2           CALL WAITIDLE2             ;WRITE CS2 DATA
                 PORTW DAT,LCDBWD
                 RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                           
WAITIDLE1    PORTR  LCDARO,STATE ;READ CS1 STATE
                nop
             nop
             BITF STATE,#80H    ;为0表示准备好
             BC WAITIDLE1,tc
                 ret
WAITIDLE2    PORTR  LCDBRO,STATE  ;READ CS2 STATE
             nop
             nop
             BITF STATE,#080H
             BC WAITIDLE2,tc
             ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DELAY ST #0100h,AR7        ;延时子程序
;      BANZ $,*AR7-
;      BANZ DELAY,*AR6-
;      RET

posted @ 2010-12-28 23:18  ARM与DSP  阅读(225)  评论(0)    收藏  举报