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

📄 atmegal16.lst

📁 AVR16源代码 ICC编译器
💻 LST
字号:
__start:
__text_start:
    003A E5CF      LDI	R28,0x5F
    003B E0D4      LDI	R29,4
    003C BFCD      OUT	0x3D,R28
    003D BFDE      OUT	0x3E,R29
    003E 51C0      SUBI	R28,0x10
    003F 40D0      SBCI	R29,0
    0040 EA0A      LDI	R16,0xAA
    0041 8308      STD	Y+0,R16
    0042 2400      CLR	R0
    0043 E6E6      LDI	R30,0x66
    0044 E0F0      LDI	R31,0
    0045 E012      LDI	R17,2
    0046 3CE4      CPI	R30,0xC4
    0047 07F1      CPC	R31,R17
    0048 F011      BEQ	0x004B
    0049 9201      ST	R0,Z+
    004A CFFB      RJMP	0x0046
    004B 8300      STD	Z+0,R16
    004C E6ED      LDI	R30,0x6D
    004D E0F0      LDI	R31,0
    004E E6A0      LDI	R26,0x60
    004F E0B0      LDI	R27,0
    0050 E010      LDI	R17,0
    0051 37E3      CPI	R30,0x73
    0052 07F1      CPC	R31,R17
    0053 F021      BEQ	0x0058
    0054 95C8      LPM
    0055 9631      ADIW	R30,1
    0056 920D      ST	R0,X+
    0057 CFF9      RJMP	0x0051
    0058 940E005B  CALL	_main
_exit:
    005A CFFF      RJMP	_exit
_main:
  data                 --> Y+39
  SendBuf              --> Y+29
  ReceiveBuf           --> Y+14
  SendData             --> Y+4
  i                    --> R20
    005B 97E1      SBIW	R28,0x31
FILE: D:\avr16\atmegal16\main.c
(0001) #include	<iom16v.h>
(0002) #include	"Eeprom16.h"
(0003) 
(0004) #include	"Uart.h"
(0005) #include	"Crc.h"
(0006) 
(0007) #define		BOOT_TEST	0
(0008) 
(0009) //============================================================
(0010) //无线错误下载设置错误代码定义
(0011) #define		ERR_CONNECT	0x10//表示握手信号接收不对;
(0012) #define		ERR_COMMANDCRC	0x11//表示接收命令校验错误;
(0013) #define		ERR_DATACRC	0x12//表示接收数据不正确,要求丛发数据;
(0014) #define		ERR_OVERTIME	0x13//表示接收数据超时;
(0015) #define		ERR_NOCOMMAND	0x14//没有该指令;
(0016) #define		ERR_SETTING	0x15//设置参数失败;
(0017) #define		ERR_READTIME	0x16//读取系统时钟失败;
(0018) 
(0019) //============================================================
(0020) //定义写Flash一页的长度,同时声明数据Buffer
(0021) #define   	SPM_PAGESIZE 	256
(0022) unsigned char	SendData[100];       
(0023) unsigned char 	SendBuf[100];
(0024) unsigned char 	ReceiveBuf[150];
(0025) unsigned char 	data[SPM_PAGESIZE];
(0026) 
(0027) //============================================================ 
(0028) //定义接收数据的起点和写FLASH的起始地址
(0029) unsigned int 	bPiont = 0;
(0030) unsigned long 	address= 0x0000;
(0031) 
(0032) 
(0033) //============================================================
(0034) //函	数:void main(void)
(0035) //功	能:主函数
(0036) //入口参数:无
(0037) //返 回 值:无
(0038) //设 计 者:覃道堂 
(0039) //创作时间:2006-03-16
(0040) //修改时间:
(0041) //修改目的:
(0042) //============================================================
(0043) void main(void)
(0044) {
(0045)    
(0046)    unsigned char	SendData[10]="aAAAAAAAAA";     
    005C E584      LDI	R24,0x54
    005D E090      LDI	R25,0
    005E 01FE      MOVW	R30,R28
    005F 9634      ADIW	R30,4
    0060 E00A      LDI	R16,0xA
    0061 E010      LDI	R17,0
    0062 93FA      ST	R31,-Y
    0063 93EA      ST	R30,-Y
    0064 939A      ST	R25,-Y
    0065 938A      ST	R24,-Y
    0066 940E0265  CALL	asgncblk
(0047)    unsigned char 	SendBuf[10];
(0048)    unsigned char 	ReceiveBuf[15]="1234567810";
    0068 E58E      LDI	R24,0x5E
    0069 E090      LDI	R25,0
    006A 01FE      MOVW	R30,R28
    006B 963E      ADIW	R30,0xE
    006C E00F      LDI	R16,0xF
    006D E010      LDI	R17,0
    006E 93FA      ST	R31,-Y
    006F 93EA      ST	R30,-Y
    0070 939A      ST	R25,-Y
    0071 938A      ST	R24,-Y
    0072 940E0265  CALL	asgncblk
(0049)    unsigned char 	data[10];
(0050)    unsigned char    i;
(0051)    
(0052)    Init_Com();
    0074 940E00CC  CALL	_Init_Com
(0053)    Uart_PutChar(SendData[0]);
    0076 810C      LDD	R16,Y+4
    0077 940E00D7  CALL	_Uart_PutChar
(0054)    PC_Send_Ok(SendData,0x00,SendBuf,1);				//向PC 发送接收握手信号
    0079 E081      LDI	R24,1
    007A E090      LDI	R25,0
    007B 839B      STD	Y+3,R25
    007C 838A      STD	Y+2,R24
    007D 01CE      MOVW	R24,R28
    007E 964D      ADIW	R24,0x1D
    007F 8399      STD	Y+1,R25
    0080 8388      STD	Y+0,R24
    0081 2722      CLR	R18
    0082 018E      MOVW	R16,R28
    0083 5F0C      SUBI	R16,0xFC
    0084 4F1F      SBCI	R17,0xFF
    0085 940E0160  CALL	_PC_Send_Ok
(0055)    Read_EEPROM(SendData,2,0x10);
    0087 E180      LDI	R24,0x10
    0088 E090      LDI	R25,0
    0089 8399      STD	Y+1,R25
    008A 8388      STD	Y+0,R24
    008B E022      LDI	R18,2
    008C 018E      MOVW	R16,R28
    008D 5F0C      SUBI	R16,0xFC
    008E 4F1F      SBCI	R17,0xFF
    008F 940E01A9  CALL	_Read_EEPROM
(0056)    
(0057)     for(i=0;i<10;i++)
    0091 2744      CLR	R20
    0092 C009      RJMP	0x009C
(0058)     SendData[i]=0;
    0093 01CE      MOVW	R24,R28
    0094 9604      ADIW	R24,4
    0095 2FE4      MOV	R30,R20
    0096 27FF      CLR	R31
    0097 0FE8      ADD	R30,R24
    0098 1FF9      ADC	R31,R25
    0099 2422      CLR	R2
    009A 8220      STD	Z+0,R2
    009B 9543      INC	R20
    009C 304A      CPI	R20,0xA
    009D F3A8      BCS	0x0093
(0059) 	Write_EEPROM(&ReceiveBuf[5],2,0x10);//设置节点地址
    009E E180      LDI	R24,0x10
    009F E090      LDI	R25,0
    00A0 8399      STD	Y+1,R25
    00A1 8388      STD	Y+0,R24
    00A2 E022      LDI	R18,2
    00A3 018E      MOVW	R16,R28
    00A4 5E0D      SUBI	R16,0xED
    00A5 4F1F      SBCI	R17,0xFF
    00A6 940E018F  CALL	_Write_EEPROM
(0060) 	Read_EEPROM(SendData,2,0x10);
    00A8 E180      LDI	R24,0x10
    00A9 E090      LDI	R25,0
    00AA 8399      STD	Y+1,R25
    00AB 8388      STD	Y+0,R24
    00AC E022      LDI	R18,2
    00AD 018E      MOVW	R16,R28
    00AE 5F0C      SUBI	R16,0xFC
    00AF 4F1F      SBCI	R17,0xFF
    00B0 940E01A9  CALL	_Read_EEPROM
(0061) 	
(0062) 	for(i=0;i<10;i++)
    00B2 2744      CLR	R20
    00B3 C009      RJMP	0x00BD
(0063)     SendData[i]=0;
    00B4 01CE      MOVW	R24,R28
    00B5 9604      ADIW	R24,4
    00B6 2FE4      MOV	R30,R20
    00B7 27FF      CLR	R31
    00B8 0FE8      ADD	R30,R24
    00B9 1FF9      ADC	R31,R25
    00BA 2422      CLR	R2
    00BB 8220      STD	Z+0,R2
    00BC 9543      INC	R20
    00BD 304A      CPI	R20,0xA
    00BE F3A8      BCS	0x00B4
(0064) 	
(0065) 	Read_EEPROM(SendData,2,0x10);
    00BF E180      LDI	R24,0x10
    00C0 E090      LDI	R25,0
    00C1 8399      STD	Y+1,R25
    00C2 8388      STD	Y+0,R24
    00C3 E022      LDI	R18,2
    00C4 018E      MOVW	R16,R28
    00C5 5F0C      SUBI	R16,0xFC
    00C6 4F1F      SBCI	R17,0xFF
    00C7 940E01A9  CALL	_Read_EEPROM
(0066) 	
(0067) 	while(1);
    00C9 CFFF      RJMP	0x00C9
    00CA 96E1      ADIW	R28,0x31
    00CB 9508      RET
FILE: D:\avr16\atmegal16\Uart.c
(0001) #include	<iom16v.h>
(0002) #include	"Uart.h"
(0003) #include	"Crc.h"
(0004) 
(0005) //============================================================
(0006) //计算和设置16的

⌨️ 快捷键说明

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