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

📄 try3_162.lst

📁 用isis构建的一个简单的仿真平台
💻 LST
字号:
__start:
__text_start:
    003E EFCF      LDI	R28,0xFF
    003F E0D4      LDI	R29,4
    0040 BFCD      OUT	0x3D,R28
    0041 BFDE      OUT	0x3E,R29
    0042 51C0      SUBI	R28,0x10
    0043 40D0      SBCI	R29,0
    0044 EA0A      LDI	R16,0xAA
    0045 8308      STD	Y+0,R16
    0046 2400      CLR	R0
    0047 E0E0      LDI	R30,0
    0048 E0F1      LDI	R31,1
    0049 E011      LDI	R17,1
    004A 30E0      CPI	R30,0
    004B 07F1      CPC	R31,R17
    004C F011      BEQ	0x004F
    004D 9201      ST	R0,Z+
    004E CFFB      RJMP	0x004A
    004F 8300      STD	Z+0,R16
    0050 E7EC      LDI	R30,0x7C
    0051 E0F0      LDI	R31,0
    0052 E0A0      LDI	R26,0
    0053 E0B1      LDI	R27,1
    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 940E00E6  CALL	_main
_exit:
    005E CFFF      RJMP	_exit
_delay_us:
  x                    --> R20
  z                    --> R16
    005F 940E010F  CALL	push_gset1
FILE: E:\avr\try\try3_162\main.c
(0001) #include "iom162v.h"
(0002) 
(0003) #define uint8 unsigned char
(0004) #define uint16 unsigned int
(0005) 
(0006) #define uint8   unsigned char
(0007) #define uint16  unsigned int
(0008) 
(0009) #define RS    0x01
(0010) #define RW    0x02
(0011) #define E     0x04
(0012) 
(0013) void delay_us(uint16 z)
(0014) {
(0015)   uint16  x;
(0016)   for(;z>0;z--)
    0061 C00A      RJMP	0x006C
(0017)   {
(0018)    	for(x=10;x>0;x--);
    0062 E04A      LDI	R20,0xA
    0063 E050      LDI	R21,0
    0064 C002      RJMP	0x0067
    0065 5041      SUBI	R20,1
    0066 4050      SBCI	R21,0
    0067 3040      CPI	R20,0
    0068 0745      CPC	R20,R21
    0069 F7D9      BNE	0x0065
    006A 5001      SUBI	R16,1
    006B 4010      SBCI	R17,0
    006C 3000      CPI	R16,0
    006D 0701      CPC	R16,R17
    006E F799      BNE	0x0062
    006F 940E0112  CALL	pop_gset1
    0071 9508      RET
(0019)   }
(0020) 
(0021) }
(0022) 
(0023) 
(0024) void lcd_busy(void)
(0025) {
(0026)     DDRA=0x00;
_lcd_busy:
    0072 2422      CLR	R2
    0073 BA2A      OUT	0x1A,R2
(0027)     PORTA=0xff;
    0074 EF8F      LDI	R24,0xFF
    0075 BB8B      OUT	0x1B,R24
    0076 C007      RJMP	0x007E
(0028)     while(1)
(0029)     {
(0030)         PORTC&=~E;
    0077 98AA      CBI	0x15,2
(0031)         PORTC&=~RS;
    0078 98A8      CBI	0x15,0
(0032)         PORTC|=RW;
    0079 9AA9      SBI	0x15,1
(0033)       //  delay_us(10);
(0034)         PORTC|=E;
    007A 9AAA      SBI	0x15,2
(0035)         if(!(PINA&0x80))break;
    007B 99CF      SBIC	0x19,7
    007C C001      RJMP	0x007E
    007D C001      RJMP	0x007F
    007E CFF8      RJMP	0x0077
(0036)     }
(0037)     DDRA=0xff;  
    007F EF8F      LDI	R24,0xFF
    0080 BB8A      OUT	0x1A,R24
    0081 9508      RET
_lcd_wr_cmd:
  cmd                  --> R20
    0082 940E010F  CALL	push_gset1
    0084 2F40      MOV	R20,R16
(0038) }
(0039) 
(0040) void lcd_wr_cmd(uint8 cmd)
(0041) {
(0042)     lcd_busy();
    0085 DFEC      RCALL	_lcd_busy
(0043)     PORTC&=~RS;
    0086 98A8      CBI	0x15,0
(0044)     PORTC&=~RW;
    0087 98A9      CBI	0x15,1
(0045)     PORTA=cmd;
    0088 BB4B      OUT	0x1B,R20
(0046)     delay_us(50);
    0089 E302      LDI	R16,0x32
    008A E010      LDI	R17,0
    008B DFD3      RCALL	_delay_us
(0047)     PORTC|=E;
    008C 9AAA      SBI	0x15,2
(0048)     delay_us(50);
    008D E302      LDI	R16,0x32
    008E E010      LDI	R17,0
    008F DFCF      RCALL	_delay_us
(0049)     PORTC&=~E;
    0090 98AA      CBI	0x15,2
    0091 940E0112  CALL	pop_gset1
    0093 9508      RET
_lcd_wr_date:
  date                 --> R20
    0094 940E010F  CALL	push_gset1
    0096 2F40      MOV	R20,R16
(0050) }
(0051) 
(0052) void lcd_wr_date(uint8 date)
(0053) {
(0054)     lcd_busy();
    0097 DFDA      RCALL	_lcd_busy
(0055)     PORTC|=RS;
    0098 9AA8      SBI	0x15,0
(0056)     PORTC&=~RW;
    0099 98A9      CBI	0x15,1
(0057)     PORTA=date;
    009A BB4B      OUT	0x1B,R20
(0058)     delay_us(50);
    009B E302      LDI	R16,0x32
    009C E010      LDI	R17,0
    009D DFC1      RCALL	_delay_us
(0059)     PORTC|=E;
    009E 9AAA      SBI	0x15,2
(0060)     delay_us(50);
    009F E302      LDI	R16,0x32
    00A0 E010      LDI	R17,0
    00A1 DFBD      RCALL	_delay_us
(0061)     PORTC&=~E;
    00A2 98AA      CBI	0x15,2
    00A3 940E0112  CALL	pop_gset1
    00A5 9508      RET
(0062) }
(0063) 
(0064) void lcd_init(void)
(0065) {
(0066)     DDRA=0xff;
_lcd_init:
    00A6 EF8F      LDI	R24,0xFF
    00A7 BB8A      OUT	0x1A,R24
(0067)     DDRC|=0x07;
    00A8 B384      IN	R24,0x14
    00A9 6087      ORI	R24,7
    00AA BB84      OUT	0x14,R24
(0068)     lcd_wr_cmd(0x38);
    00AB E308      LDI	R16,0x38
    00AC DFD5      RCALL	_lcd_wr_cmd
(0069)     delay_us(300);
    00AD E20C      LDI	R16,0x2C
    00AE E011      LDI	R17,1
    00AF DFAF      RCALL	_delay_us
(0070)     lcd_wr_cmd(0x38);
    00B0 E308      LDI	R16,0x38
    00B1 DFD0      RCALL	_lcd_wr_cmd
(0071)     lcd_wr_cmd(0x06);
    00B2 E006      LDI	R16,6
    00B3 DFCE      RCALL	_lcd_wr_cmd
(0072)     lcd_wr_cmd(0x0c);
    00B4 E00C      LDI	R16,0xC
    00B5 DFCC      RCALL	_lcd_wr_cmd
(0073)     lcd_wr_cmd(0x01);
    00B6 E001      LDI	R16,1
    00B7 DFCA      RCALL	_lcd_wr_cmd
(0074)     delay_us(500);
    00B8 EF04      LDI	R16,0xF4
    00B9 E011      LDI	R17,1
    00BA DFA4      RCALL	_delay_us
(0075)     DDRA=0xff;
    00BB EF8F      LDI	R24,0xFF
    00BC BB8A      OUT	0x1A,R24
(0076)     DDRC|=0x07;
    00BD B384      IN	R24,0x14
    00BE 6087      ORI	R24,7
    00BF BB84      OUT	0x14,R24
    00C0 9508      RET
_lcd_wr_byte:
  date                 --> R20
  addr                 --> R22
    00C1 940E010D  CALL	push_gset2
    00C3 2F42      MOV	R20,R18
    00C4 2F60      MOV	R22,R16
(0077) }
(0078) 
(0079) void lcd_wr_byte(uint8 addr,uint8 date)
(0080) {
(0081)     lcd_wr_cmd(0x80+addr);
    00C5 2F06      MOV	R16,R22
    00C6 5800      SUBI	R16,0x80
    00C7 DFBA      RCALL	_lcd_wr_cmd
(0082)     lcd_wr_date(date);
    00C8 2F04      MOV	R16,R20
    00C9 DFCA      RCALL	_lcd_wr_date
(0083)     delay_us(100);
    00CA E604      LDI	R16,0x64
    00CB E010      LDI	R17,0
    00CC DF92      RCALL	_delay_us
    00CD 940E0101  CALL	pop_gset2
    00CF 9508      RET
_lcd_wr_str:
  i                    --> R20
  len                  --> R22
  str                  --> R10
  addr                 --> R12
    00D0 940E0109  CALL	push_gset4
    00D2 0159      MOVW	R10,R18
    00D3 2EC0      MOV	R12,R16
    00D4 8568      LDD	R22,Y+8
(0084) }
(0085) 
(0086) void lcd_wr_str(uint8 addr,uint8 str[],uint8 len)
(0087) {
(0088)  	uint8 i=0;
    00D5 2744      CLR	R20
(0089)     lcd_wr_cmd(0x80+addr);
    00D6 2D0C      MOV	R16,R12
    00D7 5800      SUBI	R16,0x80
    00D8 DFA9      RCALL	_lcd_wr_cmd
(0090)     for(i=0;i<len;i=i+1)
    00D9 C007      RJMP	0x00E1
(0091)     {
(0092)         lcd_wr_date(str[i]);
    00DA 2FE4      MOV	R30,R20
    00DB 27FF      CLR	R31
    00DC 0DEA      ADD	R30,R10
    00DD 1DFB      ADC	R31,R11
    00DE 8100      LDD	R16,Z+0
    00DF DFB4      RCALL	_lcd_wr_date
    00E0 9543      INC	R20
    00E1 1746      CP	R20,R22
    00E2 F3B8      BCS	0x00DA
    00E3 940E0104  CALL	pop_gset4
    00E5 9508      RET
_main:
  ss                   --> Y+1
    00E6 972D      SBIW	R28,0xD
(0093) 		//i=i+1;
(0094)        // str=str+1;
(0095)     }
(0096) 
(0097) }
(0098) 
(0099) void main(void)
(0100) {
(0101)     uint8 ss[]="hello word!";
    00E7 E780      LDI	R24,0x70
    00E8 E090      LDI	R25,0
    00E9 01FE      MOVW	R30,R28
    00EA 9631      ADIW	R30,1
    00EB E00C      LDI	R16,0xC
    00EC E010      LDI	R17,0
    00ED 93FA      ST	R31,-Y
    00EE 93EA      ST	R30,-Y
    00EF 939A      ST	R25,-Y
    00F0 938A      ST	R24,-Y
    00F1 940E0126  CALL	asgncblk
(0102)     lcd_init();
    00F3 DFB2      RCALL	_lcd_init
(0103)     lcd_wr_str(0x01,ss,12);
    00F4 E08C      LDI	R24,0xC
    00F5 8388      STD	Y+0,R24
    00F6 019E      MOVW	R18,R28
    00F7 5F2F      SUBI	R18,0xFF
    00F8 4F3F      SBCI	R19,0xFF
    00F9 E001      LDI	R16,1
    00FA DFD5      RCALL	_lcd_wr_str
(0104)     lcd_wr_byte(0x03,'a');
    00FB E621      LDI	R18,0x61
    00FC E003      LDI	R16,3
    00FD DFC3      RCALL	_lcd_wr_byte
(0105)     while(1);
FILE: <library>
    00FE CFFF      RJMP	0x00FE
    00FF 962D      ADIW	R28,0xD
    0100 9508      RET
pop_gset2:
    0101 E0E2      LDI	R30,2
    0102 940C0113  JMP	pop
pop_gset4:
    0104 E0E8      LDI	R30,0x8
    0105 940C0113  JMP	pop
push_gset5:
    0107 92FA      ST	R15,-Y
    0108 92EA      ST	R14,-Y
push_gset4:
    0109 92DA      ST	R13,-Y
    010A 92CA      ST	R12,-Y
push_gset3:
    010B 92BA      ST	R11,-Y
    010C 92AA      ST	R10,-Y
push_gset2:
    010D 937A      ST	R23,-Y
    010E 936A      ST	R22,-Y
push_gset1:
    010F 935A      ST	R21,-Y
    0110 934A      ST	R20,-Y
    0111 9508      RET
pop_gset1:
    0112 E0E1      LDI	R30,1
pop:
    0113 9149      LD	R20,Y+
    0114 9159      LD	R21,Y+
    0115 FDE0      SBRC	R30,0
    0116 9508      RET
    0117 9169      LD	R22,Y+
    0118 9179      LD	R23,Y+
    0119 FDE1      SBRC	R30,1
    011A 9508      RET
    011B 90A9      LD	R10,Y+
    011C 90B9      LD	R11,Y+
    011D FDE2      SBRC	R30,2
    011E 9508      RET
    011F 90C9      LD	R12,Y+
    0120 90D9      LD	R13,Y+
    0121 FDE3      SBRC	R30,3
    0122 9508      RET
    0123 90E9      LD	R14,Y+
    0124 90F9      LD	R15,Y+
    0125 9508      RET
asgncblk:
    0126 93AA      ST	R26,-Y
    0127 93BA      ST	R27,-Y
    0128 93EA      ST	R30,-Y
    0129 93FA      ST	R31,-Y
    012A 920A      ST	R0,-Y
    012B 81AF      LDD	R26,Y+7
    012C 85B8      LDD	R27,Y+8
    012D 81ED      LDD	R30,Y+5
    012E 81FE      LDD	R31,Y+6
    012F 3000      CPI	R16,0
    0130 0701      CPC	R16,R17
    0131 F031      BEQ	0x0138
    0132 95C8      LPM
    0133 920D      ST	R0,X+
    0134 9631      ADIW	R30,1
    0135 5001      SUBI	R16,1
    0136 4010      SBCI	R17,0
    0137 CFF7      RJMP	0x012F
    0138 9009      LD	R0,Y+
    0139 91F9      LD	R31,Y+
    013A 91E9      LD	R30,Y+
    013B 91B9      LD	R27,Y+
    013C 91A9      LD	R26,Y+
    013D 9624      ADIW	R28,4
    013E 9508      RET

⌨️ 快捷键说明

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