⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.asm

📁 DSP2407A的LCD控制代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           sacl r21 
           ldp #dp_user
page_cycle4: 
          ldp #dp_user
         lacl  r24               ;r24显示起始列
          sacl r16
          call write_ins0
          ldp #dp_user 
          lacl r23                       ;r23显示起始页   
           sacl  r16                     
           call write_ins0              ;写初始化字
           ldp #dp_user
           lacl #0c0h                     ;显示起始行    
           sacl r16
           call write_ins0
           
arrange_cycle4:ldp #dp_user
          lacl lcdtab 
          ldp #dp_user
           tblr lcddata
           lacl lcddata  
           ldp #dp_user
          ;lacl #0ffh                 ; 测试输出值函数
            sacl r16
           call write_data0
           ldp #dp_user
           lacl lcdtab 
           add #1
           sacl   lcdtab
           ldp #dp_user
           lacl r22
           sub #1
           sacl r22
           lar ar0,#0
           ldp #dp_user
           lar ar6,r22
            mar *,ar6  
            cmpr  00
            bcnd  arrange_cycle4,NTC
            
            ;call delay
           
            LDP #dp_user
            lacl r21
            sacl r22
          
          ldp #dp_user
            lar ar0,r23              
            ldp #dp_user
            lar ar7,r25              ;r25显示结束页  
             lacl r23
            sub #1h
            ldp #dp_user
            sacl r23                     
            mar *,ar7
            cmpr 00
            bcnd page_cycle4,NTC
            ;call delay           
            ret       
display5: 
           ldp #dp_user
           lacl  r22              ;保存r22,即写第一次的总列数
           sacl r21 
           ldp #dp_user
page_cycle5: 
          ldp #dp_user
         lacl  r24               ;r24显示起始列
          sacl r16
          call write_ins1
          ldp #dp_user 
          lacl r23                       ;r23显示起始页   
           sacl  r16                     
           call write_ins1              ;写初始化字
           ldp #dp_user
           lacl #0c0h                     ;显示起始行    
           sacl r16
           call write_ins1
           
arrange_cycle5:ldp #dp_user
          lacl lcdtab 
          ldp #dp_user
           tblr lcddata
           lacl lcddata  
           ldp #dp_user
          ;lacl #0ffh                 ; 测试输出值函数
            sacl r16
           call write_data1
           ldp #dp_user
           lacl lcdtab 
           add #1
           sacl   lcdtab
           ldp #dp_user
           lacl r22
           sub #1
           sacl r22
           lar ar0,#0
           ldp #dp_user
           lar ar6,r22
            mar *,ar6  
            cmpr  00
            bcnd  arrange_cycle5,NTC
            
            ;call delay
           
            LDP #dp_user
            lacl r21
            sacl r22
          
          ldp #dp_user
            lar ar0,r23              
            ldp #dp_user
            lar ar7,r25              ;r25显示结束页  
             lacl r23
            sub #1h
            ldp #dp_user
            sacl r23                     
            mar *,ar7
            cmpr 00
            bcnd page_cycle5,NTC
            
            ;call delay
            
            ret                              

write_ins1:  
             ldp #dp_pf2
           
            lacl  #03fch     ;a的0,1口输出且为0,e先变低
            sacl padatdir
            nop     
            lacl #1c08h
            ;lacl #1c18h
            sacl pcdatdir   ;c的4, 3 ,2 口输出且为0, 1,0;其中c的4,3,2代表rs,cs2,cs1
            
             rpt  #20
             nop
            ldp #0e1h                     
            lacl  #0301h
            sacl padatdir         ;a的1,0口输出且为0,1 ,e变高
             ;rpt  #10
             nop
             ldp  #dp_user
             lacl  r16
             or  #0ff00h
             ldp #0e1h
              sacl pedatdir ; 输出初始化信号 
              rpt #50
              nop          
             ldp #0e1h
             lacl  #03fch     ;a的0,1口输出且为0,e先变低
             sacl padatdir             ;e变低锁存
             rpt  #5
             nop
              ldp #0e1h                   
              lacl #0302h
              sacl padatdir             ;rw变高
              ldp #dp_pf2
              lacl #1c0ch
              sacl pcdatdir   ;c的4, 3 ,2 口输出且为0, 1,1;其中c的4,3,2代表rs,cs2,cs1
              ldp  #dp_user
              rpt  #5
              nop
              ret
write_ins0:  
             ldp #dp_pf2
           
            lacl  #03fch     ;a的0,1口输出且为0,e先变低
            sacl padatdir
            nop     
            lacl #1c04h
            ;lacl #1c18h
            sacl pcdatdir   ;c的4, 3 ,2 口输出且为0, 1,0;其中c的4,3,2代表rs,cs2,cs1
            
             rpt  #20
             nop
            ldp #0e1h                     
            lacl  #0301h
            sacl padatdir         ;a的1,0口输出且为0,1 ,e变高
             ;rpt  #10
             nop
             ldp  #dp_user
             lacl  r16
             or  #0ff00h
             ldp #0e1h
              sacl pedatdir ; 输出初始化信号 
              rpt #50
              nop          
             ldp #0e1h
             lacl  #03fch     ;a的0,1口输出且为0,e先变低
             sacl padatdir             ;e变低锁存
             rpt  #5
             nop
              ldp #0e1h                   
              lacl #0302h
              sacl padatdir             ;rw变高
              ldp #dp_pf2
              lacl #1c0ch
              sacl pcdatdir   ;c的4, 3 ,2 口输出且为0, 1,1;其中c的4,3,2代表rs,cs2,cs1
              ldp  #dp_user
              rpt  #5
              nop
              ret             
write_data1:  
             ldp #0e1h
           lacl  #0ff00h     ;a的0,1口输出且为0,e先变低
            sacl padatdir
            nop
            ldp #0e1h
            lacl #1c18h
           sacl pcdatdir   ;c的4, 3 ,2 口输出且为1, 1,0;其中c的4,3,2代表rs,cs2,cs1
              rpt #10
              nop
            ldp #0e1h                     
            lacl  #0ff01h
            sacl padatdir         ;a的1,0口输出且为0,1 ,e变高
             ;rpt  #10
             nop
             ldp  #dp_user
             lacl r16
             or #0ff00h
             ldp #0e1h
             sacl     pedatdir            ; 输出初始化信号 
             rpt #5
             nop
            ldp #0e1h  
            lacl  #0ff00h     ;a的0,1口输出且为0,e先变低
            sacl padatdir             ;e变低锁存
              rpt  #5
              nop
              ldp #0e1h                   
              lacl #0ff02h
              sacl padatdir             ;rw变高
              ldp #dp_pf2
              lacl #1c0ch
              sacl pcdatdir   ;c 的4, 3 ,2 口输出且为0, 1,1;其中c的4,3,2代表rs,cs2,cs1
              ldp  #dp_user
              rpt #5
              nop
              ret
write_data0:  
             ldp #0e1h
           lacl  #0ff00h     ;a的0,1口输出且为0,e先变低
            sacl padatdir
            nop
            ldp #0e1h
            lacl #1c14h
           sacl pcdatdir   ;c的4, 3 ,2 口输出且为1, 1,0;其中c的4,3,2代表rs,cs2,cs1
              rpt #10
              nop
            ldp #0e1h                     
            lacl  #0ff01h
            sacl padatdir         ;a的1,0口输出且为0,1 ,e变高
             ;rpt  #10
             nop
             ldp  #dp_user
             lacl r16
             or #0ff00h
             ldp #0e1h
             sacl     pedatdir            ; 输出初始化信号 
             rpt #5
             nop
            ldp #0e1h  
            lacl  #0ff00h     ;a的0,1口输出且为0,e先变低
            sacl padatdir             ;e变低锁存
              rpt  #5
              nop
              ldp #0e1h                   
              lacl #0ff02h
              sacl padatdir             ;rw变高
              ldp #dp_pf2
              lacl #1c0ch
              sacl pcdatdir   ;c 的4, 3 ,2 口输出且为0, 1,1;其中c的4,3,2代表rs,cs2,cs1
              ldp  #dp_user
              rpt #5
              nop
              ret

         
         

display_cs0: ldp #5h
              splk #0c0h,r16      
               call write_ins0
               ldp #5h
                splk #0b8h,r17   ;确定初始行
                                 
arrange00:    ldp #5h
              splk  #040h,r18     ;确定初始列
              ldp #5h
              lacl r17
               sacl r16           ;写初始行
              call write_ins0
              ldp #5h
              lacl r18             ;写初始列
              sacl r16
              call write_ins0
arrange01:    ldp #5h
              splk #00h,r16
              call write_data0
             ; call delay
              ldp #5h
              lacl r18
              add #1h         ;列自动加1,且人为设置的加一,起控制作用
              sacl r18
             ; call delay
            ldp #5h
              mar *,ar6
              lar  ar6,r18  
               lar  ar0,#128
             cmpr   01
             bcnd  arrange01,TC;列的数未加到64个跳出
             ldp #5h
             lacl r17
              add #1h
              sacl r17
              call delay
             lar ar5,r17
              lar ar0,#0c0h
             mar *,ar5
             cmpr  01
             bcnd arrange00,tc   ;未到8页循环
              ret
display_cs1: ldp #5h
              splk #0c0h,r16      
               call write_ins1
               ldp #5h
                splk #0b8h,r17   ;确定初始行
                                 
arrange10:    ldp #5h
              splk  #040h,r18     ;确定初始列
              ldp #5h
              lacl r17
               sacl r16           ;写初始行
              call write_ins1
              ldp #5h
              lacl r18             ;写初始列
              sacl r16
              call write_ins1
arrange11:    ldp #5h
              splk #00h,r16
              call write_data1
             ; call delay
              ldp #5h
              lacl r18
              add #1h         ;列自动加1,且人为设置的加一,起控制作用
              sacl r18
             ; call delay
            ldp #5h
              mar *,ar6
              lar  ar6,r18  
               lar  ar0,#128
             cmpr   01
             bcnd  arrange11,TC;列的数未加到64个跳出
             ldp #5h
             lacl r17
              add #1h
              sacl r17
              call delay
             lar ar5,r17
              lar ar0,#0c0h
             mar *,ar5
             cmpr  01
             bcnd arrange10,tc   ;未到8页循             
             ret

delay:   
         mar  *,ar3
         lar ar3,#7fffh
         lar   ar0,#00h
delay1:  sbrk  #1h
          nop

          cmpr 00
          bcnd    delay1,NTC
          ret 
          end   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -