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

📄 init.s

📁 AVR16源代码 ICC编译器
💻 S
字号:
	.module init.c
	.area text(rom, con, rel)
	.dbfile D:\MY_COMPUTER\d\avr16\atmegal16\init.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 28
; 
; 
; #include <iom16v.h>
; #include <macros.h>
; #include	"Uart.h"
; #include	"init.h"
; //============================================================
; //计算和设置16的特率参数 覃道堂 2007-01-16
; #define   BAUD 		    9600
; #define   CRYSTAL 	    4000000
; #define   BAUD_SETTING 	(unsigned char)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
; #define   BAUD_H 	    (unsigned char)(BAUD_SETTING>>8)
; #define   BAUD_L 	    (unsigned char)BAUD_SETTING
; 
; /**************************************
; **芯片类型:ATmega16
; **时钟频率:8M
; **硬件接口说明:
; 	PD0:串口接收 主要用于232/485的接收
; 	PD1:串口发送 主要用于232/485的发送
; 	PD2:主要用于对超声波变送器的收到回波的检测(连到Pin5)
; 	PD3:主要用于对超声波的开始检测的触发(连到Pin3)
; 	PD4:主要用于485收发的使能
; 	PD5:用于超声波范围控制引脚1(置为内部上拉)
; 	PD6:用于超声波范围控制引脚2(置为内部上拉)
; **************************************/
; void port_init(void)    //ATMEGA16口的初始化
; {
	.dbline 29
;  PORTA = 0x20;
	ldi R24,32
	out 0x1b,R24
	.dbline 30
;  DDRA  |= 0x20;
	sbi 0x1a,5
	.dbline 31
;  PORTB = 0x00;
	clr R2
	out 0x18,R2
	.dbline 32
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 33
;  PORTC = 0x00; 
	out 0x15,R2
	.dbline 34
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 35
;  PORTD = 0x80;
	ldi R24,128
	out 0x12,R24
	.dbline 36
;  DDRD  = 0x80;//口初始化,初始化PD.3口为输出
	out 0x11,R24
	.dbline -2
	.dbline 37
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 49
; //============================================================
; //函	数:void Init_Com(void)
; //功	能:初始化串口设置
; //入口参数:无 
; //返 回 值:无  
; //设 计 者:覃道堂 
; //创作时间:2007-01-16
; //修改时间:
; //修改目的:
; //============================================================
; void uart0_init(void)
; {
	.dbline 50
;  UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 51
;  UCSRA = 0x00;
	out 0xb,R2
	.dbline 52
;  UCSRC = BIT(URSEL) | 0x06;
	ldi R24,134
	out 0x20,R24
	.dbline 53
;  UBRRL =BAUD_L;//设置波特率为9600
	ldi R24,25
	out 0x9,R24
	.dbline 54
;  UBRRH =BAUD_H;
	out 0x20,R2
	.dbline 55
;  UCSRB = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline -2
	.dbline 56
; }
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 71
; /**************************************
; **芯片类型:ATmega16
; **时钟频率:8M
; **硬件接口说明:无
; **函数功能说明:对定时器0进行初始化,使定时器0的溢出频率为40HZ
; **函数输入参数及说明:无
; **函数返回值:无
; **在本函数以外定义的变量:无
; **调用的函数说明:无
; **修改人:
; **修改日期:
; **修改说明:
; **************************************/
; void timer0_init(void)//定时器初始化
; {
	.dbline 72
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 73
;  TCNT0 = 0x3D; //set count
	ldi R24,61
	out 0x32,R24
	.dbline 74
;  OCR0  = 0xC3;  //set compare
	ldi R24,195
	out 0x3c,R24
	.dbline -2
	.dbline 75
; }
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer1_init _timer1_init fV
	.even
_timer1_init::
	.dbline -1
	.dbline 90
; /**************************************
; **芯片类型:ATmega16
; **时钟频率:4M
; **硬件接口说明:无
; **函数功能说明:对定时器1进行初始化,计数初值为0
; **函数输入参数及说明:无
; **函数返回值:无
; **在本函数以外定义的变量:无
; **调用的函数说明:无
; **修改人:
; **修改日期:
; **修改说明:
; **************************************/
; void timer1_init(void)
; {
	.dbline 91
;  TCCR1B = 0x00; //stop
	clr R2
	out 0x2e,R2
	.dbline 92
;  TCNT1H = 0x00; //setup
	out 0x2d,R2
	.dbline 93
;  TCNT1L = 0x00;
	out 0x2c,R2
	.dbline 94
;  OCR1AH = 0xFF;
	ldi R24,255
	out 0x2b,R24
	.dbline 95
;  OCR1AL = 0xFF;
	out 0x2a,R24
	.dbline 96
;  OCR1BH = 0xFF;
	out 0x29,R24
	.dbline 97
;  OCR1BL = 0xFF;
	out 0x28,R24
	.dbline 98
;  TCCR1A = 0x00;
	out 0x2f,R2
	.dbline -2
	.dbline 99
; }
L4:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ext_init _ext_init fV
	.even
_ext_init::
	.dbline -1
	.dbline 115
; /**************************************
; **芯片类型:ATmega16
; **时钟频率:8M
; **硬件接口说明:无
; **函数功能说明:对外部中断0进行初始化,设置为下降沿触发
; **函数输入参数及说明:无
; **函数返回值:无
; **在本函数以外定义的变量:无
; **调用的函数说明:无
; **修改人:
; **修改日期:
; **修改说明:
; **************************************/
; 
; void ext_init(void)
; {
	.dbline 116
; MCUCR=0x02;
	ldi R24,2
	out 0x35,R24
	.dbline 117
; GICR=0x40;   //设置外中断0为下降沿触发
	ldi R24,64
	out 0x3b,R24
	.dbline -2
	.dbline 118
; }
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 134
; 
; /**************************************
; **芯片类型:ATmega16
; **时钟频率:8M
; **硬件接口说明:无
; **函数功能说明:对端口、串口、定时器0、1进行初始化
; **函数输入参数及说明:无
; **函数返回值:无
; **在本函数以外定义的变量:无
; **调用的函数说明:port_init()、uart0_init()、timer0_init()、timer1_init()
; **修改人:
; **修改日期:
; **修改说明:
; **************************************/
; void init_devices(void)
; {
	.dbline 135
;  CLI(); //关中断
	cli
	.dbline 136
;  port_init();
	xcall _port_init
	.dbline 137
;  uart0_init(); 
	xcall _uart0_init
	.dbline 138
;  timer0_init();
	xcall _timer0_init
	.dbline 139
;  timer1_init();
	xcall _timer1_init
	.dbline 140
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 141
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 142
;  TIMSK = 0x05; //T/C0、1中断中断使能
	ldi R24,5
	out 0x39,R24
	.dbline 144
;  
; SEI(); //开中断 
	sei
	.dbline -2
	.dbline 145
; }
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e watchdog_init _watchdog_init fV
	.even
_watchdog_init::
	.dbline -1
	.dbline 154
; //============================================================
; //看门狗初始化函数
; //
; //
; //
; //
; //============================================================
; void watchdog_init(void)
; {
	.dbline 155
;  WDR(); //this prevents a timout on enabling
	wdr
	.dbline 156
;  WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
	ldi R24,8
	out 0x21,R24
	.dbline -2
	.dbline 157
; }
L7:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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