📄 init.lis
字号:
.module init.c
.area text(rom, con, rel)
0000 .dbfile C:\RGauge\init.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 14/3/2007 23:29:10
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include "config.h"
0000 ; #include "predef.h"
0000 ;
0000 ; #define BAUD_RATE 9600
0000 ; #define BAUD_PRESCALE (((F_CPU / (BAUD_RATE * 16UL))) - 1)
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 13
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 14
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 15
0006 ; PORTB = 0xFD;
0006 8DEF ldi R24,253
0008 88BB out 0x18,R24
000A .dbline 16
000A ; DDRB = 0xB0;
000A 80EB ldi R24,176
000C 87BB out 0x17,R24
000E .dbline 17
000E ; PORTC = 0x00; //m103 output only
000E 25BA out 0x15,R2
0010 .dbline 18
0010 ; DDRC = 0x00;
0010 24BA out 0x14,R2
0012 .dbline 19
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 20
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e uart0_init _uart0_init fV
.even
0018 _uart0_init::
0018 .dbline -1
0018 .dbline 29
0018 ; }
0018 ;
0018 ; //UART0 initialize
0018 ; // desired baud rate:
0018 ; // actual: baud rate: (0.0%)
0018 ; // char size: 8 bit
0018 ; // parity: Disabled
0018 ; void uart0_init(void)
0018 ; {
0018 .dbline 30
0018 ; UCSRB = 0x00; //disable while setting baud rate
0018 2224 clr R2
001A 2AB8 out 0xa,R2
001C .dbline 31
001C ; UCSRA = 0x00;
001C 2BB8 out 0xb,R2
001E .dbline 32
001E ; UCSRC = BIT(URSEL) | 0x06; //Use 8-bit character sizes - URSEL bit set to select the UCRSC register
001E 86E8 ldi R24,134
0020 80BD out 0x20,R24
0022 .dbline 33
0022 ; UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
0022 8FE2 ldi R24,47
0024 89B9 out 0x9,R24
0026 .dbline 34
0026 ; UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
0026 20BC out 0x20,R2
0028 .dbline 35
0028 ; UCSRB = 0xD8;
0028 88ED ldi R24,216
002A 8AB9 out 0xa,R24
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
.area data(ram, con, rel)
0000 .dbfile C:\RGauge\init.c
0000 _sendready::
0000 .blkb 2
.area idata
0000 0100 .word 1
.area data(ram, con, rel)
0002 .dbfile C:\RGauge\init.c
0002 .dbsym e sendready _sendready I
.area vector(rom, abs)
.org 44
002C 0C941700 jmp _uart0_rx_isr
.area data(ram, con, rel)
0002 .dbfile C:\RGauge\init.c
.area text(rom, con, rel)
002E .dbfile C:\RGauge\init.c
002E .dbfunc e uart0_rx_isr _uart0_rx_isr fV
002E ; status -> R22
002E ; data -> R20
.even
002E _uart0_rx_isr::
002E 0E940000 xcall push_lset
0032 0E940000 xcall push_gset2
0036 .dbline -1
0036 .dbline 41
0036 ; }
0036 ;
0036 ; extern int sendready=1;
0036 ; #pragma interrupt_handler uart0_rx_isr:12
0036 ; void uart0_rx_isr(void)
0036 ; {
0036 .dbline 44
0036 ; //uart has received a character in UDR
0036 ; unsigned char status,data;
0036 ; status=UCSRA; //get the usart status
0036 6BB1 in R22,0xb
0038 .dbline 45
0038 ; data = UDR; //put the received character to data variable
0038 4CB1 in R20,0xc
003A .dbline 46
003A ; if(data == 'R') {
003A 4235 cpi R20,82
003C 31F4 brne L4
003E .dbline 46
003E .dbline 47
003E ; sendready = 1;
003E 81E0 ldi R24,1
0040 90E0 ldi R25,0
0042 90930100 sts _sendready+1,R25
0046 80930000 sts _sendready,R24
004A .dbline 48
004A ; }
004A L4:
004A .dbline 50
004A 862F mov R24,R22
004C 8871 andi R24,24
004E 19F4 brne L6
0050 .dbline 51
0050 .dbline 52
0050 042F mov R16,R20
0052 0E940000 xcall _uart_putc
0056 .dbline 53
0056 L6:
0056 .dbline -2
0056 L3:
0056 0E940000 xcall pop_gset2
005A 0E940000 xcall pop_lset
005E .dbline 0 ; func end
005E 1895 reti
0060 .dbsym r status 22 c
0060 .dbsym r data 20 c
0060 .dbend
.area vector(rom, abs)
.org 52
0034 0C943000 jmp _uart0_tx_isr
.area text(rom, con, rel)
0060 .dbfile C:\RGauge\init.c
0060 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0060 _uart0_tx_isr::
0060 .dbline -1
0060 .dbline 59
0060 ;
0060 ; if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
0060 ; {
0060 ; uart_putc(data);
0060 ; }
0060 ;
0060 ; }
0060 ;
0060 ; #pragma interrupt_handler uart0_tx_isr:14
0060 ; void uart0_tx_isr(void)
0060 ; {
0060 .dbline -2
0060 L8:
0060 .dbline 0 ; func end
0060 1895 reti
0062 .dbend
0062 .dbfunc e spi_init _spi_init fV
.even
0062 _spi_init::
0062 .dbline -1
0062 .dbline 67
0062 ; //character has been transmitted
0062 ; }
0062 ;
0062 ; //SPI initialize
0062 ; //Master mode
0062 ; // clock rate: 460799hz
0062 ; void spi_init(void)
0062 ; {
0062 .dbline 68
0062 ; SPCR = 0x72; //setup SPI
0062 82E7 ldi R24,114
0064 8DB9 out 0xd,R24
0066 .dbline 69
0066 ; SPSR = 0x00; //setup SPI
0066 2224 clr R2
0068 2EB8 out 0xe,R2
006A .dbline -2
006A L9:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -