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

📄 lcd12864.lis

📁 atmega128 adc LCD
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00E4           ;                       }
 00E4           ;               }
 00E4           ;       if (x < x1) {                                           /*地址进入左半屏范围*/
 00E4 4617              cp R20,R22
 00E6 50F4              brsh L31
 00E8                   .dbline 122
 00E8                   .dbline 123
 00E8           ;               LCD1_write_com(y | 0xB8);
 00E8 0A2D              mov R16,R10
 00EA 086B              ori R16,184
 00EC B3DF              xcall _LCD1_write_com
 00EE                   .dbline 124
 00EE           ;               LCD1_write_com(x | 0x40);
 00EE 042F              mov R16,R20
 00F0 0064              ori R16,64
 00F2 B0DF              xcall _LCD1_write_com
 00F4                   .dbline 125
 00F4           ;               }
 00F4 03C0              xjmp L31
 00F6           L30:
 00F6                   .dbline 126
 00F6                   .dbline 127
 00F6 0027              clr R16
 00F8 CDDF              xcall _LCD1_write_data
 00FA                   .dbline 128
 00FA 4395              inc R20
 00FC                   .dbline 129
 00FC           L31:
 00FC                   .dbline 126
 00FC           ;       while (x < x1) {
 00FC 4617              cp R20,R22
 00FE D8F3              brlo L30
 0100                   .dbline 132
 0100           ;               LCD1_write_data(0x00);
 0100           ;               x ++;
 0100           ;               }
 0100           ; 
 0100           ;       /*清除低位*/
 0100           ;       x = x0;
 0100 4C2D              mov R20,R12
 0102                   .dbline 133
 0102           ;       if (x < 63) {                                           /*地址在左半屏范围内*/
 0102 4F33              cpi R20,63
 0104 78F4              brsh L36
 0106                   .dbline 133
 0106                   .dbline 134
 0106           ;               LCD0_write_com((y+1) | 0xB8);
 0106 0A2D              mov R16,R10
 0108 0F5F              subi R16,255    ; addi 1
 010A 086B              ori R16,184
 010C 93DF              xcall _LCD0_write_com
 010E                   .dbline 135
 010E           ;               LCD0_write_com(x | 0x40);
 010E 042F              mov R16,R20
 0110 0064              ori R16,64
 0112 90DF              xcall _LCD0_write_com
 0114                   .dbline 136
 0114           ;               }
 0114 07C0              xjmp L36
 0116           L35:
 0116                   .dbline 137
 0116           ;       while (x < x1) {
 0116                   .dbline 138
 0116           ;               LCD0_write_data(0x00);
 0116 0027              clr R16
 0118 ADDF              xcall _LCD0_write_data
 011A                   .dbline 139
 011A           ;               x ++;
 011A 4395              inc R20
 011C                   .dbline 140
 011C           ;               if (x > 63) {                                   /*判断地址是否越界*/
 011C 8FE3              ldi R24,63
 011E 8417              cp R24,R20
 0120 08F4              brsh L38
 0122                   .dbline 140
 0122                   .dbline 141
 0122           ;                       break;
 0122 02C0              xjmp L37
 0124           L38:
 0124                   .dbline 143
 0124           L36:
 0124                   .dbline 137
 0124 4617              cp R20,R22
 0126 B8F3              brlo L35
 0128           L37:
 0128                   .dbline 144
 0128           ;                       }
 0128           ;               }
 0128           ;       if (x < x1) {                                           /*地址进入左半屏范围*/
 0128 4617              cp R20,R22
 012A 58F4              brsh L43
 012C                   .dbline 144
 012C                   .dbline 145
 012C           ;               LCD1_write_com((y+1) | 0xB8);
 012C 0A2D              mov R16,R10
 012E 0F5F              subi R16,255    ; addi 1
 0130 086B              ori R16,184
 0132 90DF              xcall _LCD1_write_com
 0134                   .dbline 146
 0134           ;               LCD1_write_com(x | 0x40);
 0134 042F              mov R16,R20
 0136 0064              ori R16,64
 0138 8DDF              xcall _LCD1_write_com
 013A                   .dbline 147
 013A           ;               }
 013A 03C0              xjmp L43
 013C           L42:
 013C                   .dbline 148
 013C                   .dbline 149
 013C 0027              clr R16
 013E AADF              xcall _LCD1_write_data
 0140                   .dbline 150
 0140 4395              inc R20
 0142                   .dbline 151
 0142           L43:
 0142                   .dbline 148
 0142           ;       while (x < x1) {
 0142 4617              cp R20,R22
 0144 D8F3              brlo L42
 0146                   .dbline -2
 0146           L20:
 0146 0E940000          xcall pop_gset4
 014A                   .dbline 0 ; func end
 014A 0895              ret
 014C                   .dbsym r x 20 c
 014C                   .dbsym r y 10 c
 014C                   .dbsym r x1 22 c
 014C                   .dbsym r x0 12 c
 014C                   .dbend
 014C                   .dbfunc e disp_char _disp_char fV
 014C           ;              q -> R20,R21
 014C           ;              i -> R22
 014C           ;          ascii -> y+8
 014C           ;              y -> R12
 014C           ;              x -> R10
                        .even
 014C           _disp_char::
 014C 0E940000          xcall push_gset4
 0150 C22E              mov R12,R18
 0152 A02E              mov R10,R16
 0154                   .dbline -1
 0154                   .dbline 155
 0154           ;               LCD1_write_data(0x00);
 0154           ;               x ++;
 0154           ;               }
 0154           ; }
 0154           ; 
 0154           ; /*在指定位置显示一个ASCII 字符*/
 0154           ; void disp_char(unsigned char x, unsigned char y, unsigned char ascii) {
 0154                   .dbline 157
 0154           ; 
 0154           ;       unsigned char i = 0x00;
 0154 6627              clr R22
 0156                   .dbline 161
 0156           ;       const unsigned char *q;                         /*取字库指针*/
 0156           ;       
 0156           ;       
 0156           ;       ascii -= 0x20;
 0156 8885              ldd R24,y+8
 0158 8052              subi R24,32
 015A 8887              std y+8,R24
 015C                   .dbline 162
 015C           ;       q = &ENGLISH_FONT[ascii * 16];          /*定位指针地址*/
 015C 80E1              ldi R24,16
 015E 0884              ldd R0,y+8
 0160 809D              mul R24,R0
 0162 A001              movw R20,R0
 0164 80E0              ldi R24,<_ENGLISH_FONT
 0166 90E0              ldi R25,>_ENGLISH_FONT
 0168 480F              add R20,R24
 016A 591F              adc R21,R25
 016C                   .dbline 165
 016C           ; 
 016C           ;       /*显示高8位*/   
 016C           ;       i = 0x00;
 016C                   .dbline 166
 016C           ;       if (x < 64) {                                           /*地址在左半屏范围内*/
 016C 8A2D              mov R24,R10
 016E 8034              cpi R24,64
 0170 A0F4              brsh L46
 0172                   .dbline 166
 0172                   .dbline 167
 0172           ;               LCD0_write_com(y | 0xB8);
 0172 0C2D              mov R16,R12
 0174 086B              ori R16,184
 0176 5EDF              xcall _LCD0_write_com
 0178                   .dbline 168
 0178           ;               LCD0_write_com(x | 0x40);
 0178 0A2D              mov R16,R10
 017A 0064              ori R16,64
 017C 5BDF              xcall _LCD0_write_com
 017E 0BC0              xjmp L49
 0180           L48:
 0180                   .dbline 169
 0180           ;               while (i < 8) {
 0180                   .dbline 170
 0180           ;                       LCD0_write_data(*q);
 0180 FA01              movw R30,R20
 0182 0491              lpm R16,Z
 0184 77DF              xcall _LCD0_write_data
 0186                   .dbline 171
 0186           ;                       q ++;
 0186 4F5F              subi R20,255  ; offset = 1
 0188 5F4F              sbci R21,255
 018A                   .dbline 172
 018A           ;                       x ++;
 018A A394              inc R10
 018C                   .dbline 173
 018C           ;                       i ++;
 018C 6395              inc R22
 018E                   .dbline 174
 018E           ;                       if (x > 63) {                           /*判断地址是否越界*/
 018E 8FE3              ldi R24,63
 0190 8A15              cp R24,R10
 0192 08F4              brsh L51
 0194                   .dbline 174
 0194                   .dbline 175
 0194           ;                               break;
 0194 02C0              xjmp L50
 0196           L51:
 0196                   .dbline 177
 0196           L49:
 0196                   .dbline 169
 0196 6830              cpi R22,8
 0198 98F3              brlo L48
 019A           L50:
 019A                   .dbline 178
 019A           ;                               }
 019A           ;                       }
 019A           ;               }
 019A           L46:
 019A                   .dbline 179
 019A           ;       if (i < 8) {                                            /*地址进入左半屏范围*/
 019A 6830              cpi R22,8
 019C 80F4              brsh L53
 019E                   .dbline 179
 019E                   .dbline 180
 019E           ;               LCD1_write_com(y | 0xB8);
 019E 0C2D              mov R16,R12
 01A0 086B              ori R16,184
 01A2 58DF              xcall _LCD1_write_com
 01A4                   .dbline 181
 01A4           ;               LCD1_write_com(x | 0x40);
 01A4 0A2D              mov R16,R10
 01A6 0064              ori R16,64
 01A8 55DF              xcall _LCD1_write_com
 01AA 07C0              xjmp L56
 01AC           L55:
 01AC                   .dbline 182
 01AC                   .dbline 183
 01AC FA01              movw R30,R20
 01AE 0491              lpm R16,Z
 01B0 71DF              xcall _LCD1_write_data
 01B2                   .dbline 184
 01B2 4F5F              subi R20,255  ; offset = 1
 01B4 5F4F              sbci R21,255
 01B6                   .dbline 185
 01B6 A394              inc R10
 01B8                   .dbline 186
 01B8 6395              inc R22
 01BA                   .dbline 187
 01BA           L56:
 01BA                   .dbline 182
 01BA           ;               while (i < 8) {
 01BA 6830              cpi R22,8
 01BC B8F3              brlo L55
 01BE                   .dbline 188
 01BE           ;                       LCD1_write_data(*q);
 01BE           ;                       q ++;
 01BE           ;                       x ++;
 01BE           ;                       i ++;
 01BE           ;                       }
 01BE           ;               }
 01BE           L53:
 01BE                   .dbline 191
 01BE           ; 
 01BE           ;       /*显示低8位*/
 01BE           ;       i = 0x00;
 01BE 6627              clr R22
 01C0                   .dbline 192
 01C0           ;       x -= 8;
 01C0 8A2D              mov R24,R10
 01C2 8850              subi R24,8
 01C4 A82E              mov R10,R24
 01C6                   .dbline 193
 01C6           ;       if (x < 64) {                                           /*地址在左半屏范围内*/
 01C6 8034              cpi R24,64
 01C8 A8F4              brsh L58
 01CA                   .dbline 193
 01CA                   .dbline 194
 01CA           ;               LCD0_write_com((y+1) | 0xB8);
 01CA 0C2D              mov R16,R12
 01CC 0F5F              subi R16,255    ; addi 1
 01CE 086B              ori R16,184
 01D0 31DF              xcall _LCD0_write_com
 01D2                   .dbline 195
 01D2           ;               LCD0_write_com(x | 0x40);
 01D2 0A2D              mov R16,R10
 01D4 0064              ori R16,64
 01D6 2EDF              xcall _LCD0_write_com
 01D8 0BC0              xjmp L61
 01DA           L60:
 01DA                   .dbline 196
 01DA           ;               while (i < 8) {
 01DA                   .dbline 197
 01DA           ;                       LCD0_write_data(*q);
 01DA FA01              movw R30,R20
 01DC 0491              lpm R16,Z
 01DE 4ADF              xcall _LCD0_write_data
 01E0                   .dbline 198
 01E0           ;                       q ++;
 01E0 4F5F              subi R20,255  ; offset = 1
 01E2 5F4F              sbci R21,255
 01E4                   .dbline 199
 01E4           ;                       x ++;
 01E4 A394              inc R10
 01E6                   .dbline 200
 01E6           ;                       i ++;
 01E6 6395              inc R22
 01E8                   .dbline 201
 01E8           ;                       if (x > 63) {                           /*判断地址是否越界*/
 01E8 8FE3              ldi R24,63
 01EA 8A15              cp R24,R10
 01EC 08F4              brsh L63
 01EE                   .dbline 201
 01EE                   .dbline 202
 01EE           ;                               break;
 01EE 02C0              xjmp L62
 01F0           L63:
 01F0                   .dbline 204
 01F0           L61:
 01F0                   .dbline 196
 01F0 6830              cpi R22,8
 01F2 98F3              brlo L60
 01F4           L62:
 01F4                   .dbline 205
 01F4           ;                               }
 01F4           ;                       }
 01F4           ;               }
 01F4           L58:
 01F4                   .dbline 206
 01F4           ;       if (i < 8) {                                            /*地址进入左半屏范围*/
 01F4 6830              cpi R22,8
 01F6 88F4              brsh L65
 01F8                   .dbline 206
 01F8                   .dbline 207
 01F8           ;               LCD1_write_com((y+1) | 0xB8);
 01F8 0C2D              mov R16,R12
 01FA 0F5F              subi R16,255    ; addi 1
 01FC 086B              ori R16,184
 01FE 2ADF              xcall _LCD1_write_com
 0200                   .dbline 208
 0200           ;               LCD1_write_com(x | 0x40);
 0200 0A2D              mov R16,R10
 0202 0064              ori R16,64
 0204 27DF              xcall _LCD1_write_com
 0206 07C0              xjmp L68
 0208           L67:
 0208                   .dbline 209
 0208                   .dbline 210
 0208 FA01              movw R30,R20
 020A 0491              lpm R16,Z
 020C 43DF              xcall _LCD1_write_data
 020E                   .dbline 211
 020E 4F5F              subi R20,255  ; offset = 1
 0210 5F4F              sbci R21,255
 0212                   .dbline 212
 0212 A394              inc R10
 0214                   .dbline 213
 0214 6395              inc R22
 0216                   .dbline 214
 0216           L68:
 0216                   .dbline 209
 0216           ;               while (i < 8) {
 0216 6830              cpi R22,8
 0218 B8F3              brlo L67
 021A                   .dbline 215
 021A           ;                       LCD1_write_data(*q);
 021A           ;                       q ++;
 021A           ;                       x ++;
 021A           ;                       i ++;

⌨️ 快捷键说明

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