|
************************************************ * 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
|