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

📄 cal_lcd.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                brnz     blk_disp_5X7_1
.Blk_end5X7:                                                                              	
                ret                  
                  
;---------------------------------------------------------------------                  
                  
Display_5X7::             	              	
              	PP2One()           	
             	lda	GetCount
              	cmpe	#C_12
              	brnc	Display_5X7_1
              	lda	#max
              	sta	GetCount              	
            	ret                  
Display_5X7_1::  
		  PP2One()
Display_5X7_all:                               
                  lda      #@(dig5X7_tab)
                  sta      tab_ptr+1
                  lda      #<(dig5X7_tab)
                  sta      tab_ptr
                  lda      dig_num
                  adda     #0
                  rolc
                  adda     tab_ptr
                  sta      tab_ptr
                  lda      tab_ptr+1
                  addc     #0
                  sta      tab_ptr+1
                  
                  lda	   #0
                  sta      r_tpp
                  lda      tab_ptr+1
                  sta      r_tph
                  lda      tab_ptr
                  sta      r_tpl
                  ldv
                  sta      LCD_tab+1
                  ldv
                  sta      LCD_tab
           
                  lda      #@(font5X7)
                  sta      patent_tab+1
                  lda      #<(font5X7)
                  sta      patent_tab
                  lda      #row_num
                  sta      row_count
3$:
                  lda      patent_tab
                  adda     font
                  sta      patent_tab
                  lda      patent_tab+1
                  addc     #0
                  sta      patent_tab+1
                 
                  lda      row_count
                  deca
                  sta      row_count
                  brnz     3$
                  lda      #row_num
                  sta      row_count
disp_5X7loop:
                  lda	   #0
                  sta      r_tpp
                  lda      patent_tab+1
                  sta      r_tph
                  lda      patent_tab
                  sta      r_tpl
                  ldv
                  sta      asci_patent
                 
                  lda      #col_num
                  sta      col_count
disp_5X7_1:
		lda	#0
               	sta     r_tpp
                lda     LCD_tab+1
                sta    	r_tph
                lda     LCD_tab
                sta     r_tpl
		 		  		 
		  lda      #>asci_patent	  
		  sta	   PP
                  lda      asci_patent
                  adda     #0
                  rolc
                  sta      asci_patent
                  brnc     disp_5X7_2
                                                         
                 
               	;lda	#0
               	;sta     r_tpp
                ;lda     LCD_tab+1
                ;sta    	r_tph
                ;lda     LCD_tab
                ;sta     r_tpl
                ldv
                sta     DP
                ldv
                sta0	.Temp
                                 
                                  
               	  PP2Zero()
                  lda      I
                  ora      .Temp
                  sta      I                
                  br       disp_5X7_3
disp_5X7_2:               
                ;lda	#0
                ;sta     r_tpp
                ;lda     LCD_tab+1
                ;sta     r_tph
                ;lda     LCD_tab
                ;sta     r_tpl
                ldv
               	sta     DP
                ldv
                xora    #0ffh
               	sta0	.Temp
                           	                    
               	  PP2Zero()                 
                  lda      I
                  anda     .Temp
                  sta      I
disp_5X7_3:                 
                  PP2One()
		  lda      LCD_tab
                  adda     #2
                  sta      LCD_tab
                  lda      LCD_tab+1
                  addc     #0
                  sta      LCD_tab+1
                  lda      col_count
                  deca
                  sta      col_count
                  brnz     disp_5X7_1
                  
		  lda      patent_tab
                  adda     #1
                  sta      patent_tab
                  lda      patent_tab+1
                  addc     #0
                  sta      patent_tab+1
                  lda      row_count
                  deca
                  sta      row_count
                  brnz     disp_5X7loop 
.End5X7:                                                                                	
                  ret
                  
                  
;---------------------------------------------------------------------                  
                  

                         
                  
Display_seg7::
           	
              	PP2One()              	 
                  
                  ;lda      #^(seg7_tab)
                  ;sta      tab_ptr+2
                  lda      #@(seg7_tab)
                  sta      tab_ptr+1
                  lda      #<(seg7_tab)
                  sta      tab_ptr
                  lda      dig_num
                  adda     #0
                  rolc
                  adda     tab_ptr
                  sta      tab_ptr
                  lda      tab_ptr+1
                  addc     #0
                  sta      tab_ptr+1
                  
                  lda	   #0
                  sta      r_tpp
                  lda      tab_ptr+1
                  sta      r_tph
                  lda      tab_ptr
                  sta      r_tpl
                  lda      #0
                  sta      LCD_tab+2
                  ldv
                  sta      LCD_tab+1
                  ldv
                  sta      LCD_tab

                  lda      #@(seg_fnt)
                  sta      patent_tab+1
                  lda      #<(seg_fnt)
                  adda     font
                  sta      patent_tab
                  lda      patent_tab+1
                  addc     #0
                  sta      patent_tab+1
                  
                  lda      #0
                  sta      r_tpp
                  lda      patent_tab+1
                  sta      r_tph
                  lda      patent_tab
                  sta      r_tpl
3$:
                  lda      r_op1
                  anda     #10000000b
                  brz      3$
                  ldv
                  sta      asci_patent
                  

                  lda      #seg_num
                  sta      col_count
disp_seg7loop:
                  lda      asci_patent
                  adda     #0
                  rorc
                  sta      asci_patent
                  brnc     disp_seg7_1
                                                    
                  call	GetMatrixDotAddrBit                                 
                  lda     LCDaddr
                  sta      DP                  
           	  lda	  LCDbit
           	  sta0	  .Temp                  
               	  PP2Zero()
                  lda      I
                  ora      .Temp
                  sta      I
               	  PP2One()  
                  br       disp_seg7_2
                  
disp_seg7_1:
                  PP2One()                 
                  call	GetMatrixDotAddrBit                              
                  lda     LCDbit
                  xora     #0ffh
                  sta     LCDbit
                  lda     LCDaddr
                  sta      DP                  
                  lda	LCDbit                          
           	  sta0	.Temp                  
               	  PP2Zero()                 
                  lda      I
                  anda     .Temp
                  sta      I
              	  PP2One()
disp_seg7_2:
                  lda      LCD_tab
                  adda     #2
                  sta      LCD_tab
                  lda      LCD_tab+1
                  addc     #0
                  sta      LCD_tab+1
                  lda      col_count
                  deca
                  sta      col_count
                  brnz     disp_seg7loop                
                  
                  ret
                  
;---------------------------------------------------------------------                  
.include  "Cal_LCD.inc"                 ;0809
.include  "caldisp.inc" 

⌨️ 快捷键说明

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