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

📄 temp.lst

📁 本源码为C语言环境的ATMAGE8的BootLoader开发程序
💻 LST
字号:
__start:
__text_start:
      13 E5CF      LDI	R28,0x5F
      14 E0D4      LDI	R29,4
      15 BFCD      OUT	0x3D,R28
      16 BFDE      OUT	0x3E,R29
      17 51C0      SUBI	R28,0x10
      18 40D0      SBCI	R29,0
      19 EA0A      LDI	R16,0xAA
      1A 8308      STD	Y+0,R16
      1B 2400      CLR	R0
      1C E6E0      LDI	R30,0x60
      1D E0F0      LDI	R31,0
      1E E010      LDI	R17,0
      1F 36E1      CPI	R30,0x61
      20 07F1      CPC	R31,R17
      21 F011      BEQ	0x0024
      22 9201      ST	R0,Z+
      23 CFFB      RJMP	0x001F
      24 8300      STD	Z+0,R16
      25 E2E6      LDI	R30,0x26
      26 E0F0      LDI	R31,0
      27 E6A0      LDI	R26,0x60
      28 E0B0      LDI	R27,0
      29 E010      LDI	R17,0
      2A E000      LDI	R16,0
      2B BF0B      OUT	0x3B,R16
      2C 32E6      CPI	R30,0x26
      2D 07F1      CPC	R31,R17
      2E F021      BEQ	0x0033
      2F 95C8      LPM
      30 9631      ADIW	R30,1
      31 920D      ST	R0,X+
      32 CFF9      RJMP	0x002C
      33 D056      RCALL	_main
_exit:
      34 CFFF      RJMP	_exit
FILE: F:\AVR常用函数\BootLooderMage8\用户测试程序\delay.h
(0001) void delay_1us(void)                 //1us延时函数
(0002)   {
(0003)    asm("nop");
_delay_1us:
      35 0000      NOP
      36 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R10
      37 D063      RCALL	push_xgset300C
      38 0158      MOVW	R10,R16
(0004)   }
(0005) 
(0006) void delay_nus(unsigned int n)       //N us延时函数
(0007)   {
(0008)    unsigned int i=0;
      39 2744      CLR	R20
      3A 2755      CLR	R21
(0009)    for (i=0;i<n;i++)
      3B C003      RJMP	0x003F
(0010)    delay_1us();
      3C DFF8      RCALL	_delay_1us
      3D 5F4F      SUBI	R20,0xFF
      3E 4F5F      SBCI	R21,0xFF
      3F 154A      CP	R20,R10
      40 055B      CPC	R21,R11
      41 F3D0      BCS	0x003C
      42 C05D      RJMP	pop_xgset300C
(0011)   }
(0012)   
(0013) void delay_1ms(void)                 //1ms延时函数
(0014)   {
(0015)    unsigned int i;
(0016)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
      43 2700      CLR	R16
      44 2711      CLR	R17
      45 C002      RJMP	0x0048
      46 5F0F      SUBI	R16,0xFF
      47 4F1F      SBCI	R17,0xFF
      48 3704      CPI	R16,0x74
      49 E0E4      LDI	R30,4
      4A 071E      CPC	R17,R30
      4B F3D0      BCS	0x0046
      4C 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      4D D04D      RCALL	push_xgset300C
      4E 0158      MOVW	R10,R16
(0017)   }
(0018)   
(0019) void delay_nms(unsigned int n)       //N ms延时函数
(0020)   {
(0021)    unsigned int i=0;
      4F 2744      CLR	R20
      50 2755      CLR	R21
(0022)    for (i=0;i<n;i++)
      51 C003      RJMP	0x0055
(0023)    delay_1ms();
      52 DFF0      RCALL	_delay_1ms
      53 5F4F      SUBI	R20,0xFF
      54 4F5F      SBCI	R21,0xFF
      55 154A      CP	R20,R10
      56 055B      CPC	R21,R11
      57 F3D0      BCS	0x0052
      58 C047      RJMP	pop_xgset300C
FILE: F:\AVR常用函数\BootLooderMage8\用户测试程序\boot.h
(0001) void ToBootloderCode(char uartt)
(0002)   {if(uartt=='r')
_ToBootloderCode:
  uartt                --> R16
      59 3702      CPI	R16,0x72
      5A F431      BNE	0x0061
(0003)     {
(0004)      GICR=0X01;           //中断向量表移位允许
      5B E081      LDI	R24,1
      5C BF8B      OUT	0x3B,R24
(0005)      GICR=0X00;           //中断向量指向应用程序区
      5D 2422      CLR	R2
      5E BE2B      OUT	0x3B,R2
(0006)      asm("jmp 0xc00");
      5F 940C 0600 JMP	0x0600
(0007)     }              
      61 9508      RET
FILE: F:\AVR常用函数\BootLooderMage8\用户测试程序\temp.c
(0001) //ICC-AVR application builder : 2008-10-20 09:40:14
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007) #include "delay.h"
(0008) #include "boot.h"
(0009) void port_init(void)
(0010) {
(0011)  PORTB = 0x00;
_port_init:
      62 2422      CLR	R2
      63 BA28      OUT	0x18,R2
(0012)  DDRB  = 0xFF;
      64 EF8F      LDI	R24,0xFF
      65 BB87      OUT	0x17,R24
(0013)  PORTC = 0x00; //m103 output only
      66 BA25      OUT	0x15,R2
(0014)  DDRC  = 0x00;
      67 BA24      OUT	0x14,R2
(0015)  PORTD = 0x00;
      68 BA22      OUT	0x12,R2
(0016)  DDRD  = 0x00;
      69 BA21      OUT	0x11,R2
      6A 9508      RET
(0017) }
(0018) 
(0019) //UART0 initialize
(0020) // desired baud rate: 9600
(0021) // actual: baud rate:9615 (0.2%)
(0022) void uart0_init(void)
(0023) {
(0024)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
      6B 2422      CLR	R2
      6C B82A      OUT	0x0A,R2
(0025)  UCSRA = 0x02;
      6D E082      LDI	R24,2
      6E B98B      OUT	0x0B,R24
(0026)  UCSRC = BIT(URSEL) | 0x06;
      6F E886      LDI	R24,0x86
      70 BD80      OUT	0x20,R24
(0027)  UBRRL = 0x0C; //set baud rate lo
      71 E08C      LDI	R24,0xC
      72 B989      OUT	0x09,R24
(0028)  UBRRH = 0x00; //set baud rate hi
      73 BC20      OUT	0x20,R2
(0029)  UCSRB = 0x98;
      74 E988      LDI	R24,0x98
      75 B98A      OUT	0x0A,R24
      76 9508      RET
_uart0_rx_isr:
      77 922A      ST	R2,-Y
      78 B62F      IN	R2,0x3F
      79 922A      ST	R2,-Y
(0030) }
(0031) unsigned char uartdata;
(0032) #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
(0033) void uart0_rx_isr(void)
(0034) { uartdata=UDR;
      7A B02C      IN	R2,0x0C
      7B 9220 0060 STS	uartdata,R2
      7D 9029      LD	R2,Y+
      7E BE2F      OUT	0x3F,R2
      7F 9029      LD	R2,Y+
      80 9518      RETI
(0035)  //uart has received a character in UDR
(0036) }
(0037) //call this routine to initialize all peripherals
(0038) void init_devices(void)
(0039) {
(0040)  //stop errant interrupts until set up
(0041)  CLI(); //disable all interrupts
_init_devices:
      81 94F8      BCLR	7
(0042)  port_init();
      82 DFDF      RCALL	_port_init
(0043) uart0_init();
      83 DFE7      RCALL	_uart0_init
(0044)  MCUCR = 0x00;
      84 2422      CLR	R2
      85 BE25      OUT	0x35,R2
(0045)  GICR  = 0x00;
      86 BE2B      OUT	0x3B,R2
(0046)  TIMSK = 0x00; //timer interrupt sources
      87 BE29      OUT	0x39,R2
(0047)  SEI(); //re-enable interrupts
      88 9478      BSET	7
      89 9508      RET
(0048)  //all peripherals are now initialized
(0049) }
(0050) 
(0051) void main(void)
(0052) {
(0053)  init_devices();
_main:
      8A DFF6      RCALL	_init_devices
      8B C00D      RJMP	0x0099
(0054)  while(1)
(0055)  {
(0056)   PORTB=0X00;
      8C 2422      CLR	R2
      8D BA28      OUT	0x18,R2
(0057)   delay_nms(100);
      8E E604      LDI	R16,0x64
      8F E010      LDI	R17,0
      90 DFBC      RCALL	_delay_nms
(0058)   PORTB=0XFF;
      91 EF8F      LDI	R24,0xFF
      92 BB88      OUT	0x18,R24
(0059)   delay_nms(100);
      93 E604      LDI	R16,0x64
      94 E010      LDI	R17,0
      95 DFB7      RCALL	_delay_nms
(0060)   ToBootloderCode(uartdata);
FILE: <library>
      96 9100 0060 LDS	R16,uartdata
      98 DFC0      RCALL	_ToBootloderCode
      99 CFF2      RJMP	0x008C
      9A 9508      RET
push_xgset300C:
      9B 935A      ST	R21,-Y
      9C 934A      ST	R20,-Y
      9D 92BA      ST	R11,-Y
      9E 92AA      ST	R10,-Y
      9F 9508      RET
pop_xgset300C:
      A0 90A9      LD	R10,Y+
      A1 90B9      LD	R11,Y+
      A2 9149      LD	R20,Y+
      A3 9159      LD	R21,Y+
      A4 9508      RET

⌨️ 快捷键说明

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