📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _tmp::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\avr\2.5.2\main.c
0001 .dbsym e tmp _tmp c
.area text(rom, con, rel)
0000 .dbfile E:\avr\2.5.2\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 11
0000 ; //ICC-AVR application builder : 2007-5-30 15:23:23
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; volatile unsigned char tmp=0;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 12
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 13
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 14
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 15
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 16
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 17
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 18
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 19
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e uart0_init _uart0_init fV
.even
0014 _uart0_init::
0014 .dbline -1
0014 .dbline 28
0014 ; }
0014 ;
0014 ; //UART0 initialize
0014 ; // desired baud rate: 9600
0014 ; // actual: baud rate:9600 (0.0%)
0014 ; // char size: 8 bit
0014 ; // parity: Disabled
0014 ; void uart0_init(void)
0014 ; {
0014 .dbline 29
0014 ; UCSRB = 0x00; //disable while setting baud rate
0014 2224 clr R2
0016 2AB8 out 0xa,R2
0018 .dbline 30
0018 ; UCSRA = 0x00;
0018 2BB8 out 0xb,R2
001A .dbline 31
001A ; UCSRC = BIT(URSEL) | 0x06;
001A 86E8 ldi R24,134
001C 80BD out 0x20,R24
001E .dbline 32
001E ; UBRRL = 0x2F; //set baud rate lo
001E 8FE2 ldi R24,47
0020 89B9 out 0x9,R24
0022 .dbline 33
0022 ; UBRRH = 0x00; //set baud rate hi
0022 20BC out 0x20,R2
0024 .dbline 34
0024 ; UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
0024 88ED ldi R24,216
0026 8AB9 out 0xa,R24
0028 .dbline -2
0028 L2:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
.area vector(rom, abs)
.org 44
002C 0C941500 jmp _uart0_rx_isr
.area text(rom, con, rel)
002A .dbfile E:\avr\2.5.2\main.c
002A .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
002A _uart0_rx_isr::
002A 2A92 st -y,R2
002C 2FB6 in R2,0x3f
002E 2A92 st -y,R2
0030 .dbline -1
0030 .dbline 39
0030 ; }
0030 ;
0030 ; #pragma interrupt_handler uart0_rx_isr:12
0030 ; void uart0_rx_isr(void)
0030 ; {
0030 .dbline 41
0030 ; //uart has received a character in UDR
0030 ; tmp=UDR; //读取接收到的数
0030 2CB0 in R2,0xc
0032 20920000 sts _tmp,R2
0036 .dbline 42
0036 ; UDR=tmp; //启动发送
0036 20900000 lds R2,_tmp
003A 2CB8 out 0xc,R2
003C .dbline -2
003C L3:
003C 2990 ld R2,y+
003E 2FBE out 0x3f,R2
0040 2990 ld R2,y+
0042 .dbline 0 ; func end
0042 1895 reti
0044 .dbend
.area vector(rom, abs)
.org 52
0034 0C942200 jmp _uart0_tx_isr
.area text(rom, con, rel)
0044 .dbfile E:\avr\2.5.2\main.c
0044 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0044 _uart0_tx_isr::
0044 2A92 st -y,R2
0046 2FB6 in R2,0x3f
0048 2A92 st -y,R2
004A .dbline -1
004A .dbline 56
004A ; }
004A ;
004A ; /*
004A ; #pragma interrupt_handler uart0_udre_isr:13
004A ; void uart0_udre_isr(void)
004A ; {
004A ; //character transferred to shift register so UDR is now empty
004A ; UDR='x'; //是空就让,传输完成接着就会进入本中断。
004A ; }
004A ; */
004A ;
004A ; #pragma interrupt_handler uart0_tx_isr:14
004A ; void uart0_tx_isr(void)
004A ; {
004A .dbline 58
004A ; //character has been transmitted
004A ; UDR=tmp;
004A 20900000 lds R2,_tmp
004E 2CB8 out 0xc,R2
0050 .dbline -2
0050 L4:
0050 2990 ld R2,y+
0052 2FBE out 0x3f,R2
0054 2990 ld R2,y+
0056 .dbline 0 ; func end
0056 1895 reti
0058 .dbend
0058 .dbfunc e init_devices _init_devices fV
.even
0058 _init_devices::
0058 .dbline -1
0058 .dbline 63
0058 ; }
0058 ;
0058 ; //call this routine to initialize all peripherals
0058 ; void init_devices(void)
0058 ; {
0058 .dbline 65
0058 ; //stop errant interrupts until set up
0058 ; CLI(); //disable all interrupts
0058 F894 cli
005A .dbline 66
005A ; port_init();
005A D2DF xcall _port_init
005C .dbline 67
005C ; uart0_init();
005C DBDF xcall _uart0_init
005E .dbline 69
005E ;
005E ; MCUCR = 0x00;
005E 2224 clr R2
0060 25BE out 0x35,R2
0062 .dbline 70
0062 ; GICR = 0x00;
0062 2BBE out 0x3b,R2
0064 .dbline 71
0064 ; TIMSK = 0x00; //timer interrupt sources
0064 29BE out 0x39,R2
0066 .dbline 72
0066 ; SEI(); //re-enable interrupts
0066 7894 sei
0068 .dbline -2
0068 L5:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbend
006A .dbfunc e main _main fV
.even
006A _main::
006A .dbline -1
006A .dbline 77
006A ; //all peripherals are now initialized
006A ; }
006A ;
006A ; void main(void)
006A ; {
006A .dbline 78
006A ; init_devices(); //主程序里面只初始化
006A F6DF xcall _init_devices
006C .dbline 79
006C ; UDR=tmp;
006C 20900000 lds R2,_tmp
0070 2CB8 out 0xc,R2
0072 L7:
0072 .dbline 81
0072 L8:
0072 .dbline 80
0072 FFCF xjmp L7
0074 X0:
0074 .dbline -2
0074 L6:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -