门关键词: 多联开关电路图 高保真扬声器 磁敏传感器原理 汽车功放电路图 华夏特种变压器 烟雾报警器原理 光电开关电路图
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
液晶显示屏通用子程序(除法子程序)
新闻出处:嵌入式技术网 发布时间: 2007-11-15

************************************************************
;液晶显示屏通用子程序
************************************************************
;除法子程序
;输入:LCDAX(被除数)!=0,LCDBX(除数)!=0    lcdbx<lcdax
;输出:ACCL(商),ACCH(余数)

DIVISION: POINT_B11     ;change data page
   SPLK    #0,DIVSHIFT   ;wwa        
DIV_TEST: LACL LCDAX
   BCND DIV_RET,EQ
   LACL    LCDBX
   BCND    DIV_RET,EQ
    
   BIT  LCDAX,0    
      BCND DIV_LACC,TC         ;TC=1,branch to load ACC
   LACL LCDAX
   SACL LCDAX,1   
   LACC    DIVSHIFT
   ADD     #1
   SACL    DIVSHIFT  
   
   B  DIV_TEST   ;repeat until ACC(15) is 1

DIV_LACC:  LACC   #15
             SUB    DIVSHIFT
            SACL   DIVSHIFT
            BCND   OPEONCE,EQ
           
            LACL LCDAX    ;division
            RPT  DIVSHIFT           ;#15 wwa
            SUBC LCDBX    
            B       DIV_RET
           
OPEONCE:    LACL   LCDAX
            SUBC   LCDBX           
   
DIV_RET:    RET
                
************************************************************
;十六进制到十进制转换子程序
;输入:LCDAX
;输出:LCDGX,LCDFX,LCDEX,LCDDX,LCDCX (从高位到低位)

HEXTODEC: SPLK #10000,LCDBX
   CALL DIVISION
   SACL LCDGX    
   SACH LCDAX
   SPLK #1000,LCDBX
   CALL DIVISION
   SACL LCDFX
   SACH LCDAX
   SPLK #100,LCDBX
   CALL DIVISION
   SACL LCDEX
   SACH LCDAX
   SPLK #10,LCDBX
   CALL DIVISION
   SACL LCDDX
   SACH LCDCX
   RET      

************************************************************
;滚动刷新一行子程序
;输入:LCD_O_Y

R_DISPLAY: SPLK #0,LCD_O_X
   SPLK #16,LCDBX
   SPLK #15,LCDAX 
   SPLK #8000,LCDCX
   MAR  *,AR6
RD_LOOP2: LAR  AR6,LCDCX 
   LACL LCDCX
   ADD  #1
   SACL LCDCX
      
RD_LOOP1: LACL *+
   SACL LCD_CODE
   CALL LCDWRI_CC
   LACL LCD_O_X
   ADD  #2
   SACL LCD_O_X
   LACL LCDAX
   SUB  #1
   SACL LCDAX
   BCND RD_LOOP1,NEQ
   ;CALL mS_DELAY
   SPLK #15,LCDAX
   SPLK #0,LCD_O_X
   LACL LCDBX
   SUB  #1
   SACL LCDBX
   BCND RD_LOOP2,NEQ
   RET
                 
************************************************************
;满屏刷新子程序(15*4)

P_DISPLAY: SPLK #0,LCD_O_Y
   SPLK #0,LCD_O_X
   SPLK #4,LCDBX
   SPLK #15,LCDAX
   MAR  *,AR6
   LAR  AR6,#8100H                              
PD_LOOP: LACL *+
   SACL LCD_CODE
   CALL LCDWRI_CC
   LACL LCD_O_X
   ADD  #2
   SACL LCD_O_X
   LACL LCDAX
   SUB  #1
   SACL LCDAX
   BCND PD_LOOP,NEQ
   SPLK #0,LCD_O_X
   LACL LCD_O_Y
   ADD  #16
   SACL LCD_O_Y 
   SPLK #15,LCDAX
   LACL LCDBX
   SUB  #1
   SACL LCDBX
   BCND PD_LOOP,NEQ
   RET
   
************************************************************
;液晶屏初始化子程序

LCDINT:  SPLK #0,LCDDAT1
   SPLK #0,LCDDAT2
   SPLK #40H,LCDCOM
   CALL LCDPR1
   SPLK #1EH,LCDDAT1
   SPLK #0,LCDDAT2
   SPLK #41H,LCDCOM
   CALL LCDPR1
   SPLK #0,LCDDAT1
   SPLK #10H,LCDDAT2
   SPLK #42H,LCDCOM
   CALL LCDPR1
   SPLK #1EH,LCDDAT1
   SPLK #0,LCDDAT2
   SPLK #43H,LCDCOM
   CALL LCDPR1
   SPLK #0A7H,LCDCOM
   CALL LCDPR12
   SPLK #81H,LCDCOM
   CALL LCDPR12
   SPLK #09CH,LCDCOM
   CALL LCDPR12 
   RET

************************************************************
;清屏子程序

LCDCLEAR: SPLK #0,LCDDAT1
   SPLK #0,LCDDAT2
   SPLK #24H,LCDCOM 
   CALL LCDPR1
   SPLK #0F0H,LCDCOUNT1
   SPLK #0B0H,LCDCOM
   CALL LCDPR12
LCDCLEAR1: CALL LCDST03
   SPLK #0,LCDAX
   OUT  LCDAX,0000
   LACL LCDCOUNT1
   SUB  #1
   SACL LCDCOUNT1
   BCND LCDCLEAR1,NEQ
   SPLK #0B2H,LCDCOM
   CALL LCDPR12 
   
   SPLK #0,LCDDAT1
   SPLK #10H,LCDDAT2
   SPLK #24H,LCDCOM 
   CALL LCDPR1
   SPLK #8,LCDCOUNT2
   SPLK #0F0H,LCDCOUNT1
   SPLK #0B0H,LCDCOM
   CALL LCDPR12
LCDCLEAR2: CALL LCDST03
   SPLK #0,LCDAX
   OUT  LCDAX,0000
   LACL LCDCOUNT1
   SUB  #1
   SACL LCDCOUNT1
   BCND LCDCLEAR2,NEQ     ;TEST 0908
   SPLK #0F0H,LCDCOUNT1
   LACL LCDCOUNT2
   SUB  #1
   SACL LCDCOUNT2
   BCND LCDCLEAR2,NEQ
   SPLK #0B2H,LCDCOM
   CALL LCDPR12            
   RET
   
************************************************************
;建立CGRAM子程序
;输入:LCDCOUNT1(汉字数*4)

CGRAM:  SPLK #3,LCDDAT1
   SPLK #0,LCDDAT2
   SPLK #22H,LCDCOM
   CALL LCDPR1
   SPLK #0,LCDDAT1
   SPLK #1CH,LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   SPLK #0B0H,LCDCOM
   CALL LCDPR12 
   LT  LCDCOUNT1
   SPLK    #8,LCDTEMP4
   MPYU LCDTEMP4
   SPM  0
   PAC
   ADD  #100H
   SACL LCDTEMP1
   AND  #0FFH
   SACL LCDCOUNT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDCOUNT2
   MAR  *,AR6
   LAR  AR6,#8200H    
CGRAM1:  CALL LCDST03
   OUT  *+,0000H
   LACL LCDCOUNT1
   SUB  #1
   SACL LCDCOUNT1
   BCND CGRAM1,NEQ 
   LACL LCDCOUNT2
   SUB  #1
   SACL LCDCOUNT2
   BCND CGRAM1,NEQ
   SPLK #0B2H,LCDCOM
   CALL LCDPR12
   RET
   
************************************************************
;图形方式下写中文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE

LCDWRI_CC: LT  LCD_O_Y
   SPLK    #1EH,LCDTEMP4
   MPYU LCDTEMP4
   SPM  0
   PAC
   ADD  LCD_O_X
   ADD  #1000H
   SACL LCDTEMP3
   AND  #0FFH
   SACL LCDTEMP1
   LACL LCDTEMP3
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDTEMP2
   LT  LCD_CODE
   SPLK    #20H,LCDTEMP4
   MPYU LCDTEMP4
   SPM  0
   PAC
   ADD  #8300H
   SACL LCD_DPTR
   LAR  AR7,LCD_DPTR
   MAR  *,AR7
      SPLK #16,LCDCOUNT1
LCDWRI_CC1: LACL LCDTEMP1
   SACL LCDDAT1
   LACL LCDTEMP2
   SACL LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   LACL *
   SACL LCDDAT2
   ADRK #16
   LACL *
   SACL LCDDAT1
   SBRK #16
   LACL *+
   SPLK #0C0H,LCDCOM
   CALL LCDPR11
   LACL LCDDAT1
   SACL LCDDAT2
   CALL LCDPR11
   CLRC SXM
   LACC LCDTEMP2,8
   OR  LCDTEMP1
   ADD  #1EH
   SACL LCDTEMP3
   AND  #0FFH
   SACL LCDTEMP1
   LACL LCDTEMP3
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDTEMP2
   LACL LCDCOUNT1
   SUB  #1
   SACL LCDCOUNT1
   BCND LCDWRI_CC1,NEQ 
   MAR  *,AR6
   RET 
   
************************************************************
;文本方式下写中文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE 

LCDWRI_CT: LT  LCD_O_Y
   SPLK    #1EH,LCDTEMP4
   MPYU LCDTEMP4
   SPM  0
   PAC
   ADD  LCD_O_X
   SACL LCDTEMP1
   AND  #0FFH
   SACL LCDDAT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDDAT2
   SPLK #024H,LCDCOM
   CALL LCDPR1
   LACL LCD_CODE
   SACL LCDDAT2
   SPLK #0C0H,LCDCOM
   CALL LCDPR11
   ADD  #2
   SACL LCDDAT2
   CALL LCDPR11
   LACL #0
   ADD  LCDTEMP2
   ADD  #1000H
   SACL LCDTEMP2
   AND  #0FFH
   SACL LCDDAT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   
   LACL #0
   ADD  LCDTEMP1
   ADD  #1EH
   SACL LCDTEMP1
   AND  #0FFH
   SACL LCDDAT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   LACL LCD_CODE
   ADD  #1
   SACL LCDDAT2
   SPLK #0C0H,LCDCOM
   CALL LCDPR11
   ADD  #2
   SACL LCDDAT2
   CALL LCDPR11
   LACL #0
   ADD  LCDTEMP1
   ADD  #1000H
   SACL LCDTEMP1
   AND  #0FFH
   SACL LCDDAT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   RET
   
************************************************************
;文本方式下写西文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE

LCDWRI_C: LT  LCD_O_Y
   SPLK    #1EH,LCDTEMP4
   MPYU LCDTEMP4
   SPM  0
   PAC
   ADD  LCD_O_X
   SACL LCDTEMP1
   AND  #0FFH
   SACL LCDDAT1
   LACL LCDTEMP1
   AND  #0FFH,8
   CLRC SXM
   RPT  #7
   SFR
   SACL LCDDAT2
   SPLK #24H,LCDCOM
   CALL LCDPR1
   LACL LCDDAT2
   SACL LCDTEMP1
   LACL LCD_CODE
   SACL LCDDAT2
   SPLK #0C4H,LCDCOM
   CALL LCDPR11
     
************************************************************
;液晶屏写指令和写数据子程序
;输入:LCDDAT1,LCDDAT2,LCDCOM

LCDPR1:  CALL LCDST01       
   OUT  LCDDAT1,0000H 
LCDPR11: CALL LCDST01
   OUT  LCDDAT2,0000H
LCDPR12: CALL LCDST01
   OUT  LCDCOM,0001H
   RET
   
************************************************************
;液晶屏读数据子程序
;output:LCDDAT2

LCDPR2:  CALL LCDST01
   IN  LCDDAT2,0000H
   RET
   
************************************************************
;液晶屏判断读写指令/数据状态位子程序

LCDST01:   IN  LCD_STA,0001H
            BIT  LCD_STA,15
   BCND LCDST01,NTC
   BIT  LCD_STA,14
   BCND LCDST01,NTC
   RET
   
************************************************************
;液晶屏判断数据自动读状态子程序

LCDST02: IN  LCD_STA,0001H
   BIT  LCD_STA,13
   BCND LCDST02,NTC
   RET
   
************************************************************
;液晶屏判断数据自动写状态子程序

LCDST03: IN  LCD_STA,0001H
   BIT  LCD_STA,12
   BCND LCDST03,NTC
   RET
   
************************************************************
;液晶屏判断屏读/屏拷状态位子程序

LCDST06: IN  LCD_STA,0001H
   BIT  LCD_STA,9
   BCND LCDST06,NTC
   RET             


关闭】 【打印
 
相关专题
 
友情链接:
© 2007 电子元件网 网站地图