⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.lis

📁 一个用mega8开发的速度发生器,速度比较准确,值得下载
💻 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 + -