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

📄 lesson6.lst

📁 基于51的液晶1602 显示程序。含1602显示pdf格式说明
💻 LST
字号:
__start:
__text_start:
      57 E5CF      LDI	R28,0x5F
      58 E0D4      LDI	R29,4
      59 BFCD      OUT	0x3D,R28
      5A BFDE      OUT	0x3E,R29
      5B 51C0      SUBI	R28,0x10
      5C 40D0      SBCI	R29,0
      5D EA0A      LDI	R16,0xAA
      5E 8308      STD	Y+0,R16
      5F 2400      CLR	R0
      60 E6E0      LDI	R30,0x60
      61 E0F0      LDI	R31,0
      62 E010      LDI	R17,0
      63 36E0      CPI	R30,0x60
      64 07F1      CPC	R31,R17
      65 F011      BEQ	0x0068
      66 9201      ST	R0,Z+
      67 CFFB      RJMP	0x0063
      68 8300      STD	Z+0,R16
      69 EAED      LDI	R30,0xAD
      6A E0F0      LDI	R31,0
      6B E6A0      LDI	R26,0x60
      6C E0B0      LDI	R27,0
      6D E010      LDI	R17,0
      6E E000      LDI	R16,0
      6F BF0B      OUT	0x3B,R16
      70 3AED      CPI	R30,0xAD
      71 07F1      CPC	R31,R17
      72 F021      BEQ	0x0077
      73 95C8      LPM
      74 9631      ADIW	R30,1
      75 920D      ST	R0,X+
      76 CFF9      RJMP	0x0070
      77 940E 00AA CALL	_main
_exit:
      79 CFFF      RJMP	_exit
_delay:
  i                    --> R10
  j                    --> R12
  ms                   --> R16
      7A 940E 0138 CALL	push_xgset003C
FILE: D:\Proteus\Proteus练习\03液晶1602\程序\lesson6.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) #pragma data:code 
(0006) const uchar table[]="I LIKE AVR !";
(0007) const uchar table1[]="WWW.TXMCU.COM";
(0008) const uchar table2[]="I am gonna to " ; 
(0009) const uchar table3[]="work as hard as ";
(0010) const uchar table4[]="i can, and see ";
(0011) const uchar table5[]="what happen !";
(0012) void delay(uint ms)
(0013) {
(0014)         uint i,j;
(0015) 	for(i=0;i<ms;i++)
      7C 24AA      CLR	R10
      7D 24BB      CLR	R11
      7E C00E      RJMP	0x008D
(0016) 	   {
(0017) 	   for(j=0;j<1141;j++);
      7F 24CC      CLR	R12
      80 24DD      CLR	R13
      81 C003      RJMP	0x0085
      82 01C6      MOVW	R24,R12
      83 9601      ADIW	R24,1
      84 016C      MOVW	R12,R24
      85 01C6      MOVW	R24,R12
      86 3785      CPI	R24,0x75
      87 E0E4      LDI	R30,4
      88 079E      CPC	R25,R30
      89 F3C0      BCS	0x0082
      8A 01C5      MOVW	R24,R10
      8B 9601      ADIW	R24,1
      8C 015C      MOVW	R10,R24
      8D 16A0      CP	R10,R16
      8E 06B1      CPC	R11,R17
      8F F378      BCS	0x007F
      90 940C 012D JMP	pop_xgset003C
_write_com:
  com                  --> R10
      92 92AA      ST	R10,-Y
      93 2EA0      MOV	R10,R16
(0018)        }
(0019) }
(0020) void write_com(uchar com)
(0021) {
(0022)        PORTD&=~BIT(4);
      94 9894      CBI	0x12,4
(0023) 	   PORTD&=~BIT(5);
      95 9895      CBI	0x12,5
(0024) 	   PORTB=com; 
      96 BAA8      OUT	0x18,R10
(0025) 	   PORTD|=BIT(6);
      97 9A96      SBI	0x12,6
(0026) 	   delay(1);
      98 E001      LDI	R16,1
      99 E010      LDI	R17,0
      9A DFDF      RCALL	_delay
(0027) 	   PORTD&=~BIT(6);
      9B 9896      CBI	0x12,6
      9C 90A9      LD	R10,Y+
      9D 9508      RET
_write_dat:
  dat                  --> R10
      9E 92AA      ST	R10,-Y
      9F 2EA0      MOV	R10,R16
(0028) }
(0029) 
(0030) void write_dat(uchar dat)
(0031) {     
(0032)        PORTD|=BIT(4);
      A0 9A94      SBI	0x12,4
(0033) 	   PORTD&=~BIT(5);
      A1 9895      CBI	0x12,5
(0034) 	   PORTB=dat;
      A2 BAA8      OUT	0x18,R10
(0035) 	   PORTD|=BIT(6);
      A3 9A96      SBI	0x12,6
(0036) 	   delay(1);
      A4 E001      LDI	R16,1
      A5 E010      LDI	R17,0
      A6 DFD3      RCALL	_delay
(0037) 	   PORTD&=~BIT(6);
      A7 9896      CBI	0x12,6
      A8 90A9      LD	R10,Y+
      A9 9508      RET
(0038) 
(0039) }
(0040) void  main()
(0041) {
(0042)           uchar i;
(0043) 	  DDRB=0XFF;
_main:
  i                    --> R10
      AA EF8F      LDI	R24,0xFF
      AB BB87      OUT	0x17,R24
(0044) 	  DDRD|=BIT(4)|BIT(5)|BIT(6);
      AC B381      IN	R24,0x11
      AD 6780      ORI	R24,0x70
      AE BB81      OUT	0x11,R24
(0045) 	  PORTD&=~BIT(6);
      AF 9896      CBI	0x12,6
(0046) 	  
(0047) 	  write_com(0X38);  //设置16*2显示 ,5*7点阵,8位数据接口
      B0 E308      LDI	R16,0x38
      B1 DFE0      RCALL	_write_com
(0048) 	  delay(5);
      B2 E005      LDI	R16,5
      B3 E010      LDI	R17,0
      B4 DFC5      RCALL	_delay
      B5 C075      RJMP	0x012B
(0049) 	  while(1)
(0050) 	{
(0051) 	  write_com(0X01);  //显示清屏
      B6 E001      LDI	R16,1
      B7 DFDA      RCALL	_write_com
(0052) 	  delay(5);
      B8 E005      LDI	R16,5
      B9 E010      LDI	R17,0
      BA DFBF      RCALL	_delay
(0053) 	  write_com(0X0C); //显示开关,光标设置
      BB E00C      LDI	R16,0xC
      BC DFD5      RCALL	_write_com
(0054) 	  delay(5);
      BD E005      LDI	R16,5
      BE E010      LDI	R17,0
      BF DFBA      RCALL	_delay
(0055) 	  write_com(0X06);//显示开关,光标设置
      C0 E006      LDI	R16,6
      C1 DFD0      RCALL	_write_com
(0056) 	  delay(5);
      C2 E005      LDI	R16,5
      C3 E010      LDI	R17,0
      C4 DFB5      RCALL	_delay
(0057) 	  write_com(0X80+0X00);// 数据指针设置
      C5 E800      LDI	R16,0x80
      C6 DFCB      RCALL	_write_com
(0058) 	  delay(5);
      C7 E005      LDI	R16,5
      C8 E010      LDI	R17,0
      C9 DFB0      RCALL	_delay
(0059) 
(0060) 	  for(i=0;i<16;i++)
      CA 24AA      CLR	R10
      CB C009      RJMP	0x00D5
(0061) 	  {
(0062) 	     write_dat(table2[i]);
      CC E68F      LDI	R24,0x6F
      CD E090      LDI	R25,0
      CE 2DEA      MOV	R30,R10
      CF 27FF      CLR	R31
      D0 0FE8      ADD	R30,R24
      D1 1FF9      ADC	R31,R25
      D2 9104      LPM	R16,0(Z)
      D3 DFCA      RCALL	_write_dat
      D4 94A3      INC	R10
      D5 2D8A      MOV	R24,R10
      D6 3180      CPI	R24,0x10
      D7 F3A0      BCS	0x00CC
(0063) 		
(0064) 	  }
(0065) 	  write_com(0X80+0X40);
      D8 EC00      LDI	R16,0xC0
      D9 DFB8      RCALL	_write_com
(0066) 	  delay(5);
      DA E005      LDI	R16,5
      DB E010      LDI	R17,0
      DC DF9D      RCALL	_delay
(0067) 	    for(i=0;i<16;i++)
      DD 24AA      CLR	R10
      DE C009      RJMP	0x00E8
(0068) 	  {
(0069) 	     write_dat(table3[i]);
      DF E78E      LDI	R24,0x7E
      E0 E090      LDI	R25,0
      E1 2DEA      MOV	R30,R10
      E2 27FF      CLR	R31
      E3 0FE8      ADD	R30,R24
      E4 1FF9      ADC	R31,R25
      E5 9104      LPM	R16,0(Z)
      E6 DFB7      RCALL	_write_dat
      E7 94A3      INC	R10
      E8 2D8A      MOV	R24,R10
      E9 3180      CPI	R24,0x10
      EA F3A0      BCS	0x00DF
(0070) 		
(0071) 	  }
(0072)       delay(1000);
      EB EE08      LDI	R16,0xE8
      EC E013      LDI	R17,3
      ED DF8C      RCALL	_delay
(0073) 	  write_com(0X01);  //显示清屏
      EE E001      LDI	R16,1
      EF DFA2      RCALL	_write_com
(0074) 	  delay(5);
      F0 E005      LDI	R16,5
      F1 E010      LDI	R17,0
      F2 DF87      RCALL	_delay
(0075) 	  	  write_com(0X01);  //显示清屏
      F3 E001      LDI	R16,1
      F4 DF9D      RCALL	_write_com
(0076) 	  delay(5);
      F5 E005      LDI	R16,5
      F6 E010      LDI	R17,0
      F7 DF82      RCALL	_delay
(0077) 	  	  write_com(0X0C); //显示开关,光标设置
      F8 E00C      LDI	R16,0xC
      F9 DF98      RCALL	_write_com
(0078) 	  delay(5);
      FA E005      LDI	R16,5
      FB E010      LDI	R17,0
      FC DF7D      RCALL	_delay
(0079) 	  write_com(0X06);//显示开关,光标设置
      FD E006      LDI	R16,6
      FE DF93      RCALL	_write_com
(0080) 	  delay(5);
      FF E005      LDI	R16,5
     100 E010      LDI	R17,0
     101 DF78      RCALL	_delay
(0081) 
(0082) 	  	  write_com(0X80+0X00);// 数据指针设置
     102 E800      LDI	R16,0x80
     103 DF8E      RCALL	_write_com
(0083) 	  delay(5);
     104 E005      LDI	R16,5
     105 E010      LDI	R17,0
     106 DF73      RCALL	_delay
(0084) 
(0085) 	  for(i=0;i<16;i++)
     107 24AA      CLR	R10
     108 C009      RJMP	0x0112
(0086) 	  {
(0087) 	     write_dat(table4[i]);
     109 E88F      LDI	R24,0x8F
     10A E090      LDI	R25,0
     10B 2DEA      MOV	R30,R10
     10C 27FF      CLR	R31
     10D 0FE8      ADD	R30,R24
     10E 1FF9      ADC	R31,R25
     10F 9104      LPM	R16,0(Z)
     110 DF8D      RCALL	_write_dat
     111 94A3      INC	R10
     112 2D8A      MOV	R24,R10
     113 3180      CPI	R24,0x10
     114 F3A0      BCS	0x0109
(0088) 		
(0089) 	  }
(0090) 	  write_com(0X80+0X40);
     115 EC00      LDI	R16,0xC0
     116 DF7B      RCALL	_write_com
(0091) 	  delay(5);
     117 E005      LDI	R16,5
     118 E010      LDI	R17,0
     119 DF60      RCALL	_delay
(0092) 	    for(i=0;i<14;i++)
     11A 24AA      CLR	R10
     11B C009      RJMP	0x0125
(0093) 	  {
(0094) 	     write_dat(table5[i]);
     11C E98F      LDI	R24,0x9F
     11D E090      LDI	R25,0
     11E 2DEA      MOV	R30,R10
     11F 27FF      CLR	R31
     120 0FE8      ADD	R30,R24
     121 1FF9      ADC	R31,R25
     122 9104      LPM	R16,0(Z)
     123 DF7A      RCALL	_write_dat
     124 94A3      INC	R10
     125 2D8A      MOV	R24,R10
     126 308E      CPI	R24,0xE
     127 F3A0      BCS	0x011C
(0095) 		
(0096) 	  }
(0097) 	   delay(1000);
FILE: <library>
     128 EE08      LDI	R16,0xE8
     129 E013      LDI	R17,3
     12A DF4F      RCALL	_delay
     12B CF8A      RJMP	0x00B6
     12C 9508      RET
pop_xgset003C:
     12D 90A9      LD	R10,Y+
     12E 90B9      LD	R11,Y+
     12F 90C9      LD	R12,Y+
     130 90D9      LD	R13,Y+
     131 9508      RET
push_xgsetF0FC:
     132 937A      ST	R23,-Y
     133 936A      ST	R22,-Y
push_xgset30FC:
     134 935A      ST	R21,-Y
     135 934A      ST	R20,-Y
push_xgset00FC:
     136 92FA      ST	R15,-Y
     137 92EA      ST	R14,-Y
push_xgset003C:
     138 92DA      ST	R13,-Y
     139 92CA      ST	R12,-Y
     13A 92BA      ST	R11,-Y
     13B 92AA      ST	R10,-Y
     13C 9508      RET

⌨️ 快捷键说明

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