📄 atmegal16.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 + -