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

📄 hzmmi.lis

📁 atmel的atmega128外扩ram对液晶的驱动调试程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01F2 0E940000          xcall pop_gset1
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbsym l pt 1 pc
 01F8                   .dbsym r order 20 c
 01F8                   .dbfunc s write_data _write_data fI
                       ;             pt -> <dead>
                       ;           data -> R20
                         .even
 01F8                 _write_data::
 01F8 0E940000          xcall push_gset1
 01FC 402F              mov R20,R16
 01FE                   .dbline -1
 01FE                   .dbline 200
                       ; 
                       ; 
                       ; void write_data(byte data)
                       ; {
 01FE                   .dbline 203
                       ; byte *pt; 
                       ; 
                       ;         wait_disp();
 01FE CDDF              xcall _wait_disp
 0200                   .dbline 204
                       ;         PORTD&=~LCD_ID;       //CD=0
 0200 9698              cbi 0x12,6
 0202                   .dbline 205
                       ;     PORTD&=~LCD_ID;       //CD=0
 0202 9698              cbi 0x12,6
 0204                   .dbline 206
                       ;     PORTD&=~LCD_ID;       //CD=0    
 0204 9698              cbi 0x12,6
 0206                   .dbline 207
                       ;     PORTD&=~LCD_CS;       //CS=0
 0206 9598              cbi 0x12,5
 0208                   .dbline 208
                       ;     PORTD&=~LCD_CS;       //CS=0
 0208 9598              cbi 0x12,5
 020A                   .dbline 209
                       ;     PORTD&=~LCD_CS;       //CS=0          
 020A 9598              cbi 0x12,5
 020C                   .dbline 210
                       ;     *(byte*)0x8000=data;              //命令码      
 020C 40930080          sts 32768,R20
 0210                   .dbline 211
                       ;     PORTD|=LCD_CS;       //CS=1
 0210 959A              sbi 0x12,5
 0212                   .dbline 212
                       ;     PORTD|=LCD_CS;       //CS=1
 0212 959A              sbi 0x12,5
 0214                   .dbline 213
                       ;     PORTD|=LCD_CS;       //CS=1
 0214 959A              sbi 0x12,5
 0216                   .dbline -2
 0216                   .dbline 215
                       ;     
                       ; }
 0216                 L41:
 0216 0E940000          xcall pop_gset1
 021A                   .dbline 0 ; func end
 021A 0895              ret
 021C                   .dbsym l pt 1 pc
 021C                   .dbsym r data 20 c
 021C                   .dbfunc s cls _cls fI
                       ;              i -> R20,R21
                         .even
 021C                 _cls::
 021C 0E940000          xcall push_gset1
 0220                   .dbline -1
 0220                   .dbline 219
                       ; 
                       ; //清屏
                       ; void cls(void)
                       ; {
 0220                   .dbline 222
                       ;     int i;
                       ;     
                       ;         write_data(00);          //设置显示储存器首地址
 0220 0027              clr R16
 0222 EADF              xcall _write_data
 0224                   .dbline 223
                       ;         write_data(00);
 0224 0027              clr R16
 0226 E8DF              xcall _write_data
 0228                   .dbline 224
                       ;         write_order(0x24);
 0228 04E2              ldi R16,36
 022A D1DF              xcall _write_order
 022C                   .dbline 225
                       ;         write_order(0xb0);       //设置自动写方式
 022C 00EB              ldi R16,176
 022E CFDF              xcall _write_order
 0230                   .dbline 226
                       ;         wait_disp();
 0230 B4DF              xcall _wait_disp
 0232                   .dbline 227
                       ;         for(i=0;i<8000;i++)     //8k显示存储器填00
 0232 4427              clr R20
 0234 5527              clr R21
 0236                 L43:
 0236                   .dbline 228
 0236                   .dbline 229
 0236 0027              clr R16
 0238 0BD0              xcall _write_data_auto
 023A                   .dbline 230
 023A                 L44:
 023A                   .dbline 227
 023A 4F5F              subi R20,255  ; offset = 1
 023C 5F4F              sbci R21,255
 023E                   .dbline 227
 023E 4034              cpi R20,64
 0240 EFE1              ldi R30,31
 0242 5E07              cpc R21,R30
 0244 C4F3              brlt L43
 0246                   .dbline 231
                       ;         {
                       ;           write_data_auto(0x00);
                       ;         }   
                       ;     write_order(0xb2); 
 0246 02EB              ldi R16,178
 0248 C2DF              xcall _write_order
 024A                   .dbline -2
 024A                   .dbline 232
                       ; }
 024A                 L42:
 024A 0E940000          xcall pop_gset1
 024E                   .dbline 0 ; func end
 024E 0895              ret
 0250                   .dbsym r i 20 I
 0250                   .dbfunc s write_data_auto _write_data_auto fI
                       ;           data -> R20
                         .even
 0250                 _write_data_auto::
 0250 0E940000          xcall push_gset1
 0254 402F              mov R20,R16
 0256                   .dbline -1
 0256                   .dbline 235
                       ; 
                       ; void write_data_auto(byte data)
                       ; {
 0256                   .dbline 236
                       ;     wait_disp_auto();
 0256 05D0              xcall _wait_disp_auto
 0258                   .dbline 237
                       ;         write_data(data);
 0258 042F              mov R16,R20
 025A CEDF              xcall _write_data
 025C                   .dbline -2
 025C                   .dbline 238
                       ; }
 025C                 L47:
 025C 0E940000          xcall pop_gset1
 0260                   .dbline 0 ; func end
 0260 0895              ret
 0262                   .dbsym r data 20 c
 0262                   .dbfunc s wait_disp_auto _wait_disp_auto fI
                       ;           flag -> R16
                         .even
 0262                 _wait_disp_auto::
 0262                   .dbline -1
 0262                   .dbline 242
                       ; 
                       ; //数据自动写状态忙等待
                       ; void wait_disp_auto(void)
                       ; {
 0262                   .dbline 245
                       ; byte flag;
                       ; 
                       ;     PORTA=0xff;
 0262 8FEF              ldi R24,255
 0264 8BBB              out 0x1b,R24
 0266                   .dbline 246
                       ;     DDRA=0;                   //A口为输入   
 0266 2224              clr R2
 0268 2ABA              out 0x1a,R2
 026A                   .dbline 247
                       ;         PORTD|=LCD_ID;               //CD=1 
 026A 969A              sbi 0x12,6
 026C                   .dbline 248
                       ;     PORTD|=LCD_ID;               //CD=1         
 026C 969A              sbi 0x12,6
 026E                   .dbline 249
                       ;     PORTD&=~LCD_CS;           //CE=0
 026E 9598              cbi 0x12,5
 0270                   .dbline 250
                       ;     PORTD&=~LCD_CS;           //CE=0
 0270 9598              cbi 0x12,5
 0272                   .dbline 251
                       ;     PORTD&=~LCD_CS;           //CE=0    
 0272 9598              cbi 0x12,5
 0274                   .dbline 252
                       ;     for(;;)
 0274                 L49:
 0274                   .dbline 253
                       ;     {        
 0274                   .dbline 254
                       ;         flag=*(byte*)0x8000;                   
 0274 00910080          lds R16,32768
 0278                   .dbline 255
                       ;         if(flag & LCD_BUSY_S3){     //判断液晶忙否?                                            
 0278 03FF              sbrs R16,3
 027A FCCF              rjmp L49
 027C                   .dbline 255
 027C                   .dbline 256
                       ;           PORTD|=LCD_CS|LCD_ID;         //CE=1,ID=1
 027C 82B3              in R24,0x12
 027E 8066              ori R24,96
 0280 82BB              out 0x12,R24
 0282                   .dbline 257
                       ;           PORTD|=LCD_CS|LCD_ID;         //CE=1,ID=1 
 0282 82B3              in R24,0x12
 0284 8066              ori R24,96
 0286 82BB              out 0x12,R24
 0288                   .dbline 258
                       ;           return;
 0288                   .dbline 260
                       ;         }       
                       ;     }   
 0288                   .dbline 252
 0288                   .dbline 252
 0288                   .dbline -2
 0288                 L48:
 0288                   .dbline 0 ; func end
 0288 0895              ret
 028A                   .dbsym r flag 16 c
 028A                   .dbfunc s init_disp _init_disp fI
                         .even
 028A                 _init_disp::
 028A                   .dbline -1
 028A                   .dbline 267
                       ; }
                       ; 
                       ; 
                       ; 
                       ; //对液晶初始化,清屏
                       ; void init_disp(void)
                       ; {
 028A                   .dbline 268
                       ;     PORTD&=~LCD_RST;              //LCD_RST=0   
 028A 9798              cbi 0x12,7
 028C                   .dbline 269
                       ;     PORTD&=~LCD_RST;              //LCD_RST=0       
 028C 9798              cbi 0x12,7
 028E                   .dbline 270
                       ;     dlyms(2);
 028E 02E0              ldi R16,2
 0290 10E0              ldi R17,0
 0292 66DF              xcall _dlyms
 0294                   .dbline 271
                       ;     PORTD|=LCD_RST;              //LCD_RST=1
 0294 979A              sbi 0x12,7
 0296                   .dbline 272
                       ;     PORTD|=LCD_RST;              //LCD_RST=1        
 0296 979A              sbi 0x12,7
 0298                   .dbline 273
                       ;     dlyms(3);
 0298 03E0              ldi R16,3
 029A 10E0              ldi R17,0
 029C 61DF              xcall _dlyms
 029E                   .dbline 274
                       ;     write_data(0x00);                      //设置图形显示首地址00H
 029E 0027              clr R16
 02A0 ABDF              xcall _write_data
 02A2                   .dbline 275
                       ;     write_data(0x00);                        
 02A2 0027              clr R16
 02A4 A9DF              xcall _write_data
 02A6                   .dbline 276
                       ;     write_order(0x42);      
 02A6 02E4              ldi R16,66
 02A8 92DF              xcall _write_order
 02AA                   .dbline 277
                       ;     dlyms(2);       
 02AA 02E0              ldi R16,2
 02AC 10E0              ldi R17,0
 02AE 58DF              xcall _dlyms
 02B0                   .dbline 278
                       ;     write_data(DIS_LEN);                   //设置图形显示区域宽度
 02B0 00E2              ldi R16,32
 02B2 A2DF              xcall _write_data
 02B4                   .dbline 279
                       ;     write_data(00);                        //即一行显示所占字节数
 02B4 0027              clr R16
 02B6 A0DF              xcall _write_data
 02B8                   .dbline 280
                       ;     write_order(0x43);      
 02B8 03E4              ldi R16,67
 02BA 89DF              xcall _write_order
 02BC                   .dbline 281
                       ;     dlyms(2);       
 02BC 02E0              ldi R16,2
 02BE 10E0              ldi R17,0
 02C0 4FDF              xcall _dlyms
 02C2                   .dbline 282
                       ;     write_order(0xa7);          //光标形状设置
 02C2 07EA              ldi R16,167
 02C4 84DF              xcall _write_order
 02C6                   .dbline 283
                       ;     write_order(0x80);          //显示方式设置逻辑"或"合成
 02C6 00E8              ldi R16,128
 02C8 82DF              xcall _write_order
 02CA                   .dbline 284
                       ;     write_order(0x98);          //显示开关设置,开图形和文本显示
 02CA 08E9              ldi R16,152
 02CC 80DF              xcall _write_order
 02CE                   .dbline -2
 02CE                   .dbline 285
                       ; }
 02CE                 L55:
 02CE                   .dbline 0 ; func end
 02CE 0895              ret
 02D0                   .dbfunc s str_hz _str_hz fI
                       ;           lrow -> y+6
                       ;             aa -> y+4
                       ;             zk -> y+0
                       ;           lcol -> R22,R23

⌨️ 快捷键说明

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