📄 init.lis
字号:
.module init.C
.area text(rom, con, rel)
0000 .dbfile D:\xb_work\标准速度测试仪\speed_mega8\init.C
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2006-10-11 上午 11:14:38
0000 ; // Target : M8
0000 ; // Crystal: 6.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 27BA out 0x17,R2
0006 .dbline 12
0006 ; PORTC = 0x00; //m103 output only
0006 25BA out 0x15,R2
0008 .dbline 13
0008 ; DDRC = 0x00;
0008 24BA out 0x14,R2
000A .dbline 14
000A ; PORTD = 0x00;
000A 22BA out 0x12,R2
000C .dbline 15
000C ; DDRD = 0x00;
000C 21BA out 0x11,R2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e watchdog_init _watchdog_init fV
.even
0010 _watchdog_init::
0010 .dbline -1
0010 .dbline 21
0010 ; }
0010 ;
0010 ; //Watchdog initialize
0010 ; // prescale: 16K
0010 ; void watchdog_init(void)
0010 ; {
0010 .dbline 22
0010 ; WDR(); //this prevents a timout on enabling
0010 A895 wdr
0012 .dbline 23
0012 ; WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
0012 88E0 ldi R24,8
0014 81BD out 0x21,R24
0016 .dbline -2
0016 L2:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e timer1_init _timer1_init fV
.even
0018 _timer1_init::
0018 .dbline -1
0018 .dbline 31
0018 ; }
0018 ;
0018 ; //TIMER1 initialize - prescale:1
0018 ; // WGM: 0) Normal, TOP=0xFFFF
0018 ; // desired value: 320Hz
0018 ; // actual value: 320.000Hz (0.0%)
0018 ; void timer1_init(void)
0018 ; {
0018 .dbline 32
0018 ; TCCR1B = 0x00; //stop
0018 2224 clr R2
001A 2EBC out 0x2e,R2
001C .dbline 34
001C ;
001C ; TCNT1H = 0xB6; //setup
001C 86EB ldi R24,182
001E 8DBD out 0x2d,R24
0020 .dbline 35
0020 ; TCNT1L = 0xC2;
0020 82EC ldi R24,194
0022 8CBD out 0x2c,R24
0024 .dbline 37
0024 ;
0024 ; OCR1AH = 0x49;
0024 89E4 ldi R24,73
0026 8BBD out 0x2b,R24
0028 .dbline 38
0028 ; OCR1AL = 0x3E;
0028 8EE3 ldi R24,62
002A 8ABD out 0x2a,R24
002C .dbline 39
002C ; OCR1BH = 0x49;
002C 89E4 ldi R24,73
002E 89BD out 0x29,R24
0030 .dbline 40
0030 ; OCR1BL = 0x3E;
0030 8EE3 ldi R24,62
0032 88BD out 0x28,R24
0034 .dbline 41
0034 ; ICR1H = 0x49;
0034 89E4 ldi R24,73
0036 87BD out 0x27,R24
0038 .dbline 42
0038 ; ICR1L = 0x3E;
0038 8EE3 ldi R24,62
003A 86BD out 0x26,R24
003C .dbline 43
003C ; TCCR1A = 0x00;
003C 2FBC out 0x2f,R2
003E .dbline 45
003E ;
003E ; TCCR1B = 0x01; //start Timer
003E 81E0 ldi R24,1
0040 8EBD out 0x2e,R24
0042 .dbline -2
0042 L3:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbend
.area vector(rom, abs)
.org 16
0010 22C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0044 .dbfile D:\xb_work\标准速度测试仪\speed_mega8\init.C
0044 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0044 _timer1_ovf_isr::
0044 8A93 st -y,R24
0046 8FB7 in R24,0x3f
0048 8A93 st -y,R24
004A .dbline -1
004A .dbline 50
004A ; }
004A ;
004A ; #pragma interrupt_handler timer1_ovf_isr:9
004A ; void timer1_ovf_isr(void)
004A ; {
004A .dbline 52
004A ; //TIMER1 has overflowed
004A ; TCNT1H = 0xB6; //reload counter high value
004A 86EB ldi R24,182
004C 8DBD out 0x2d,R24
004E .dbline 53
004E ; TCNT1L = 0xC2; //reload counter low value
004E 82EC ldi R24,194
0050 8CBD out 0x2c,R24
0052 .dbline -2
0052 L4:
0052 8991 ld R24,y+
0054 8FBF out 0x3f,R24
0056 8991 ld R24,y+
0058 .dbline 0 ; func end
0058 1895 reti
005A .dbend
005A .dbfunc e uart0_init _uart0_init fV
.even
005A _uart0_init::
005A .dbline -1
005A .dbline 62
005A ; }
005A ;
005A ; //UART0 initialize
005A ; // desired baud rate: 9600
005A ; // actual: baud rate:9615 (0.2%)
005A ; // char size: 8 bit
005A ; // parity: Disabled
005A ; void uart0_init(void)
005A ; {
005A .dbline 63
005A ; UCSRB = 0x00; //disable while setting baud rate
005A 2224 clr R2
005C 2AB8 out 0xa,R2
005E .dbline 64
005E ; UCSRA = 0x00;
005E 2BB8 out 0xb,R2
0060 .dbline 65
0060 ; UCSRC = BIT(URSEL) | 0x06;
0060 86E8 ldi R24,134
0062 80BD out 0x20,R24
0064 .dbline 66
0064 ; UBRRL = 0x26; //set baud rate lo
0064 86E2 ldi R24,38
0066 89B9 out 0x9,R24
0068 .dbline 67
0068 ; UBRRH = 0x00; //set baud rate hi
0068 20BC out 0x20,R2
006A .dbline 68
006A ; UCSRB = 0xD8;
006A 88ED ldi R24,216
006C 8AB9 out 0xa,R24
006E .dbline -2
006E L5:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
.area vector(rom, abs)
.org 22
0016 38C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0070 .dbfile D:\xb_work\标准速度测试仪\speed_mega8\init.C
0070 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0070 _uart0_rx_isr::
0070 .dbline -1
0070 .dbline 73
0070 ; }
0070 ;
0070 ; #pragma interrupt_handler uart0_rx_isr:12
0070 ; void uart0_rx_isr(void)
0070 ; {
0070 .dbline -2
0070 L6:
0070 .dbline 0 ; func end
0070 1895 reti
0072 .dbend
.area vector(rom, abs)
.org 26
001A 39C0 rjmp _uart0_tx_isr
.area text(rom, con, rel)
0072 .dbfile D:\xb_work\标准速度测试仪\speed_mega8\init.C
0072 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0072 _uart0_tx_isr::
0072 .dbline -1
0072 .dbline 79
0072 ; //uart has received a character in UDR
0072 ; }
0072 ;
0072 ; #pragma interrupt_handler uart0_tx_isr:14
0072 ; void uart0_tx_isr(void)
0072 ; {
0072 .dbline -2
0072 L7:
0072 .dbline 0 ; func end
0072 1895 reti
0074 .dbend
0074 .dbfunc e init_devices _init_devices fV
.even
0074 _init_devices::
0074 .dbline -1
0074 .dbline 85
0074 ; //character has been transmitted
0074 ; }
0074 ;
0074 ; //call this routine to initialize all peripherals
0074 ; void init_devices(void)
0074 ; {
0074 .dbline 87
0074 ; //stop errant interrupts until set up
0074 ; CLI(); //disable all interrupts
0074 F894 cli
0076 .dbline 88
0076 ; port_init();
0076 C4DF rcall _port_init
0078 .dbline 89
0078 ; watchdog_init();
0078 CBDF rcall _watchdog_init
007A .dbline 90
007A ; timer1_init();
007A CEDF rcall _timer1_init
007C .dbline 91
007C ; uart0_init();
007C EEDF rcall _uart0_init
007E .dbline 93
007E ;
007E ; MCUCR = 0x00;
007E 2224 clr R2
0080 25BE out 0x35,R2
0082 .dbline 94
0082 ; GICR = 0x00;
0082 2BBE out 0x3b,R2
0084 .dbline 95
0084 ; TIMSK = 0x04; //timer interrupt sources
0084 84E0 ldi R24,4
0086 89BF out 0x39,R24
0088 .dbline 96
0088 ; SEI(); //re-enable interrupts
0088 7894 sei
008A .dbline -2
008A L8:
008A .dbline 0 ; func end
008A 0895 ret
008C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -