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

📄 1.lis

📁 这是个lcd12864液晶的串行驱动程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01C8           ; //----------------------------------------------------------------------------- 
 01C8           ; // LCD:DIlcdsplay ASCII. 
 01C8           ; //----------------------------------------------------------------------------- 
 01C8           ; void WriteDG(uchar XH_Dig,uchar adrPage,int adrColumn) 
 01C8           ; { 
 01C8                   .dbline 248
 01C8           ;    unsigned int  dptr;               // dptr_adderss for Dig code. 
 01C8           ;    unsigned char left, i, j; 
 01C8           ;    dptr = XH_Dig * 16; 
 01C8 80E1              ldi R24,16
 01CA 849F              mul R24,R20
 01CC 5001              movw R10,R0
 01CE                   .dbline 249
 01CE           ;    if(adrColumn-64 >= 0) left = 0;   // left = 0:for right. 
 01CE C601              movw R24,R12
 01D0 8054              subi R24,64
 01D2 9040              sbci R25,0
 01D4 8030              cpi R24,0
 01D6 E0E0              ldi R30,0
 01D8 9E07              cpc R25,R30
 01DA 14F0              brlt L49
 01DC                   .dbline 249
 01DC 6627              clr R22
 01DE 01C0              xjmp L50
 01E0           L49:
 01E0                   .dbline 250
 01E0           ;    else                  left = 1;   // left = 1:for left. 
 01E0 61E0              ldi R22,1
 01E2           L50:
 01E2                   .dbline 252
 01E2           ; 
 01E2           ;    for(i=0; i<2; i++) 
 01E2 4427              clr R20
 01E4 34C0              xjmp L54
 01E6           L51:
 01E6                   .dbline 253
 01E6           ;    { 
 01E6                   .dbline 254
 01E6           ;       if(left == 0) 
 01E6 6623              tst R22
 01E8 B1F4              brne L55
 01EA                   .dbline 255
 01EA           ;           {          Wrigt_Cmad(adrPage | 0xb8);   
 01EA                   .dbline 255
 01EA 0A85              ldd R16,y+10
 01EC 086B              ori R16,184
 01EE 37DF              xcall _Wrigt_Cmad
 01F0                   .dbline 256
 01F0           ;           Wrigt_Cmad(adrColumn | 0x40); 
 01F0 0C2D              mov R16,R12
 01F2 0064              ori R16,64
 01F4 34DF              xcall _Wrigt_Cmad
 01F6                   .dbline 257
 01F6 EE24              clr R14
 01F8 0BC0              xjmp L60
 01FA           L57:
 01FA                   .dbline 257
 01FA                   .dbline 258
 01FA 80E0              ldi R24,<_Dig
 01FC 90E0              ldi R25,>_Dig
 01FE F501              movw R30,R10
 0200 E80F              add R30,R24
 0202 F91F              adc R31,R25
 0204 0491              lpm R16,Z
 0206 42DF              xcall _Wrigt_Data
 0208                   .dbline 259
 0208 C501              movw R24,R10
 020A 0196              adiw R24,1
 020C 5C01              movw R10,R24
 020E                   .dbline 259
 020E           L58:
 020E                   .dbline 257
 020E E394              inc R14
 0210           L60:
 0210                   .dbline 257
 0210           ;           for(j=0; j< 8; j++)      { 
 0210 8E2D              mov R24,R14
 0212 8830              cpi R24,8
 0214 90F3              brlo L57
 0216                   .dbline 260
 0216           ;              Wrigt_Data(Dig[dptr]); 
 0216           ;              dptr = dptr + 1;      } 
 0216           ;       } 
 0216           L55:
 0216                   .dbline 261
 0216           ;       if(left == 1) 
 0216 6130              cpi R22,1
 0218 B1F4              brne L61
 021A                   .dbline 262
 021A           ;           {          Wleft_Cmad(adrPage | 0xb8); 
 021A                   .dbline 262
 021A 0A85              ldd R16,y+10
 021C 086B              ori R16,184
 021E F0DE              xcall _Wleft_Cmad
 0220                   .dbline 263
 0220           ;           Wleft_Cmad(adrColumn | 0x40); 
 0220 0C2D              mov R16,R12
 0222 0064              ori R16,64
 0224 EDDE              xcall _Wleft_Cmad
 0226                   .dbline 264
 0226 EE24              clr R14
 0228 0BC0              xjmp L66
 022A           L63:
 022A                   .dbline 264
 022A                   .dbline 265
 022A 80E0              ldi R24,<_Dig
 022C 90E0              ldi R25,>_Dig
 022E F501              movw R30,R10
 0230 E80F              add R30,R24
 0232 F91F              adc R31,R25
 0234 0491              lpm R16,Z
 0236 FBDE              xcall _Wleft_Data
 0238                   .dbline 266
 0238 C501              movw R24,R10
 023A 0196              adiw R24,1
 023C 5C01              movw R10,R24
 023E                   .dbline 266
 023E           L64:
 023E                   .dbline 264
 023E E394              inc R14
 0240           L66:
 0240                   .dbline 264
 0240           ;           for(j=0; j< 8; j++)      { 
 0240 8E2D              mov R24,R14
 0242 8830              cpi R24,8
 0244 90F3              brlo L63
 0246                   .dbline 267
 0246           ;              Wleft_Data(Dig[dptr]); 
 0246           ;              dptr = dptr + 1;      } 
 0246           ;       } 
 0246           L61:
 0246                   .dbline 268
 0246 0A84              ldd R0,y+10
 0248 0394              inc R0
 024A 0A86              std y+10,R0
 024C                   .dbline 269
 024C           L52:
 024C                   .dbline 252
 024C 4395              inc R20
 024E           L54:
 024E                   .dbline 252
 024E 4230              cpi R20,2
 0250 08F4              brsh X1
 0252 C9CF              xjmp L51
 0254           X1:
 0254                   .dbline -2
 0254           L48:
 0254 0E940000          xcall pop_gset5
 0258 2296              adiw R28,2
 025A                   .dbline 0 ; func end
 025A 0895              ret
 025C                   .dbsym r i 20 c
 025C                   .dbsym r left 22 c
 025C                   .dbsym r j 14 c
 025C                   .dbsym r dptr 10 i
 025C                   .dbsym r adrColumn 12 I
 025C                   .dbsym l adrPage 10 c
 025C                   .dbsym r XH_Dig 20 c
 025C                   .dbend
 025C                   .dbfunc e delay_1ms _delay_1ms fV
 025C           ;              i -> R16,R17
                        .even
 025C           _delay_1ms::
 025C                   .dbline -1
 025C                   .dbline 274
 025C           ;           adrPage = adrPage + 1; 
 025C           ;    } 
 025C           ; } 
 025C           ; 
 025C           ; #define xtal 4    
 025C           ; void delay_1ms(void) 
 025C           ; { unsigned int i; 
 025C                   .dbline 275
 025C           ;  for(i=1;i<(unsigned int)(xtal*143-2);i++) 
 025C 01E0              ldi R16,1
 025E 10E0              ldi R17,0
 0260 02C0              xjmp L71
 0262           L68:
 0262                   .dbline 276
 0262           L69:
 0262                   .dbline 275
 0262 0F5F              subi R16,255  ; offset = 1
 0264 1F4F              sbci R17,255
 0266           L71:
 0266                   .dbline 275
 0266 0A33              cpi R16,58
 0268 E2E0              ldi R30,2
 026A 1E07              cpc R17,R30
 026C D0F3              brlo L68
 026E                   .dbline -2
 026E           L67:
 026E                   .dbline 0 ; func end
 026E 0895              ret
 0270                   .dbsym r i 16 i
 0270                   .dbend
 0270                   .dbfunc e delay_ms _delay_ms fV
 0270           ;              i -> R20,R21
 0270           ;              n -> R22,R23
                        .even
 0270           _delay_ms::
 0270 0E940000          xcall push_gset2
 0274 B801              movw R22,R16
 0276                   .dbline -1
 0276                   .dbline 279
 0276           ;     ; 
 0276           ; } 
 0276           ; void delay_ms(unsigned int n) 
 0276           ; { 
 0276                   .dbline 280
 0276           ;  unsigned int i=0; 
 0276 4427              clr R20
 0278 5527              clr R21
 027A 03C0              xjmp L74
 027C           L73:
 027C                   .dbline 282
 027C                   .dbline 282
 027C EFDF              xcall _delay_1ms
 027E                   .dbline 283
 027E 4F5F              subi R20,255  ; offset = 1
 0280 5F4F              sbci R21,255
 0282                   .dbline 284
 0282           L74:
 0282                   .dbline 281
 0282           ;    while(i<n) 
 0282 4617              cp R20,R22
 0284 5707              cpc R21,R23
 0286 D0F3              brlo L73
 0288                   .dbline -2
 0288           L72:
 0288 0E940000          xcall pop_gset2
 028C                   .dbline 0 ; func end
 028C 0895              ret
 028E                   .dbsym r i 20 i
 028E                   .dbsym r n 22 i
 028E                   .dbend
 028E                   .dbfunc e main _main fV
                        .even
 028E           _main::
 028E 2397              sbiw R28,3
 0290                   .dbline -1
 0290                   .dbline 289
 0290           ;    {delay_1ms(); 
 0290           ;     i++; 
 0290           ;    } 
 0290           ; } 
 0290           ; 
 0290           ; 
 0290           ; void main() 
 0290           ; { 
 0290                   .dbline 290
 0290           ;    PORTA = 0x00; 
 0290 2224              clr R2
 0292 2BBA              out 0x1b,R2
 0294                   .dbline 291
 0294           ;    DDRA  = 0xFF; 
 0294 8FEF              ldi R24,255
 0296 8ABB              out 0x1a,R24
 0298                   .dbline 292
 0298           ;    DDRB  = 0xff ; 
 0298 87BB              out 0x17,R24
 029A                   .dbline 293
 029A           ;    PORTB=0xff; 
 029A 88BB              out 0x18,R24
 029C                   .dbline 294
 029C           ;    PORTC = 0xff; 
 029C 85BB              out 0x15,R24
 029E                   .dbline 295
 029E           ;    DDRC  = 0xFF; 
 029E 84BB              out 0x14,R24
 02A0                   .dbline 296
 02A0           ;    PORTC = 0xff; 
 02A0 85BB              out 0x15,R24
 02A2                   .dbline 297
 02A2           ;    PORTD = 0xFF;  
 02A2 82BB              out 0x12,R24
 02A4                   .dbline 298
 02A4           ;    LCD_INT(); 
 02A4 0BDF              xcall _LCD_INT
 02A6                   .dbline 299
 02A6           ;    LCD_CLR(); 
 02A6 13DF              xcall _LCD_CLR
 02A8                   .dbline 300
 02A8           ;    WriteHZ(12, 0, 5, 64);         // 氧电势 
 02A8 80E4              ldi R24,64
 02AA 8A83              std y+2,R24
 02AC 85E0              ldi R24,5
 02AE 90E0              ldi R25,0
 02B0 9983              std y+1,R25
 02B2 8883              std y+0,R24
 02B4 2227              clr R18
 02B6 0CE0              ldi R16,12
 02B8 27DF              xcall _WriteHZ
 02BA                   .dbline 301
 02BA           ;    WriteHZ(17, 0, 108, 16);       // mv 
 02BA 80E1              ldi R24,16
 02BC 8A83              std y+2,R24
 02BE 8CE6              ldi R24,108
 02C0 90E0              ldi R25,0
 02C2 9983              std y+1,R25
 02C4 8883              std y+0,R24
 02C6 2227              clr R18
 02C8 01E1              ldi R16,17
 02CA 1EDF              xcall _WriteHZ
 02CC                   .dbline 302
 02CC           ;    WriteHZ(0, 2, 0, 64);          // 氧量 
 02CC 80E4              ldi R24,64
 02CE 8A83              std y+2,R24
 02D0 2224              clr R2
 02D2 3324              clr R3
 02D4 3982              std y+1,R3
 02D6 2882              std y+0,R2
 02D8 22E0              ldi R18,2
 02DA 0027              clr R16
 02DC 15DF              xcall _WriteHZ
 02DE                   .dbline 303
 02DE           ;    WriteDG(11, 2, 108);           // % 
 02DE 8CE6              ldi R24,108
 02E0 90E0              ldi R25,0
 02E2 9983              std y+1,R25
 02E4 8883              std y+0,R24
 02E6 22E0              ldi R18,2
 02E8 0BE0              ldi R16,11
 02EA 67DF              xcall _WriteDG
 02EC                   .dbline 304
 02EC           ;    WriteHZ(8, 4, 0, 64);          // 热电势 
 02EC 80E4              ldi R24,64
 02EE 8A83              std y+2,R24
 02F0 2224              clr R2
 02F2 3324              clr R3
 02F4 3982              std y+1,R3
 02F6 2882              std y+0,R2
 02F8 24E0              ldi R18,4
 02FA 08E0              ldi R16,8
 02FC 05DF              xcall _WriteHZ
 02FE                   .dbline 305
 02FE           ;    WriteHZ(17, 4, 108, 16);       // mv          
 02FE 80E1              ldi R24,16
 0300 8A83              std y+2,R24
 0302 8CE6              ldi R24,108
 0304 90E0              ldi R25,0
 0306 9983              std y+1,R25
 0308 8883              std y+0,R24
 030A 24E0              ldi R18,4
 030C 01E1              ldi R16,17
 030E FCDE              xcall _WriteHZ
 0310                   .dbline 306
 0310           ;    WriteHZ(4, 6, 0, 64);          // 温度 
 0310 80E4              ldi R24,64
 0312 8A83              std y+2,R24
 0314 2224              clr R2
 0316 3324              clr R3
 0318 3982              std y+1,R3
 031A 2882              std y+0,R2
 031C 26E0              ldi R18,6
 031E 04E0              ldi R16,4
 0320 F3DE              xcall _WriteHZ
 0322                   .dbline 307
 0322           ;    WriteHZ(16, 6,108, 16);         // C 
 0322 80E1              ldi R24,16
 0324 8A83              std y+2,R24
 0326 8CE6              ldi R24,108
 0328 90E0              ldi R25,0
 032A 9983              std y+1,R25
 032C 8883              std y+0,R24
 032E 26E0              ldi R18,6
 0330 00E1              ldi R16,16
 0332 EADE              xcall _WriteHZ
 0334                   .dbline -2
 0334           L76:
 0334 2396              adiw R28,3
 0336                   .dbline 0 ; func end
 0336 0895              ret
 0338                   .dbend

⌨️ 快捷键说明

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