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

📄 lesson6.lst

📁 AVR8位单片机
💻 LST
字号:
__text_start:
__start:
    003E E5CF      LDI	R28,0x5F
    003F E0D4      LDI	R29,4
    0040 BFCD      OUT	P3D,R28
    0041 BFDE      OUT	P3E,R29
    0042 51C0      SUBI	R28,0x10
    0043 40D0      SBCI	R29,0
    0044 EA0A      LDI	R16,0xAA
    0045 8308      STD	R16,0+Y
    0046 2400      CLR	R0
    0047 E6E0      LDI	R30,0x60
    0048 E0F0      LDI	R31,0
    0049 E010      LDI	R17,0
    004A 36E0      CPI	R30,0x60
    004B 07F1      CPC	R31,R17
    004C F011      BEQ	0x004F
    004D 9201      ST	R0,Z+
    004E CFFB      RJMP	0x004A
    004F 8300      STD	R16,0+Z
    0050 E7EC      LDI	R30,0x7C
    0051 E0F0      LDI	R31,0
    0052 E6A0      LDI	R26,0x60
    0053 E0B0      LDI	R27,0
    0054 E010      LDI	R17,0
    0055 37EC      CPI	R30,0x7C
    0056 07F1      CPC	R31,R17
    0057 F021      BEQ	0x005C
    0058 95C8      LPM
    0059 9631      ADIW	R30,1
    005A 920D      ST	R0,X+
    005B CFF9      RJMP	0x0055
    005C 940E0091  CALL	_main
_exit:
    005E CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    005F 940E00F9  CALL	push_gset2
FILE: C:\icc\examples.avr\自己编写的程序\LCD显示\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) /*code存储器类型说明*/
(0007) const uchar table[]="I LOVE YOU !";//const类型说明,表示在程序执行过程中不可更改的常量值
(0008) const uchar table1[]="Li huang sheng";
(0009) 
(0010) void delay(uint ms)
(0011) {
(0012)         uint i,j;
(0013) 	for(i=0;i<ms;i++)
    0061 2744      CLR	R20
    0062 2755      CLR	R21
    0063 C00B      RJMP	0x006F
(0014) 	   {
(0015) 	   for(j=0;j<1141;j++);
    0064 2766      CLR	R22
    0065 2777      CLR	R23
    0066 C002      RJMP	0x0069
    0067 5F6F      SUBI	R22,0xFF
    0068 4F7F      SBCI	R23,0xFF
    0069 3765      CPI	R22,0x75
    006A E0E4      LDI	R30,4
    006B 077E      CPC	R23,R30
    006C F3D0      BCS	0x0067
    006D 5F4F      SUBI	R20,0xFF
    006E 4F5F      SBCI	R21,0xFF
    006F 1740      CP	R20,R16
    0070 0751      CPC	R21,R17
    0071 F390      BCS	0x0064
(0016)        }
(0017) }
    0072 940E00FD  CALL	pop_gset2
    0074 9508      RET
_write_com:
  com                  --> R20
    0075 940E00E2  CALL	push_gset1
    0077 2F40      MOV	R20,R16
(0018) void write_com(uchar com)
(0019) {
(0020)        PORTD&=~BIT(4);
    0078 9894      CBI	P12,4
(0021) 	   PORTD&=~BIT(5);
    0079 9895      CBI	P12,5
(0022) 	   PORTB=com;
    007A BB48      OUT	P18,R20
(0023) 	   PORTD|=BIT(6);
    007B 9A96      SBI	P12,6
(0024) 	   delay(1);
    007C E001      LDI	R16,1
    007D E010      LDI	R17,0
    007E DFE0      RCALL	_delay
(0025) 	   PORTD&=~BIT(6);
    007F 9896      CBI	P12,6
(0026) }
    0080 940E00E5  CALL	pop_gset1
    0082 9508      RET
_write_dat:
  dat                  --> R20
    0083 940E00E2  CALL	push_gset1
    0085 2F40      MOV	R20,R16
(0027) 
(0028) void write_dat(uchar dat)
(0029) {     
(0030)        PORTD|=BIT(4);
    0086 9A94      SBI	P12,4
(0031) 	   PORTD&=~BIT(5);
    0087 9895      CBI	P12,5
(0032) 	   PORTB=dat;
    0088 BB48      OUT	P18,R20
(0033) 	   PORTD|=BIT(6);
    0089 9A96      SBI	P12,6
(0034) 	   delay(1);
    008A E001      LDI	R16,1
    008B E010      LDI	R17,0
    008C DFD2      RCALL	_delay
(0035) 	   PORTD&=~BIT(6);
    008D 9896      CBI	P12,6
(0036) 
(0037) }
    008E 940E00E5  CALL	pop_gset1
    0090 9508      RET
(0038) void  main()
(0039) {
_main:
  i                    --> R20
    0091 C04E      RJMP	0x00E0
(0040) while(1)
(0041) {
(0042)      uchar i;
(0043) 	  DDRB=0XFF;
    0092 EF8F      LDI	R24,0xFF
    0093 BB87      OUT	P17,R24
(0044) 	  DDRD|=BIT(4)|BIT(5)|BIT(6);
    0094 B381      IN	R24,P11
    0095 6780      ORI	R24,0x70
    0096 BB81      OUT	P11,R24
(0045) 	  PORTD&=~BIT(6);
    0097 9896      CBI	P12,6
(0046) 	  
(0047) 	  write_com(0X38);//设置显示模式
    0098 E308      LDI	R16,0x38
    0099 DFDB      RCALL	_write_com
(0048) 	  delay(5);
    009A E005      LDI	R16,5
    009B E010      LDI	R17,0
    009C DFC2      RCALL	_delay
(0049) 	  write_com(0X01);//清屏
    009D E001      LDI	R16,1
    009E DFD6      RCALL	_write_com
(0050) 	  delay(5);
    009F E005      LDI	R16,5
    00A0 E010      LDI	R17,0
    00A1 DFBD      RCALL	_delay
(0051) 	  write_com(0X0C);//设置显示开关和光标
    00A2 E00C      LDI	R16,0xC
    00A3 DFD1      RCALL	_write_com
(0052) 	  delay(5);
    00A4 E005      LDI	R16,5
    00A5 E010      LDI	R17,0
    00A6 DFB8      RCALL	_delay
(0053) 	  write_com(0X06);//设置字符显示移动模式
    00A7 E006      LDI	R16,6
    00A8 DFCC      RCALL	_write_com
(0054) 	  delay(5);
    00A9 E005      LDI	R16,5
    00AA E010      LDI	R17,0
    00AB DFB3      RCALL	_delay
(0055) 	  write_com(0X80+0X10);//设置第1行数据地址指针
    00AC E900      LDI	R16,0x90
    00AD DFC7      RCALL	_write_com
(0056) 	  delay(5);
    00AE E005      LDI	R16,5
    00AF E010      LDI	R17,0
    00B0 DFAE      RCALL	_delay
(0057) 	  for(i=0;i<12;i++)//显示第1行的字符
    00B1 2744      CLR	R20
    00B2 C00C      RJMP	0x00BF
(0058) 	  {
(0059) 	     write_dat(table[i]);
    00B3 E680      LDI	R24,0x60
    00B4 E090      LDI	R25,0
    00B5 2FE4      MOV	R30,R20
    00B6 27FF      CLR	R31
    00B7 0FE8      ADD	R30,R24
    00B8 1FF9      ADC	R31,R25
    00B9 9104      LD	R16,R16
    00BA DFC8      RCALL	_write_dat
(0060) 		 delay(5);
    00BB E005      LDI	R16,5
    00BC E010      LDI	R17,0
    00BD DFA1      RCALL	_delay
    00BE 9543      INC	R20
    00BF 304C      CPI	R20,0xC
    00C0 F390      BCS	0x00B3
(0061) 	  }
(0062) 	  write_com(0X80+0X50);//设置第2行的数据地址指针
    00C1 ED00      LDI	R16,0xD0
    00C2 DFB2      RCALL	_write_com
(0063) 	  delay(5);
    00C3 E005      LDI	R16,5
    00C4 E010      LDI	R17,0
    00C5 DF99      RCALL	_delay
(0064) 	    for(i=0;i<14;i++)//显示第2行的字符
    00C6 2744      CLR	R20
    00C7 C00C      RJMP	0x00D4
(0065) 	  {
(0066) 	     write_dat(table1[i]);
    00C8 E68D      LDI	R24,0x6D
    00C9 E090      LDI	R25,0
    00CA 2FE4      MOV	R30,R20
    00CB 27FF      CLR	R31
    00CC 0FE8      ADD	R30,R24
    00CD 1FF9      ADC	R31,R25
    00CE 9104      LD	R16,R16
    00CF DFB3      RCALL	_write_dat
(0067) 		 delay(5);
    00D0 E005      LDI	R16,5
    00D1 E010      LDI	R17,0
    00D2 DF8C      RCALL	_delay
    00D3 9543      INC	R20
    00D4 304E      CPI	R20,0xE
    00D5 F390      BCS	0x00C8
(0068) 	  }
(0069) 	  for(i=0;i<16;i++)//设置字符从右到左显示
    00D6 2744      CLR	R20
    00D7 C006      RJMP	0x00DE
(0070) 	  {
(0071) 	     write_com(0X18);//从右到左显示指令
    00D8 E108      LDI	R16,0x18
    00D9 DF9B      RCALL	_write_com
(0072) 		 delay(500);
    00DA EF04      LDI	R16,0xF4
    00DB E011      LDI	R17,1
    00DC DF82      RCALL	_delay
    00DD 9543      INC	R20
    00DE 3140      CPI	R20,0x10
    00DF F3C0      BCS	0x00D8
    00E0 CFB1      RJMP	0x0092
(0073) 	  }
(0074) 	  
(0075) }
(0076) }FILE: <library>
    00E1 9508      RET
push_gset1:
    00E2 935A      ST	R21,-Y
    00E3 934A      ST	R20,-Y
    00E4 9508      RET
pop_gset1:
    00E5 E0E1      LDI	R30,1
pop:
    00E6 9149      LD	R20,Y+
    00E7 9159      LD	R21,Y+
    00E8 FDE0      SBRC	R30,0
    00E9 9508      RET
    00EA 9169      LD	R22,Y+
    00EB 9179      LD	R23,Y+
    00EC FDE1      SBRC	R30,1
    00ED 9508      RET
    00EE 90A9      LD	R10,Y+
    00EF 90B9      LD	R11,Y+
    00F0 FDE2      SBRC	R30,2
    00F1 9508      RET
    00F2 90C9      LD	R12,Y+
    00F3 90D9      LD	R13,Y+
    00F4 FDE3      SBRC	R30,3
    00F5 9508      RET
    00F6 90E9      LD	R14,Y+
    00F7 90F9      LD	R15,Y+
    00F8 9508      RET
push_gset2:
    00F9 937A      ST	R23,-Y
    00FA 936A      ST	R22,-Y
    00FB 940C00E2  JMP	push_gset1
pop_gset2:
    00FD E0E2      LDI	R30,2
    00FE 940C00E6  JMP	pop

⌨️ 快捷键说明

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