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

📄 init.lis

📁 AVR16源代码 ICC编译器
💻 LIS
字号:
                        .module init.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\init.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 28
 0000           ; 
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include      "Uart.h"
 0000           ; #include      "init.h"
 0000           ; //============================================================
 0000           ; //计算和设置16的特率参数 覃道堂 2007-01-16
 0000           ; #define   BAUD                    9600
 0000           ; #define   CRYSTAL         4000000
 0000           ; #define   BAUD_SETTING        (unsigned char)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
 0000           ; #define   BAUD_H          (unsigned char)(BAUD_SETTING>>8)
 0000           ; #define   BAUD_L          (unsigned char)BAUD_SETTING
 0000           ; 
 0000           ; /**************************************
 0000           ; **芯片类型:ATmega16
 0000           ; **时钟频率:8M
 0000           ; **硬件接口说明:
 0000           ;       PD0:串口接收 主要用于232/485的接收
 0000           ;       PD1:串口发送 主要用于232/485的发送
 0000           ;       PD2:主要用于对超声波变送器的收到回波的检测(连到Pin5)
 0000           ;       PD3:主要用于对超声波的开始检测的触发(连到Pin3)
 0000           ;       PD4:主要用于485收发的使能
 0000           ;       PD5:用于超声波范围控制引脚1(置为内部上拉)
 0000           ;       PD6:用于超声波范围控制引脚2(置为内部上拉)
 0000           ; **************************************/
 0000           ; void port_init(void)    //ATMEGA16口的初始化
 0000           ; {
 0000                   .dbline 29
 0000           ;  PORTA = 0x20;
 0000 80E2              ldi R24,32
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 30
 0004           ;  DDRA  |= 0x20;
 0004 D59A              sbi 0x1a,5
 0006                   .dbline 31
 0006           ;  PORTB = 0x00;
 0006 2224              clr R2
 0008 28BA              out 0x18,R2
 000A                   .dbline 32
 000A           ;  DDRB  = 0x00;
 000A 27BA              out 0x17,R2
 000C                   .dbline 33
 000C           ;  PORTC = 0x00; 
 000C 25BA              out 0x15,R2
 000E                   .dbline 34
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 35
 0010           ;  PORTD = 0x80;
 0010 80E8              ldi R24,128
 0012 82BB              out 0x12,R24
 0014                   .dbline 36
 0014           ;  DDRD  = 0x80;//口初始化,初始化PD.3口为输出
 0014 81BB              out 0x11,R24
 0016                   .dbline -2
 0016                   .dbline 37
 0016           ; }
 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 49
 0018           ; //============================================================
 0018           ; //函  数:void Init_Com(void)
 0018           ; //功  能:初始化串口设置
 0018           ; //入口参数:无 
 0018           ; //返 回 值:无  
 0018           ; //设 计 者:覃道堂 
 0018           ; //创作时间:2007-01-16
 0018           ; //修改时间:
 0018           ; //修改目的:
 0018           ; //============================================================
 0018           ; void uart0_init(void)
 0018           ; {
 0018                   .dbline 50
 0018           ;  UCSRB = 0x00; //disable while setting baud rate
 0018 2224              clr R2
 001A 2AB8              out 0xa,R2
 001C                   .dbline 51
 001C           ;  UCSRA = 0x00;
 001C 2BB8              out 0xb,R2
 001E                   .dbline 52
 001E           ;  UCSRC = BIT(URSEL) | 0x06;
 001E 86E8              ldi R24,134
 0020 80BD              out 0x20,R24
 0022                   .dbline 53
 0022           ;  UBRRL =BAUD_L;//设置波特率为9600
 0022 89E1              ldi R24,25
 0024 89B9              out 0x9,R24
 0026                   .dbline 54
 0026           ;  UBRRH =BAUD_H;
 0026 20BC              out 0x20,R2
 0028                   .dbline 55
 0028           ;  UCSRB = 0x18;
 0028 88E1              ldi R24,24
 002A 8AB9              out 0xa,R24
 002C                   .dbline -2
 002C                   .dbline 56
 002C           ; }
 002C           L2:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbend
 002E                   .dbfunc e timer0_init _timer0_init fV
                        .even
 002E           _timer0_init::
 002E                   .dbline -1
 002E                   .dbline 71
 002E           ; /**************************************
 002E           ; **芯片类型:ATmega16
 002E           ; **时钟频率:8M
 002E           ; **硬件接口说明:无
 002E           ; **函数功能说明:对定时器0进行初始化,使定时器0的溢出频率为40HZ
 002E           ; **函数输入参数及说明:无
 002E           ; **函数返回值:无
 002E           ; **在本函数以外定义的变量:无
 002E           ; **调用的函数说明:无
 002E           ; **修改人:
 002E           ; **修改日期:
 002E           ; **修改说明:
 002E           ; **************************************/
 002E           ; void timer0_init(void)//定时器初始化
 002E           ; {
 002E                   .dbline 72
 002E           ;  TCCR0 = 0x00; //stop
 002E 2224              clr R2
 0030 23BE              out 0x33,R2
 0032                   .dbline 73
 0032           ;  TCNT0 = 0x3D; //set count
 0032 8DE3              ldi R24,61
 0034 82BF              out 0x32,R24
 0036                   .dbline 74
 0036           ;  OCR0  = 0xC3;  //set compare
 0036 83EC              ldi R24,195
 0038 8CBF              out 0x3c,R24
 003A                   .dbline -2
 003A                   .dbline 75
 003A           ; }
 003A           L3:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbend
 003C                   .dbfunc e timer1_init _timer1_init fV
                        .even
 003C           _timer1_init::
 003C                   .dbline -1
 003C                   .dbline 90
 003C           ; /**************************************
 003C           ; **芯片类型:ATmega16
 003C           ; **时钟频率:4M
 003C           ; **硬件接口说明:无
 003C           ; **函数功能说明:对定时器1进行初始化,计数初值为0
 003C           ; **函数输入参数及说明:无
 003C           ; **函数返回值:无
 003C           ; **在本函数以外定义的变量:无
 003C           ; **调用的函数说明:无
 003C           ; **修改人:
 003C           ; **修改日期:
 003C           ; **修改说明:
 003C           ; **************************************/
 003C           ; void timer1_init(void)
 003C           ; {
 003C                   .dbline 91
 003C           ;  TCCR1B = 0x00; //stop
 003C 2224              clr R2
 003E 2EBC              out 0x2e,R2
 0040                   .dbline 92
 0040           ;  TCNT1H = 0x00; //setup
 0040 2DBC              out 0x2d,R2
 0042                   .dbline 93
 0042           ;  TCNT1L = 0x00;
 0042 2CBC              out 0x2c,R2
 0044                   .dbline 94
 0044           ;  OCR1AH = 0xFF;
 0044 8FEF              ldi R24,255
 0046 8BBD              out 0x2b,R24
 0048                   .dbline 95
 0048           ;  OCR1AL = 0xFF;
 0048 8ABD              out 0x2a,R24
 004A                   .dbline 96
 004A           ;  OCR1BH = 0xFF;
 004A 89BD              out 0x29,R24
 004C                   .dbline 97
 004C           ;  OCR1BL = 0xFF;
 004C 88BD              out 0x28,R24
 004E                   .dbline 98
 004E           ;  TCCR1A = 0x00;
 004E 2FBC              out 0x2f,R2
 0050                   .dbline -2
 0050                   .dbline 99
 0050           ; }
 0050           L4:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbend
 0052                   .dbfunc e ext_init _ext_init fV
                        .even
 0052           _ext_init::
 0052                   .dbline -1
 0052                   .dbline 115
 0052           ; /**************************************
 0052           ; **芯片类型:ATmega16
 0052           ; **时钟频率:8M
 0052           ; **硬件接口说明:无
 0052           ; **函数功能说明:对外部中断0进行初始化,设置为下降沿触发
 0052           ; **函数输入参数及说明:无
 0052           ; **函数返回值:无
 0052           ; **在本函数以外定义的变量:无
 0052           ; **调用的函数说明:无
 0052           ; **修改人:
 0052           ; **修改日期:
 0052           ; **修改说明:
 0052           ; **************************************/
 0052           ; 
 0052           ; void ext_init(void)
 0052           ; {
 0052                   .dbline 116
 0052           ; MCUCR=0x02;
 0052 82E0              ldi R24,2
 0054 85BF              out 0x35,R24
 0056                   .dbline 117
 0056           ; GICR=0x40;   //设置外中断0为下降沿触发
 0056 80E4              ldi R24,64
 0058 8BBF              out 0x3b,R24
 005A                   .dbline -2
 005A                   .dbline 118
 005A           ; }
 005A           L5:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbend
 005C                   .dbfunc e init_devices _init_devices fV
                        .even
 005C           _init_devices::
 005C                   .dbline -1
 005C                   .dbline 134
 005C           ; 
 005C           ; /**************************************
 005C           ; **芯片类型:ATmega16
 005C           ; **时钟频率:8M
 005C           ; **硬件接口说明:无
 005C           ; **函数功能说明:对端口、串口、定时器0、1进行初始化
 005C           ; **函数输入参数及说明:无
 005C           ; **函数返回值:无
 005C           ; **在本函数以外定义的变量:无
 005C           ; **调用的函数说明:port_init()、uart0_init()、timer0_init()、timer1_init()
 005C           ; **修改人:
 005C           ; **修改日期:
 005C           ; **修改说明:
 005C           ; **************************************/
 005C           ; void init_devices(void)
 005C           ; {
 005C                   .dbline 135
 005C           ;  CLI(); //关中断
 005C F894              cli
 005E                   .dbline 136
 005E           ;  port_init();
 005E D0DF              xcall _port_init
 0060                   .dbline 137
 0060           ;  uart0_init(); 
 0060 DBDF              xcall _uart0_init
 0062                   .dbline 138
 0062           ;  timer0_init();
 0062 E5DF              xcall _timer0_init
 0064                   .dbline 139
 0064           ;  timer1_init();
 0064 EBDF              xcall _timer1_init
 0066                   .dbline 140
 0066           ;  MCUCR = 0x00;
 0066 2224              clr R2
 0068 25BE              out 0x35,R2
 006A                   .dbline 141
 006A           ;  GICR  = 0x00;
 006A 2BBE              out 0x3b,R2
 006C                   .dbline 142
 006C           ;  TIMSK = 0x05; //T/C0、1中断中断使能
 006C 85E0              ldi R24,5
 006E 89BF              out 0x39,R24
 0070                   .dbline 144
 0070           ;  
 0070           ; SEI(); //开中断 
 0070 7894              sei
 0072                   .dbline -2
 0072                   .dbline 145
 0072           ; }
 0072           L6:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbend
 0074                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 0074           _watchdog_init::
 0074                   .dbline -1
 0074                   .dbline 154
 0074           ; //============================================================
 0074           ; //看门狗初始化函数
 0074           ; //
 0074           ; //
 0074           ; //
 0074           ; //
 0074           ; //============================================================
 0074           ; void watchdog_init(void)
 0074           ; {
 0074                   .dbline 155
 0074           ;  WDR(); //this prevents a timout on enabling
 0074 A895              wdr
 0076                   .dbline 156
 0076           ;  WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
 0076 88E0              ldi R24,8
 0078 81BD              out 0x21,R24
 007A                   .dbline -2
 007A                   .dbline 157
 007A           ; }
 007A           L7:
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -