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

📄 co0511.lst

📁 用m128调试CO0511液晶的源代码!
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0272) 	 PORTA&=0xfe;
    02EE B38B      IN	R24,0x1B
    02EF 7F8E      ANDI	R24,0xFE
    02F0 BB8B      OUT	0x1B,R24
(0273) }
    02F1 9508      RET
(0274) void set_res(uchar i)
(0275) {	 
(0276) 	 if(i)
_set_res:
  i                    --> R16
    02F2 2300      TST	R16
    02F3 F011      BEQ	0x02F6
(0277) 	 PORTA|=0x02;
    02F4 9AD9      SBI	0x1B,1
    02F5 C003      RJMP	0x02F9
(0278) 	 else
(0279) 	 PORTA&=0xfd;
    02F6 B38B      IN	R24,0x1B
    02F7 7F8D      ANDI	R24,0xFD
    02F8 BB8B      OUT	0x1B,R24
(0280) }
    02F9 9508      RET
(0281) void set_a0(uchar i)
(0282) {	 
(0283) 	 if(i)
_set_a0:
  i                    --> R16
    02FA 2300      TST	R16
    02FB F011      BEQ	0x02FE
(0284) 	 PORTA|=0x04;
    02FC 9ADA      SBI	0x1B,2
    02FD C003      RJMP	0x0301
(0285) 	 else
(0286) 	 PORTA&=0xfb;
    02FE B38B      IN	R24,0x1B
    02FF 7F8B      ANDI	R24,0xFB
    0300 BB8B      OUT	0x1B,R24
(0287) }
    0301 9508      RET
(0288) void set_sclk(uchar i)
(0289) {	 
(0290) 	 if(i)
_set_sclk:
  i                    --> R16
    0302 2300      TST	R16
    0303 F011      BEQ	0x0306
(0291) 	 PORTC|=0x40;
    0304 9AAE      SBI	0x15,6
    0305 C003      RJMP	0x0309
(0292) 	 else
(0293) 	 PORTC&=0xbf;
    0306 B385      IN	R24,0x15
    0307 7B8F      ANDI	R24,0xBF
    0308 BB85      OUT	0x15,R24
(0294) }
    0309 9508      RET
(0295) void set_si(uchar i)
(0296) {	 
(0297) 	 if(i)
_set_si:
  i                    --> R16
    030A 2300      TST	R16
    030B F011      BEQ	0x030E
(0298) 	 PORTC|=0x80;
    030C 9AAF      SBI	0x15,7
    030D C003      RJMP	0x0311
(0299) 	 else
(0300) 	 PORTC&=0x7f;
    030E B385      IN	R24,0x15
    030F 778F      ANDI	R24,0x7F
    0310 BB85      OUT	0x15,R24
(0301) } 
    0311 9508      RET
(0302) void set_c86(uchar i)
(0303) {	 
(0304) 	 if(i)
_set_c86:
  i                    --> R16
    0312 2300      TST	R16
    0313 F011      BEQ	0x0316
(0305) 	 PORTA|=0x20;
    0314 9ADD      SBI	0x1B,5
    0315 C003      RJMP	0x0319
(0306) 	 else
(0307) 	 PORTA&=0xcf;
    0316 B38B      IN	R24,0x1B
    0317 7C8F      ANDI	R24,0xCF
    0318 BB8B      OUT	0x1B,R24
(0308) } 
    0319 9508      RET
(0309) void set_ps(uchar i)
(0310) {	 
(0311) 	 if(i)
_set_ps:
  i                    --> R16
    031A 2300      TST	R16
    031B F011      BEQ	0x031E
(0312) 	 PORTA|=0x10;
    031C 9ADC      SBI	0x1B,4
    031D C003      RJMP	0x0321
(0313) 	 else
(0314) 	 PORTA&=0xef;
    031E B38B      IN	R24,0x1B
    031F 7E8F      ANDI	R24,0xEF
    0320 BB8B      OUT	0x1B,R24
(0315) } 
    0321 9508      RET
_data_send:
  temp                 --> R20
  i                    --> R22
  s                    --> R10
  dat                  --> R20
    0322 940E04B3  CALL	push_gset3
    0324 2F40      MOV	R20,R16
(0316) void data_send(unsigned char dat)
(0317) {
(0318) unsigned char s,temp;
(0319) int i;
(0320) set_sclk(0);
    0325 2700      CLR	R16
    0326 DFDB      RCALL	_set_sclk
(0321) s=dat;
    0327 2EA4      MOV	R10,R20
(0322) for(i=8;i>0;i--)
    0328 E068      LDI	R22,0x8
    0329 E070      LDI	R23,0
(0323) {set_sclk(0);
    032A 2700      CLR	R16
    032B DFD6      RCALL	_set_sclk
(0324) NOP();
    032C 0000      NOP
(0325) NOP();
    032D 0000      NOP
(0326) temp=s & 0x80;
    032E 2D4A      MOV	R20,R10
    032F 7840      ANDI	R20,0x80
(0327) if(temp)
    0330 F019      BEQ	0x0334
(0328) {set_si(1);}
    0331 E001      LDI	R16,1
    0332 DFD7      RCALL	_set_si
    0333 C002      RJMP	0x0336
(0329) else {set_si(0);}
    0334 2700      CLR	R16
    0335 DFD4      RCALL	_set_si
(0330) set_sclk(1);
    0336 E001      LDI	R16,1
    0337 DFCA      RCALL	_set_sclk
(0331) s=s<<1;
    0338 0CAA      LSL	R10
    0339 5061      SUBI	R22,1
    033A 4070      SBCI	R23,0
    033B 2422      CLR	R2
    033C 2433      CLR	R3
    033D 1626      CP	R2,R22
    033E 0637      CPC	R3,R23
    033F F354      BLT	0x032A
(0332) }
(0333) }
    0340 940E0492  CALL	pop_gset3
    0342 9508      RET
_w_com:
  com                  --> R20
    0343 940E0498  CALL	push_gset1
    0345 2F40      MOV	R20,R16
(0334) /*************************************************/
(0335) //写命令,串行模式
(0336) /*************************************************/
(0337) void w_com(unsigned char com)
(0338) {
(0339) set_a0(0);
    0346 2700      CLR	R16
    0347 DFB2      RCALL	_set_a0
(0340) set_cs(0);
    0348 2700      CLR	R16
    0349 DFA0      RCALL	_set_cs
(0341) data_send(com);
    034A 2F04      MOV	R16,R20
    034B DFD6      RCALL	_data_send
(0342) }
    034C 940E049B  CALL	pop_gset1
    034E 9508      RET
_w_data:
  dat                  --> R20
    034F 940E0498  CALL	push_gset1
    0351 2F40      MOV	R20,R16
(0343) /*************************************************/
(0344) //写数据,串行模式
(0345) /*************************************************/
(0346) void w_data(unsigned char dat)
(0347) {
(0348) set_a0(1);
    0352 E001      LDI	R16,1
    0353 DFA6      RCALL	_set_a0
(0349) set_cs(0);
    0354 2700      CLR	R16
    0355 DF94      RCALL	_set_cs
(0350) data_send(dat);
    0356 2F04      MOV	R16,R20
    0357 DFCA      RCALL	_data_send
(0351) }
    0358 940E049B  CALL	pop_gset1
    035A 9508      RET
_clrram:
  page                 --> R20
  i                    --> R22
  j                    --> R10
    035B 940E04B3  CALL	push_gset3
(0352) /*************************************************/
(0353) //清DDRAM
(0354) /************************************************/
(0355) void clrram (void)
(0356) { uchar i,j,page;
(0357)   page=0xb0;
    035D EB40      LDI	R20,0xB0
(0358)   for(i=0;i<8;i++)
    035E 2766      CLR	R22
    035F C010      RJMP	0x0370
(0359)   {
(0360)   w_com(page);   /*设置页*/
    0360 2F04      MOV	R16,R20
    0361 DFE1      RCALL	_w_com
(0361)   w_com(0x10);   /*设置列号*/
    0362 E100      LDI	R16,0x10
    0363 DFDF      RCALL	_w_com
(0362)   w_com(0x00);
    0364 2700      CLR	R16
    0365 DFDD      RCALL	_w_com
(0363)   for(j=0;j<128;j++)
    0366 24AA      CLR	R10
    0367 C003      RJMP	0x036B
(0364)   {
(0365)   w_data(0x00);
    0368 2700      CLR	R16
    0369 DFE5      RCALL	_w_data
    036A 94A3      INC	R10
    036B 2D8A      MOV	R24,R10
    036C 3880      CPI	R24,0x80
    036D F3D0      BCS	0x0368
(0366)   }
(0367)   page++;
    036E 9543      INC	R20
    036F 9563      INC	R22
    0370 3068      CPI	R22,0x8
    0371 F370      BCS	0x0360
(0368)   }
(0369) }
    0372 940E0492  CALL	pop_gset3
    0374 9508      RET
_init_lcd:
  i                    --> R20
    0375 940E0498  CALL	push_gset1
(0370) /************************************************/
(0371) //液晶初始化
(0372) /************************************************/
(0373) void init_lcd (void)
(0374) {
(0375)   uchar i=0;
    0377 2744      CLR	R20
(0376)   set_res(0);
    0378 2700      CLR	R16
    0379 DF78      RCALL	_set_res
(0377)   delay_nms(100);
    037A E604      LDI	R16,0x64
    037B E010      LDI	R17,0
    037C DF46      RCALL	_delay_nms
(0378)   set_res(1);
    037D E001      LDI	R16,1
    037E DF73      RCALL	_set_res
(0379)   delay_nms(100);          /*复位液晶*/
    037F E604      LDI	R16,0x64
    0380 E010      LDI	R17,0
    0381 DF41      RCALL	_delay_nms
(0380)   w_com(0xae);  /*Display ON/OFF 0xae:OFF 0xaf:ON*/
    0382 EA0E      LDI	R16,0xAE
    0383 DFBF      RCALL	_w_com
(0381)   w_com(0xa2);  /*LCD bias set 0xa2:1/9 0xa3:1/7*/
    0384 EA02      LDI	R16,0xA2
    0385 DFBD      RCALL	_w_com
(0382)   w_com(0xa0);  /*ADC select 0xa0:0-127 0xa1:127-0*/
    0386 EA00      LDI	R16,0xA0
    0387 DFBB      RCALL	_w_com
(0383)   w_com(0xc8);
    0388 EC08      LDI	R16,0xC8
    0389 DFB9      RCALL	_w_com
(0384)   w_com(0xa6);  /*Display 0xa6:normal 0xa7:reverse*/
    038A EA06      LDI	R16,0xA6
    038B DFB7      RCALL	_w_com
(0385)   w_com(0x2a);  /* V0 Voltage Regulator Internal Resistor Ration Set*/
    038C E20A      LDI	R16,0x2A
    038D DFB5      RCALL	_w_com
(0386)   w_com(0x81);  /*Electronic Volume*/
    038E E801      LDI	R16,0x81
    038F DFB3      RCALL	_w_com
(0387)   w_com(0x2a);
    0390 E20A      LDI	R16,0x2A
    0391 DFB1      RCALL	_w_com
(0388)   w_com(0x2f);  /*power control*/
    0392 E20F      LDI	R16,0x2F
    0393 DFAF      RCALL	_w_com
(0389)   delay_nms(100);
    0394 E604      LDI	R16,0x64
    0395 E010      LDI	R17,0
    0396 DF2C      RCALL	_delay_nms
(0390) }
    0397 940E049B  CALL	pop_gset1
    0399 9508      RET
_img_disp:
  page                 --> R20
  i                    --> R22
  j                    --> R12
  point                --> R10
    039A 940E04B7  CALL	push_gset4
    039C 0158      MOVW	R10,R16
(0391) /**********************************************/
(0392) //图形显示
(0393) /*********************************************/
(0394) void img_disp(const uchar *point)
(0395) { uchar i,j,page;
(0396)   page=0xb7;
    039D EB47      LDI	R20,0xB7
(0397)   w_com(0xaf);
    039E EA0F      LDI	R16,0xAF
    039F DFA3      RCALL	_w_com
(0398)   for(i=0;i<8;i++)
    03A0 2766      CLR	R22
    03A1 C015      RJMP	0x03B7
(0399)   {
(0400)   w_com(page);   /*设置页*/
    03A2 2F04      MOV	R16,R20
    03A3 DF9F      RCALL	_w_com
(0401)   w_com(0x10);   /*设置列号*/
    03A4 E100      LDI	R16,0x10
    03A5 DF9D      RCALL	_w_com
(0402)   w_com(0x10);
    03A6 E100      LDI	R16,0x10
    03A7 DF9B      RCALL	_w_com
(0403)   for(j=0;j<128;j++)
    03A8 24CC      CLR	R12
    03A9 C008      RJMP	0x03B2
(0404)   {
(0405)   w_data(*(point++));
    03AA 0115      MOVW	R2,R10
    03AB 01C1      MOVW	R24,R2
    03AC 9601      ADIW	R24,1
    03AD 015C      MOVW	R10,R24
    03AE 01F1      MOVW	R30,R2
    03AF 9104      LPM	R16,0(Z)
    03B0 DF9E      RCALL	_w_data
    03B1 94C3      INC	R12
    03B2 2D8C      MOV	R24,R12
    03B3 3880      CPI	R24,0x80
    03B4 F3A8      BCS	0x03AA
(0406)   }
(0407)   page--;
    03B5 954A      DEC	R20
    03B6 9563      INC	R22
    03B7 3068      CPI	R22,0x8
    03B8 F348      BCS	0x03A2
(0408)   }
(0409)   w_com(0xaf);  /*Display ON*/
    03B9 EA0F      LDI	R16,0xAF
    03BA DF88      RCALL	_w_com
(0410) }
    03BB 940E0495  CALL	pop_gset4
    03BD 9508      RET
(0411) /*****************************************/
(0412) /****************************************
(0413) void text_disp()
(0414) {
(0415) uchar i,j,page;
(0416)   page=0xb0;
(0417)   w_com(0xaf);
(0418)   w_com(page);   /*设置页
(0419)   //w_com(0x10);   /*设置列号
(0420)   //w_com(0x01);
(0421)   w_data(0xff);
(0422)   //page--;
(0423)   w_com(0xaf);  /*Display ON
(0424) }
(0425) /****************************************/
(0426) //16的初始化
(0427) /****************************************/
(0428) void init_m16()
(0429) {    DDRA=0Xff;
_init_m16:
    03BE EF8F      LDI	R24,0xFF
    03BF BB8A      OUT	0x1A,R24
(0430) 	 DDRB|=0Xf9;

⌨️ 快捷键说明

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