📄 uart.lis
字号:
.module uart.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\uart\uart.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2005-3-8 下午 09:54:40
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 2224 clr R2
0006 27BA out 0x17,R2
0008 .dbline 12
0008 ; PORTC = 0x7F; //m103 output only
0008 8FE7 ldi R24,127
000A 85BB out 0x15,R24
000C .dbline 13
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 14
000E ; PORTD = 0xFF;
000E 8FEF ldi R24,255
0010 82BB out 0x12,R24
0012 .dbline 15
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 .dbline 16
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e uart0_init _uart0_init fV
.even
0016 _uart0_init::
0016 .dbline -1
0016 .dbline 24
0016 ;
0016 ; //UART0 initialisation
0016 ; // desired baud rate: 9600
0016 ; // actual: baud rate:9600 (0.0%)
0016 ; // char size: 8 bit
0016 ; // parity: Disabled
0016 ; void uart0_init(void)
0016 ; {
0016 .dbline 25
0016 ; UCSRB = 0x00; //disable while setting baud rate
0016 2224 clr R2
0018 2AB8 out 0xa,R2
001A .dbline 26
001A ; UCSRA = 0x00;
001A 2BB8 out 0xb,R2
001C .dbline 27
001C ; UCSRC = 0x86;
001C 86E8 ldi R24,134
001E 80BD out 0x20,R24
0020 .dbline 28
0020 ; UBRRL = 0x47; //set baud rate lo
0020 87E4 ldi R24,71
0022 89B9 out 0x9,R24
0024 .dbline 29
0024 ; UBRRH = 0x00; //set baud rate hi
0024 20BC out 0x20,R2
0026 .dbline 30
0026 ; UCSRB = 0x98;
0026 88E9 ldi R24,152
0028 8AB9 out 0xa,R24
002A .dbline -2
002A .dbline 31
002A ; }
002A L2:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
.area vector(rom, abs)
.org 22
0016 16C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
002C .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\uart\uart.c
002C .dbfunc e uart0_rx_isr _uart0_rx_isr fV
002C ; temp -> R16
.even
002C _uart0_rx_isr::
002C 0A93 st -y,R16
002E 0FB7 in R16,0x3f
0030 0A93 st -y,R16
0032 .dbline -1
0032 .dbline 35
0032 ;
0032 ; #pragma interrupt_handler uart0_rx_isr:12
0032 ; void uart0_rx_isr(void)
0032 ; {
0032 .dbline 38
0032 ; //uart has received a character in UDR
0032 ; char temp;
0032 ; temp = UDR;
0032 0CB1 in R16,0xc
0034 .dbline 39
0034 ; UDR = temp;
0034 0CB9 out 0xc,R16
0036 .dbline -2
0036 .dbline 40
0036 ; }
0036 L3:
0036 0991 ld R16,y+
0038 0FBF out 0x3f,R16
003A 0991 ld R16,y+
003C .dbline 0 ; func end
003C 1895 reti
003E .dbsym r temp 16 c
003E .dbend
003E .dbfunc e init_devices _init_devices fV
.even
003E _init_devices::
003E .dbline -1
003E .dbline 44
003E ;
003E ; //call this routine to initialise all peripherals
003E ; void init_devices(void)
003E ; {
003E .dbline 46
003E ; //stop errant interrupts until set up
003E ; CLI(); //disable all interrupts
003E F894 cli
0040 .dbline 47
0040 ; port_init();
0040 DFDF rcall _port_init
0042 .dbline 48
0042 ; uart0_init();
0042 E9DF rcall _uart0_init
0044 .dbline 50
0044 ;
0044 ; MCUCR = 0x00;
0044 2224 clr R2
0046 25BE out 0x35,R2
0048 .dbline 51
0048 ; GICR = 0x00;
0048 2BBE out 0x3b,R2
004A .dbline 52
004A ; TIMSK = 0x00; //timer interrupt sources
004A 29BE out 0x39,R2
004C .dbline 53
004C ; SEI(); //re-enable interrupts
004C 7894 sei
004E .dbline -2
004E .dbline 55
004E ; //all peripherals are now initialised
004E ; }
004E L4:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbend
0050 .dbfunc e main _main fV
.even
0050 _main::
0050 .dbline -1
0050 .dbline 59
0050 ;
0050 ; //
0050 ; void main(void)
0050 ; {
0050 .dbline 60
0050 ; init_devices();
0050 F6DF rcall _init_devices
0052 L6:
0052 .dbline 62
0052 L7:
0052 .dbline 62
0052 FFCF rjmp L6
0054 X0:
0054 .dbline -2
0054 .dbline 63
0054 ; //insert your functional code here...
0054 ; while(1);
0054 ; }
0054 L5:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -