📄 temp.lis
字号:
.module temp.c
.area text(rom, con, rel)
0000 .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\temp.c
0000 .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 2
0000 ; void delay_1us(void) //1us延时函数
0000 ; {
0000 .dbline 3
0000 ; asm("nop");
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R10,R11
.even
0004 _delay_nus::
0004 00D0 rcall push_xgset300C
0006 5801 movw R10,R16
0008 .dbline -1
0008 .dbline 7
0008 ; }
0008 ;
0008 ; void delay_nus(unsigned int n) //N us延时函数
0008 ; {
0008 .dbline 8
0008 ; unsigned int i=0;
0008 4427 clr R20
000A 5527 clr R21
000C .dbline 9
000C ; for (i=0;i<n;i++)
000C 03C0 rjmp L6
000E L3:
000E .dbline 10
000E ; delay_1us();
000E F8DF rcall _delay_1us
0010 L4:
0010 .dbline 9
0010 4F5F subi R20,255 ; offset = 1
0012 5F4F sbci R21,255
0014 L6:
0014 .dbline 9
0014 4A15 cp R20,R10
0016 5B05 cpc R21,R11
0018 D0F3 brlo L3
001A X0:
001A .dbline -2
001A L2:
001A .dbline 0 ; func end
001A 00C0 rjmp pop_xgset300C
001C .dbsym r i 20 i
001C .dbsym r n 10 i
001C .dbend
001C .dbfunc e delay_1ms _delay_1ms fV
001C ; i -> R16,R17
.even
001C _delay_1ms::
001C .dbline -1
001C .dbline 14
001C ; }
001C ;
001C ; void delay_1ms(void) //1ms延时函数
001C ; {
001C .dbline 16
001C ; unsigned int i;
001C ; for (i=0;i<1140;i++);
001C 0027 clr R16
001E 1127 clr R17
0020 02C0 rjmp L11
0022 L8:
0022 .dbline 16
0022 L9:
0022 .dbline 16
0022 0F5F subi R16,255 ; offset = 1
0024 1F4F sbci R17,255
0026 L11:
0026 .dbline 16
0026 0437 cpi R16,116
0028 E4E0 ldi R30,4
002A 1E07 cpc R17,R30
002C D0F3 brlo L8
002E X1:
002E .dbline -2
002E L7:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r i 16 i
0030 .dbend
0030 .dbfunc e delay_nms _delay_nms fV
0030 ; i -> R20,R21
0030 ; n -> R10,R11
.even
0030 _delay_nms::
0030 00D0 rcall push_xgset300C
0032 5801 movw R10,R16
0034 .dbline -1
0034 .dbline 20
0034 ; }
0034 ;
0034 ; void delay_nms(unsigned int n) //N ms延时函数
0034 ; {
0034 .dbline 21
0034 ; unsigned int i=0;
0034 4427 clr R20
0036 5527 clr R21
0038 .dbline 22
0038 ; for (i=0;i<n;i++)
0038 03C0 rjmp L16
003A L13:
003A .dbline 23
003A ; delay_1ms();
003A F0DF rcall _delay_1ms
003C L14:
003C .dbline 22
003C 4F5F subi R20,255 ; offset = 1
003E 5F4F sbci R21,255
0040 L16:
0040 .dbline 22
0040 4A15 cp R20,R10
0042 5B05 cpc R21,R11
0044 D0F3 brlo L13
0046 X2:
0046 .dbline -2
0046 L12:
0046 .dbline 0 ; func end
0046 00C0 rjmp pop_xgset300C
0048 .dbsym r i 20 i
0048 .dbsym r n 10 i
0048 .dbend
0048 .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\boot.h
0048 .dbfunc e ToBootloderCode _ToBootloderCode fV
0048 ; uartt -> R16
.even
0048 _ToBootloderCode::
0048 .dbline -1
0048 .dbline 2
0048 ; void ToBootloderCode(char uartt)
0048 ; {if(uartt=='r')
0048 .dbline 2
0048 0237 cpi R16,114
004A 31F4 brne L18
004C X3:
004C .dbline 3
004C ; {
004C .dbline 4
004C ; GICR=0X01; //中断向量表移位允许
004C 81E0 ldi R24,1
004E 8BBF out 0x3b,R24
0050 .dbline 5
0050 ; GICR=0X00; //中断向量指向应用程序区
0050 2224 clr R2
0052 2BBE out 0x3b,R2
0054 .dbline 6
0054 ; asm("jmp 0xc00");
0054 0C940006 jmp 0xc00
0058 .dbline 7
0058 ; }
0058 L18:
0058 .dbline -2
0058 L17:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r uartt 16 c
005A .dbend
005A .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\temp.c
005A .dbfunc e port_init _port_init fV
.even
005A _port_init::
005A .dbline -1
005A .dbline 10
005A ; //ICC-AVR application builder : 2008-10-20 09:40:14
005A ; // Target : M8
005A ; // Crystal: 8.0000Mhz
005A ;
005A ; #include <iom8v.h>
005A ; #include <macros.h>
005A ; #include "delay.h"
005A ; #include "boot.h"
005A ; void port_init(void)
005A ; {
005A .dbline 11
005A ; PORTB = 0x00;
005A 2224 clr R2
005C 28BA out 0x18,R2
005E .dbline 12
005E ; DDRB = 0xFF;
005E 8FEF ldi R24,255
0060 87BB out 0x17,R24
0062 .dbline 13
0062 ; PORTC = 0x00; //m103 output only
0062 25BA out 0x15,R2
0064 .dbline 14
0064 ; DDRC = 0x00;
0064 24BA out 0x14,R2
0066 .dbline 15
0066 ; PORTD = 0x00;
0066 22BA out 0x12,R2
0068 .dbline 16
0068 ; DDRD = 0x00;
0068 21BA out 0x11,R2
006A .dbline -2
006A L20:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbend
006C .dbfunc e uart0_init _uart0_init fV
.even
006C _uart0_init::
006C .dbline -1
006C .dbline 23
006C ; }
006C ;
006C ; //UART0 initialize
006C ; // desired baud rate: 9600
006C ; // actual: baud rate:9615 (0.2%)
006C ; void uart0_init(void)
006C ; {
006C .dbline 24
006C ; UCSRB = 0x00; //disable while setting baud rate
006C 2224 clr R2
006E 2AB8 out 0xa,R2
0070 .dbline 25
0070 ; UCSRA = 0x02;
0070 82E0 ldi R24,2
0072 8BB9 out 0xb,R24
0074 .dbline 26
0074 ; UCSRC = BIT(URSEL) | 0x06;
0074 86E8 ldi R24,134
0076 80BD out 0x20,R24
0078 .dbline 27
0078 ; UBRRL = 0x0C; //set baud rate lo
0078 8CE0 ldi R24,12
007A 89B9 out 0x9,R24
007C .dbline 28
007C ; UBRRH = 0x00; //set baud rate hi
007C 20BC out 0x20,R2
007E .dbline 29
007E ; UCSRB = 0x98;
007E 88E9 ldi R24,152
0080 8AB9 out 0xa,R24
0082 .dbline -2
0082 L21:
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbend
.area vector(rom, abs)
.org 22
0016 42C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0084 .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\temp.c
0084 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0084 _uart0_rx_isr::
0084 2A92 st -y,R2
0086 2FB6 in R2,0x3f
0088 2A92 st -y,R2
008A .dbline -1
008A .dbline 34
008A ; }
008A ; unsigned char uartdata;
008A ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
008A ; void uart0_rx_isr(void)
008A ; { uartdata=UDR;
008A .dbline 34
008A 2CB0 in R2,0xc
008C 20920000 sts _uartdata,R2
0090 .dbline -2
0090 L22:
0090 .dbline 0 ; func end
0090 2990 ld R2,y+
0092 2FBE out 0x3f,R2
0094 2990 ld R2,y+
0096 1895 reti
0098 .dbend
0098 .dbfunc e init_devices _init_devices fV
.even
0098 _init_devices::
0098 .dbline -1
0098 .dbline 39
0098 ; //uart has received a character in UDR
0098 ; }
0098 ; //call this routine to initialize all peripherals
0098 ; void init_devices(void)
0098 ; {
0098 .dbline 41
0098 ; //stop errant interrupts until set up
0098 ; CLI(); //disable all interrupts
0098 F894 cli
009A .dbline 42
009A ; port_init();
009A DFDF rcall _port_init
009C .dbline 43
009C ; uart0_init();
009C E7DF rcall _uart0_init
009E .dbline 44
009E ; MCUCR = 0x00;
009E 2224 clr R2
00A0 25BE out 0x35,R2
00A2 .dbline 45
00A2 ; GICR = 0x00;
00A2 2BBE out 0x3b,R2
00A4 .dbline 46
00A4 ; TIMSK = 0x00; //timer interrupt sources
00A4 29BE out 0x39,R2
00A6 .dbline 47
00A6 ; SEI(); //re-enable interrupts
00A6 7894 sei
00A8 .dbline -2
00A8 L23:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbend
00AA .dbfunc e main _main fV
.even
00AA _main::
00AA .dbline -1
00AA .dbline 52
00AA ; //all peripherals are now initialized
00AA ; }
00AA ;
00AA ; void main(void)
00AA ; {
00AA .dbline 53
00AA ; init_devices();
00AA F6DF rcall _init_devices
00AC 0DC0 rjmp L26
00AE L25:
00AE .dbline 55
00AE ; while(1)
00AE ; {
00AE .dbline 56
00AE ; PORTB=0X00;
00AE 2224 clr R2
00B0 28BA out 0x18,R2
00B2 .dbline 57
00B2 ; delay_nms(100);
00B2 04E6 ldi R16,100
00B4 10E0 ldi R17,0
00B6 BCDF rcall _delay_nms
00B8 .dbline 58
00B8 ; PORTB=0XFF;
00B8 8FEF ldi R24,255
00BA 88BB out 0x18,R24
00BC .dbline 59
00BC ; delay_nms(100);
00BC 04E6 ldi R16,100
00BE 10E0 ldi R17,0
00C0 B7DF rcall _delay_nms
00C2 .dbline 60
00C2 ; ToBootloderCode(uartdata);
00C2 00910000 lds R16,_uartdata
00C6 C0DF rcall _ToBootloderCode
00C8 .dbline 61
00C8 ; }
00C8 L26:
00C8 .dbline 54
00C8 F2CF rjmp L25
00CA X4:
00CA .dbline -2
00CA L24:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\AVR常用函数\BootLooderMage8\用户测试程序\temp.c
0000 _uartdata::
0000 .blkb 1
0001 .dbsym e uartdata _uartdata c
0001 ;
0001 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -