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

📄 12864.lis

📁 12864.rar
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00C6                   .dbline 66
 00C6           ;        lcd_out(0xf8);
 00C6 08EF              ldi R16,248
 00C8 D0DF              xcall _lcd_out
 00CA                   .dbline 67
 00CA           ;        lcd_out(s);
 00CA 042F              mov R16,R20
 00CC CEDF              xcall _lcd_out
 00CE                   .dbline 68
 00CE           ;        s=dat&0x0f;
 00CE 462F              mov R20,R22
 00D0 4F70              andi R20,15
 00D2                   .dbline 69
 00D2           ;         s<<=4;
 00D2 842F              mov R24,R20
 00D4 8F70              andi R24,#0x0F
 00D6 8295              swap R24
 00D8 482F              mov R20,R24
 00DA                   .dbline 70
 00DA           ;        lcd_out(s);
 00DA 082F              mov R16,R24
 00DC C6DF              xcall _lcd_out
 00DE                   .dbline -2
 00DE           L30:
 00DE 0E940000          xcall pop_gset2
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbsym r s 20 c
 00E4                   .dbsym r dat 22 c
 00E4                   .dbend
 00E4                   .dbfunc e lcd_control _lcd_control fV
                        .even
 00E4           _lcd_control::
 00E4                   .dbline -1
 00E4                   .dbline 79
 00E4           ; }
 00E4           ; /*******************************************************/
 00E4           ; /******   函数名称:  lcd_control                  ******/
 00E4           ; /******   功    能:使用整体显示,基本指令集         ******/
 00E4           ; /******   参    数: 无                            ******/
 00E4           ; /******   返回值  : 无                            ******/
 00E4           ; /*******************************************************/
 00E4           ; void lcd_control()          
 00E4           ; {
 00E4                   .dbline 80
 00E4           ;       WR_control(0x30);
 00E4 00E3              ldi R16,48
 00E6 EADF              xcall _WR_control
 00E8                   .dbline 81
 00E8           ;       WR_control(0x0C);
 00E8 0CE0              ldi R16,12
 00EA E8DF              xcall _WR_control
 00EC                   .dbline -2
 00EC           L31:
 00EC                   .dbline 0 ; func end
 00EC 0895              ret
 00EE                   .dbend
 00EE                   .dbfunc e lcd_clear _lcd_clear fV
 00EE           ;              i -> R20,R21
                        .even
 00EE           _lcd_clear::
 00EE 0E940000          xcall push_gset1
 00F2                   .dbline -1
 00F2                   .dbline 90
 00F2           ; }
 00F2           ; /*******************************************************/
 00F2           ; /******   函数名称: lcd_clear()                   ******/
 00F2           ; /******   功    能: 清屏                          ******/
 00F2           ; /******   参    数: 无                            ******/
 00F2           ; /******   返回值  : 无                            ******/
 00F2           ; /*******************************************************/
 00F2           ; void lcd_clear()
 00F2           ; {
 00F2                   .dbline 92
 00F2           ;   int i;
 00F2           ;   WR_control(0x01);
 00F2 01E0              ldi R16,1
 00F4 E3DF              xcall _WR_control
 00F6                   .dbline 93
 00F6           ;   for(i=0;i<5000;i++) //      延时5ms
 00F6 4427              clr R20
 00F8 5527              clr R21
 00FA           L33:
 00FA                   .dbline 94
 00FA                   .dbline 95
 00FA 0000              nop
 00FC                   .dbline 96
 00FC 0000              nop
 00FE                   .dbline 98
 00FE           L34:
 00FE                   .dbline 93
 00FE 4F5F              subi R20,255  ; offset = 1
 0100 5F4F              sbci R21,255
 0102                   .dbline 93
 0102 4838              cpi R20,136
 0104 E3E1              ldi R30,19
 0106 5E07              cpc R21,R30
 0108 C4F3              brlt L33
 010A                   .dbline -2
 010A           L32:
 010A 0E940000          xcall pop_gset1
 010E                   .dbline 0 ; func end
 010E 0895              ret
 0110                   .dbsym r i 20 I
 0110                   .dbend
 0110                   .dbfunc e LCD_address _LCD_address fV
 0110           ;        address -> R20
 0110           ;              y -> R22
 0110           ;              x -> R20
                        .even
 0110           _LCD_address::
 0110 0E940000          xcall push_gset2
 0114 622F              mov R22,R18
 0116 402F              mov R20,R16
 0118                   .dbline -1
 0118                   .dbline 107
 0118           ;       {
 0118           ;               asm("nop");
 0118           ;               asm("nop");
 0118           ;               
 0118           ;       } 
 0118           ; }
 0118           ; /*******************************************************/
 0118           ; /******   函数名称: LCD_set_xy()                  ******/
 0118           ; /******   功    能: 设置LCD显示坐标               ******/
 0118           ; /******   参    数: 显示字符串的位置,X:0-15,Y:0-1*****/
 0118           ; /******   返回值  : 无                            ******/
 0118           ; /*******************************************************/
 0118           ; void LCD_address( unsigned char x, unsigned char y )
 0118           ; {
 0118                   .dbline 109
 0118           ;       unsigned char address;
 0118           ;       switch(x)
 0118 5527              clr R21
 011A 4030              cpi R20,0
 011C 4507              cpc R20,R21
 011E 69F0              breq L41
 0120           X0:
 0120 4130              cpi R20,1
 0122 E0E0              ldi R30,0
 0124 5E07              cpc R21,R30
 0126 61F0              breq L42
 0128 4230              cpi R20,2
 012A E0E0              ldi R30,0
 012C 5E07              cpc R21,R30
 012E 59F0              breq L43
 0130 4330              cpi R20,3
 0132 E0E0              ldi R30,0
 0134 5E07              cpc R21,R30
 0136 51F0              breq L44
 0138 0CC0              xjmp L38
 013A           X1:
 013A                   .dbline 110
 013A           ;       {
 013A           L41:
 013A                   .dbline 112
 013A           ;               case 0:
 013A           ;                          address = 0x80 + y;             //计算显示地址
 013A 462F              mov R20,R22
 013C 4058              subi R20,128    ; addi 128
 013E                   .dbline 113
 013E           ;                          break;
 013E 0BC0              xjmp L39
 0140           L42:
 0140                   .dbline 115
 0140           ;               case 1:
 0140           ;                          address = 0x90 + y;             //计算显示地址
 0140 462F              mov R20,R22
 0142 4057              subi R20,112    ; addi 144
 0144                   .dbline 116
 0144           ;                          break;
 0144 08C0              xjmp L39
 0146           L43:
 0146                   .dbline 118
 0146           ;               case 2:
 0146           ;                          address = 0x88 + y;             //计算显示地址
 0146 462F              mov R20,R22
 0148 4857              subi R20,120    ; addi 136
 014A                   .dbline 119
 014A           ;                          break;
 014A 05C0              xjmp L39
 014C           L44:
 014C                   .dbline 121
 014C           ;               case 3:
 014C           ;                          address = 0x98 + y;             //计算显示地址
 014C 462F              mov R20,R22
 014E 4856              subi R20,104    ; addi 152
 0150                   .dbline 122
 0150           ;                          break;
 0150 02C0              xjmp L39
 0152           L38:
 0152                   .dbline 123
 0152           ;               default:address = 0x80 + y;
 0152 462F              mov R20,R22
 0154 4058              subi R20,128    ; addi 128
 0156                   .dbline 124
 0156           ;       }
 0156           L39:
 0156                   .dbline 125
 0156           ;       WR_control( address);                                      //写地址命令
 0156 042F              mov R16,R20
 0158 B1DF              xcall _WR_control
 015A                   .dbline -2
 015A           L37:
 015A 0E940000          xcall pop_gset2
 015E                   .dbline 0 ; func end
 015E 0895              ret
 0160                   .dbsym r address 20 c
 0160                   .dbsym r y 22 c
 0160                   .dbsym r x 20 c
 0160                   .dbend
 0160                   .dbfunc e LCD_Write_string _LCD_Write_string fV
 0160           ;              s -> R20,R21
 0160           ;              Y -> R10
 0160           ;              X -> R22
                        .even
 0160           _LCD_Write_string::
 0160 0E940000          xcall push_gset3
 0164 A22E              mov R10,R18
 0166 602F              mov R22,R16
 0168 4E81              ldd R20,y+6
 016A 5F81              ldd R21,y+7
 016C                   .dbline -1
 016C                   .dbline 136
 016C           ; }
 016C           ; 
 016C           ; /*******************************************************/
 016C           ; /******   函数名称: LCD_write_string()            ******/
 016C           ; /******   功    能: 中英文字符串显示函数          ******/
 016C           ; /******   参    数:    *s--英文字符串指针          ******/
 016C           ; /******             X、Y--显示字符串的位置        ******/
 016C           ; /******   返回值  : 无                            ******/
 016C           ; /*******************************************************/
 016C           ; void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
 016C           ; {
 016C                   .dbline 138
 016C           ;     
 016C           ;       LCD_address( X, Y );                                            //写显示地址
 016C 2A2D              mov R18,R10
 016E 062F              mov R16,R22
 0170 CFDF              xcall _LCD_address
 0172 05C0              xjmp L47
 0174           L46:
 0174                   .dbline 140
 0174                   .dbline 141
 0174 FA01              movw R30,R20
 0176 0081              ldd R16,z+0
 0178 8DDF              xcall _WR_dat
 017A                   .dbline 142
 017A 4F5F              subi R20,255  ; offset = 1
 017C 5F4F              sbci R21,255
 017E                   .dbline 143
 017E           L47:
 017E                   .dbline 139
 017E           ;     while (*s)                                                                //是否到字符串尾
 017E FA01              movw R30,R20
 0180 2080              ldd R2,z+0
 0182 2220              tst R2
 0184 B9F7              brne L46
 0186                   .dbline -2
 0186           L45:
 0186 0E940000          xcall pop_gset3
 018A                   .dbline 0 ; func end
 018A 0895              ret
 018C                   .dbsym r s 20 pc
 018C                   .dbsym r Y 10 c
 018C                   .dbsym r X 22 c
 018C                   .dbend
 018C                   .dbfunc e BCD_ASCII _BCD_ASCII fc
 018C           ;            bcd -> R16
                        .even
 018C           _BCD_ASCII::
 018C                   .dbline -1
 018C                   .dbline 155
 018C           ;     {
 018C           ;       WR_dat (*s );                                           //写显示数据
 018C           ;               s ++;                                                           //字符串地址加1
 018C           ;       }
 018C           ; }
 018C           ; 
 018C           ; 
 018C           ; /******************************************************************************/ 
 018C           ; //函数功能:将BCD码转换为ASCII码函数 
 018C           ; //输入数据:BCD       
 018C           ; //输出:ASCII
 018C           ; //详见SCII码表
 018C           ; /******************************************************************************/ 
 018C           ; 
 018C           ; unsigned char BCD_ASCII(unsigned char bcd) 
 018C           ; { 
 018C                   .dbline 156
 018C           ;     bcd &= 0x0F; 
 018C 0F70              andi R16,15
 018E                   .dbline 157
 018E           ;     if(bcd > 9)  
 018E 89E0              ldi R24,9
 0190 8017              cp R24,R16
 0192 10F4              brsh L50
 0194                   .dbline 158
 0194           ;     bcd +=('7');     // 将A~F转换为ASCII 
 0194 095C              subi R16,201    ; addi 55
 0196 01C0              xjmp L51
 0198           L50:
 0198                   .dbline 160
 0198           ;     else 
 0198           ;     bcd += '0';         // 将0~9转换为ASCII 0~9 
 0198 005D              subi R16,208    ; addi 48
 019A           L51:
 019A                   .dbline 161
 019A           ;     return(bcd); 
 019A                   .dbline -2
 019A           L49:

⌨️ 快捷键说明

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