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

📄 hzmmi.lis

📁 atmel的atmega128外扩ram对液晶的驱动调试程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                       ;       dis_code -> R12
                       ;             pt -> y+11
                       ;              i -> R14
                       ;              w -> R10
                       ;              q -> y+10
                       ;       address1 -> y+8
                       ;            str -> R20,R21
                       ;            col -> R10
                       ;            row -> R12
                         .even
 02D0                 _str_hz::
 02D0 0E940000          xcall push_gset5
 02D4 A22E              mov R10,R18
 02D6 C02E              mov R12,R16
 02D8 2D97              sbiw R28,13
 02DA 4F89              ldd R20,y+23
 02DC 588D              ldd R21,y+24
 02DE                   .dbline -1
 02DE                   .dbline 289
                       ; 
                       ; //显示汉字串及大ASCII串
                       ; void str_hz(byte row,byte col,byte *str)
                       ; {
 02DE                   .dbline 296
                       ;   byte q,w,i,dis_code;
                       ;   int address1,lrow,lcol;
                       ;   byte *pt;
                       ;   unsigned int aa;
                       ;    long zk;
                       ;             
                       ;   lrow=(row)%80;             //设置行
 02DE 20E5              ldi R18,80
 02E0 30E0              ldi R19,0
 02E2 0C2D              mov R16,R12
 02E4 1127              clr R17
 02E6 0E940000          xcall mod16s
 02EA 0E83              std y+6,R16
 02EC 1F83              std y+7,R17
 02EE                   .dbline 297
                       ;   lcol=(col*8)%160;     //列            
 02EE 20EA              ldi R18,160
 02F0 30E0              ldi R19,0
 02F2 0A2D              mov R16,R10
 02F4 1127              clr R17
 02F6 000F              lsl R16
 02F8 111F              rol R17
 02FA 000F              lsl R16
 02FC 111F              rol R17
 02FE 000F              lsl R16
 0300 111F              rol R17
 0302 0E940000          xcall mod16s
 0306 B801              movw R22,R16
 0308                   .dbline 298
                       ;   for(;*str;)
 0308 C2C1              xjmp L60
 030A                 L57:
 030A                   .dbline 299
                       ;   {                   //如果*str=0,则退出循环    
 030A                   .dbline 300
                       ;       if(*str<160)          //如果是ASC码字符,<A0H
 030A FA01              movw R30,R20
 030C 8081              ldd R24,z+0
 030E 803A              cpi R24,160
 0310 08F0              brlo X3
 0312 A9C0              xjmp L61
 0314                 X3:
 0314                   .dbline 301
                       ;       {
 0314                   .dbline 302
                       ;          q=(*str++);
 0314 1A01              movw R2,R20
 0316 C101              movw R24,R2
 0318 0196              adiw R24,1
 031A AC01              movw R20,R24
 031C F101              movw R30,R2
 031E 2080              ldd R2,z+0
 0320 2A86              std y+10,R2
 0322                   .dbline 303
                       ;          if(q==13)  //处理回车符
 0322 8A85              ldd R24,y+10
 0324 8D30              cpi R24,13
 0326 41F4              brne L63
 0328                   .dbline 304
                       ;          {
 0328                   .dbline 305
                       ;           lrow+=16;        //换两行
 0328 8E81              ldd R24,y+6
 032A 9F81              ldd R25,y+7
 032C 4096              adiw R24,16
 032E 8E83              std y+6,R24
 0330 9F83              std y+7,R25
 0332                   .dbline 306
                       ;           lcol=0;         //列的开始
 0332 6627              clr R22
 0334 7727              clr R23
 0336                   .dbline 307
                       ;           continue;
 0336 ABC1              xjmp L58
 0338                 L63:
 0338                   .dbline 309
                       ;          }
                       ;          if(q<0x20) continue;                //为不可见字符,继续循环        
 0338 8A85              ldd R24,y+10
 033A 8032              cpi R24,32
 033C 08F4              brsh L65
 033E                   .dbline 309
 033E A7C1              xjmp L58
 0340                 L65:
 0340                   .dbline 310
                       ;          zk=q*16l+0x100l+0x800l;             
 0340 84E0              ldi R24,4
 0342 90E0              ldi R25,0
 0344 2A84              ldd R2,y+10
 0346 3324              clr R3
 0348 4424              clr R4
 034A 5524              clr R5
 034C 8A93              st -y,R24
 034E 8101              movw R16,R2
 0350 9201              movw R18,R4
 0352 0E940000          xcall lsl32
 0356 1801              movw R2,R16
 0358 2901              movw R4,R18
 035A 00E0              ldi R16,<L67
 035C 10E0              ldi R17,>L67
 035E 0E940000          xcall lpm32
 0362 200E              add R2,R16
 0364 311E              adc R3,R17
 0366 421E              adc R4,R18
 0368 531E              adc R5,R19
 036A 00E0              ldi R16,<L68
 036C 10E0              ldi R17,>L68
 036E 0E940000          xcall lpm32
 0372 200E              add R2,R16
 0374 311E              adc R3,R17
 0376 421E              adc R4,R18
 0378 531E              adc R5,R19
 037A FE01              movw R30,R28
 037C 2082              std z+0,R2
 037E 3182              std z+1,R3
 0380 4282              std z+2,R4
 0382 5382              std z+3,R5
 0384                   .dbline 311
                       ;          lib_addr.l=zk<<2;      
 0384 82E0              ldi R24,2
 0386 90E0              ldi R25,0
 0388 8A93              st -y,R24
 038A 8101              movw R16,R2
 038C 9201              movw R18,R4
 038E 0E940000          xcall lsl32
 0392 10938400          sts _lib_addr+1,R17
 0396 00938300          sts _lib_addr,R16
 039A 30938600          sts _lib_addr+2+1,R19
 039E 20938500          sts _lib_addr+2,R18
 03A2                   .dbline 312
                       ;          PORTF=lib_addr.bytes.a2 & 0x0f;    
 03A2 80918500          lds R24,_lib_addr+2
 03A6 8F70              andi R24,15
 03A8 80936200          sts 98,R24
 03AC                   .dbline 313
                       ;          aa=zk;
 03AC FE01              movw R30,R28
 03AE 2080              ldd R2,z+0
 03B0 3180              ldd R3,z+1
 03B2 2C82              std y+4,R2
 03B4 3D82              std y+5,R3
 03B6                   .dbline 314
                       ;          aa=(aa & 0x3fff)|0xc000;       
 03B6 8C81              ldd R24,y+4
 03B8 9D81              ldd R25,y+5
 03BA 9F73              andi R25,63
 03BC 906C              ori R25,192
 03BE 8C83              std y+4,R24
 03C0 9D83              std y+5,R25
 03C2                   .dbline 315
                       ;          pt=(byte *)aa;
 03C2 2C80              ldd R2,y+4
 03C4 3D80              ldd R3,y+5
 03C6 2B86              std y+11,R2
 03C8 3C86              std y+12,R3
 03CA                   .dbline 316
                       ;          address1=lrow;
 03CA 2E80              ldd R2,y+6
 03CC 3F80              ldd R3,y+7
 03CE 2886              std y+8,R2
 03D0 3986              std y+9,R3
 03D2                   .dbline 317
                       ;              address1=DIS_LEN*address1+lcol/8;
 03D2 28E0              ldi R18,8
 03D4 30E0              ldi R19,0
 03D6 8B01              movw R16,R22
 03D8 0E940000          xcall div16s
 03DC 1801              movw R2,R16
 03DE 25E0              ldi R18,5
 03E0 30E0              ldi R19,0
 03E2 0885              ldd R16,y+8
 03E4 1985              ldd R17,y+9
 03E6 0E940000          xcall lsl16
 03EA 2801              movw R4,R16
 03EC 420C              add R4,R2
 03EE 531C              adc R5,R3
 03F0 4886              std y+8,R4
 03F2 5986              std y+9,R5
 03F4                   .dbline 318
                       ;              address1=address1+START_ADDRESS;           //+图形地址偏移量           
 03F4                   .dbline 319
 03F4 EE24              clr R14
 03F6 25C0              xjmp L73
 03F8                 L70:
 03F8                   .dbline 319
 03F8                   .dbline 320
 03F8 20E0              ldi R18,256
 03FA 31E0              ldi R19,1
 03FC 0885              ldd R16,y+8
 03FE 1985              ldd R17,y+9
 0400 0E940000          xcall div16s
 0404 0A87              std y+10,R16
 0406                   .dbline 321
 0406 20E0              ldi R18,256
 0408 31E0              ldi R19,1
 040A 0885              ldd R16,y+8
 040C 1985              ldd R17,y+9
 040E 0E940000          xcall mod16s
 0412 5801              movw R10,R16
 0414                   .dbline 323
 0414 0A2D              mov R16,R10
 0416 F0DE              xcall _write_data
 0418                   .dbline 324
 0418 0A85              ldd R16,y+10
 041A EEDE              xcall _write_data
 041C                   .dbline 326
 041C 04E2              ldi R16,36
 041E D7DE              xcall _write_order
 0420                   .dbline 327
 0420 EB85              ldd R30,y+11
 0422 FC85              ldd R31,y+12
 0424 0081              ldd R16,z+0
 0426 E8DE              xcall _write_data
 0428                   .dbline 328
 0428 00EC              ldi R16,192
 042A D1DE              xcall _write_order
 042C                   .dbline 329
 042C 8B85              ldd R24,y+11
 042E 9C85              ldd R25,y+12
 0430 0196              adiw R24,1
 0432 8B87              std y+11,R24
 0434 9C87              std y+12,R25
 0436                   .dbline 330
 0436 8885              ldd R24,y+8
 0438 9985              ldd R25,y+9
 043A 8096              adiw R24,32
 043C 8887              std y+8,R24
 043E 9987              std y+9,R25
 0440                   .dbline 331
 0440                 L71:
 0440                   .dbline 319
 0440 E394              inc R14
 0442                 L73:
 0442                   .dbline 319
                       ;              for(i=0;i<16;i++){      
 0442 8E2D              mov R24,R14
 0444 8031              cpi R24,16
 0446 C0F2              brlo L70
 0448                   .dbline 332
                       ;                 q=address1/0x100;           //地址高位
                       ;                 w=address1%0x100;           //地址低位
                       ;         
                       ;                 write_data(w);               //送低地址
                       ;                 write_data(q);               //送高地址
                       ;                 
                       ;          write_order(0x24);           //设置显示RAM地址                      
                       ;                  write_data(*pt);
                       ;                  write_order(0x0c0);          //设置一次写数据指令代码  
                       ;                 pt++;                      
                       ;                address1=address1+DIS_LEN;    //地址调整到下一行
                       ;              }
                       ;           lcol=lcol+8;                    //
 0448 685F              subi R22,248  ; offset = 8
 044A 7F4F              sbci R23,255
 044C                   .dbline 333
                       ;           if(lcol>=160)
 044C 603A              cpi R22,160
 044E E0E0              ldi R30,0
 0450 7E07              cpc R23,R30
 0452 0CF4              brge X4
 0454 1CC1              xjmp L58
 0456                 X4:
 0456                   .dbline 334
                       ;           {
 0456                   .dbline 335
                       ;            lrow+=16;
 0456 8E81              ldd R24,y+6
 0458 9F81              ldd R25,y+7
 045A 4096              adiw R24,16
 045C 8E83              std y+6,R24
 045E 9F83              std y+7,R25
 0460                   .dbline 336
                       ;            lcol=0;
 0460 6627              clr R22
 0462 7727              clr R23
 0464                   .dbline 337
                       ;           } 
 0464                   .dbline 338
                       ;           continue;
 0464 14C1              xjmp L58
 0466                 L61:
 0466                   .dbline 341
                       ;       }
                       ; 
                       ;       q=(*str++)-160;
 0466 1A01              movw R2,R20
 0468 C101              movw R24,R2
 046A 0196              adiw R24,1
 046C AC01              movw R20,R24
 046E F101              movw R30,R2
 0470 8081              ldd R24,z+0
 0472 805A              subi R24,160

⌨️ 快捷键说明

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