📄 atmega16.h
字号:
/*
****************************************************************************************
头部文件名: ATmega16.H
头部文件名称: ATmega16 单片机内部寄存器名和位名定义的头部文件
适用器件芯片类型: ATmega16(ATMEL公司生产的单片机)
文件版本: 1.0
文件功能:
本文件是 ATmega16 单片机内部寄存器名和位名定义、编译器数据类型定义的
的头部文件。
文件说明:
编译工具软件: CodeVision AVR C 版本:1.24.6 以上
链接文件:
编作者: 磊元
编作者 E-Mail: PTZSW@163.COM
编制日期: 2005年5月18日
------------------------------------------------------------------------------
头部文件版本历史:
2005年5月18日 -------- 版本 1.0 :发行版本
****************************************************************************************
*/
/*======================================================================================
下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
======================================================================================*/
#ifndef _MEGA16_INCLUDED_ /* "_MEGA16_INCLUDED_" 条件编译开始 */
#define _MEGA16_INCLUDED_
/*======================================================================================
下面这三条指令是用于区分编译系统为 C++ 或 C 的预处理指令。
"__cplusplus" 为 C++ 预处理器名字,这三条指令表明接在其下面的那些指令为 C 程序特征。
======================================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/*======================================================================================
I/O 寄存器定义
======================================================================================*/
#pragma used+
sfrb SREG = 0x3f; /* 状态寄存器 */
sfrb SPH = 0x3e; /* 堆栈指针高字节 */
sfrb SPL = 0x3d; /* 堆栈指针低字节 */
sfrb OCR0 = 0x3c; /* 输出比较寄存器 */
sfrb GICR = 0x3b; /* 通用中断屏蔽寄存器 */
sfrb GIFR = 0x3a; /* 通用中断标志寄存器 */
sfrb TIMSK = 0x39; /* 定时器中断屏蔽寄存器 */
sfrb TIFR = 0x38; /* 定时器中断标志寄存器 */
sfrb SPMCSR = 0x37; /* 保存程序存储器控制寄存器 */
sfrb TWCR = 0x36; /* TWI控制寄存器 */
sfrb MCUCR = 0x35; /* MCU控制寄存器 */
sfrb MCUCSR = 0x34; /* MCU控制与状态寄存器 */
sfrb TCCR0 = 0x33; /* 定时器/计数器0控制寄存器 */
sfrb TCNT0 = 0x32; /* 定时器/计数器0(8位) */
sfrb OSCCAL = 0x31; /* 振荡器标定寄存器 */
sfrb OCDR = 0x31; /* 片上调试系统(OCD)寄存器 */
sfrb SFIOR = 0x30; /* 特殊功能IO寄存器 */
sfrb TCCR1A = 0x2f; /* 定时器/计数器1控制寄存器A */
sfrb TCCR1B = 0x2e; /* 定时器/计数器1控制寄存器B */
sfrb TCNT1H = 0x2d; /* 定时器/计数器1高字节 */
sfrb TCNT1L = 0x2c; /* 定时器/计数器1低字节 */
sfrw TCNT1 = 0x2c; /* 定时器/计数器1 */
/* (16 位存取模式) */
sfrb OCR1AH = 0x2b; /* 定时器/计数器1输出比较寄存器A高字节 */
sfrb OCR1AL = 0x2a; /* 定时器/计数器1输出比较寄存器A低字节 */
sfrw OCR1A = 0x2a; /* 定时器/计数器1输出比较寄存器A */
/* (16 位存取模式) */
sfrb OCR1BH = 0x29; /* 定时器/计数器1输出比较寄存器B高字节 */
sfrb OCR1BL = 0x28; /* 定时器/计数器1输出比较寄存器B低字节 */
sfrw OCR1B = 0x28; /* 定时器/计数器1输出比较寄存器B */
/* (16 位存取模式) */
sfrb ICR1H = 0x27; /* 定时器/计数器1输入捕获寄存器高字节 */
sfrb ICR1L = 0x26; /* 定时器/计数器1输入捕获寄存器低字节 */
sfrb TCCR2 = 0x25; /* 定时器/计数器2控制寄存器 */
sfrb TCNT2 = 0x24; /* 定时器/计数器2(8位) */
sfrb OCR2 = 0x23; /* 定时器/计数器2输出比较寄存器 */
sfrb ASSR = 0x22; /* 异步方式状态寄存器 */
sfrb WDTCR = 0x21; /* 看门狗定时器控制寄存器 */
sfrb UBRRH = 0x20; /* USART波特率寄存器(注意:UCSRC 等于 UBRRH) */
sfrb UCSRC = 0x20; /* USART控制和状态寄存器C(注意:UCSRC 等于 UBRRH) */
sfrb EEARH = 0x1f; /* EEPROM地址寄存器高字节 */
sfrb EEARL = 0x1e; /* EEPROM地址寄存器低字节 */
sfrw EEAR = 0x1e; /* EEPROM地址寄存器 */
/* (16 位存取模式) */
sfrb EEDR = 0x1d; /* EEPROM数据寄存器 */
sfrb EECR = 0x1c; /* EEPROM控制寄存器 */
sfrb PORTA = 0x1b; /* 端口A数据寄存器 */
sfrb DDRA = 0x1a; /* 端口A数据方向寄存器 */
sfrb PINA = 0x19; /* 端口A输入引脚地址 */
sfrb PORTB = 0x18; /* 端口B数据寄存器 */
sfrb DDRB = 0x17; /* 端口B数据方向寄存器 */
sfrb PINB = 0x16; /* 端口B输入引脚地址 */
sfrb PORTC = 0x15; /* 端口C数据寄存器 */
sfrb DDRC = 0x14; /* 端口C数据方向寄存器 */
sfrb PINC = 0x13; /* 端口C输入引脚地址 */
sfrb PORTD = 0x12; /* 端口D数据寄存器 */
sfrb DDRD = 0x11; /* 端口D数据方向寄存器 */
sfrb PIND = 0x10; /* 端口D输入引脚地址 */
sfrb SPDR = 0x0f; /* SPI数据寄存器 */
sfrb SPSR = 0x0e; /* SPI状态寄存器 */
sfrb SPCR = 0x0d; /* SPI控制寄存器 */
sfrb UDR = 0x0c; /* USART I/O 数据寄存器 */
sfrb UCSRA = 0x0b; /* USART控制和状态寄存器A */
sfrb UCSRB = 0x0a; /* USART控制和状态寄存器B */
sfrb UBRRL = 0x09; /* USART波特率寄存器 */
sfrb ACSR = 0x08; /* 模拟比较器控制和状态寄存器 */
sfrb ADMUX = 0x07; /* ADC多路选择寄存器 */
sfrb ADCSRA = 0x06; /* ADC控制和状态寄存器 */
sfrb ADCH = 0x05; /* ADC数据寄存器高字节 */
sfrb ADCL = 0x04; /* ADC数据寄存器低字节 */
sfrw ADCW = 0x04; /* ADC数据寄存器 */
/* (16 位存取模式) */
sfrb TWDR = 0x03; /* TWI数据寄存器 */
sfrb TWAR = 0x02; /* TWI(从机)地址寄存器 */
sfrb TWSR = 0x01; /* TWI状态寄存器 */
sfrb TWBR = 0x00; /* TWI比特率寄存器 */
#pragma used-
/*======================================================================================
中断向量定义
======================================================================================*/
#define EXT_INT0 2 /* 外部中断请求0中断向量 */
#define EXT_INT1 3 /* 外部中断请求1中断向量 */
#define TIM2_COMP 4 /* 定时器/计数器2比较匹配中断向量 */
#define TIM2_OVF 5 /* 定时器/计数器2溢出中断向量 */
#define TIM1_CAPT 6 /* 定时器/计数器1输入捕获中断向量 */
#define TIM1_COMPA 7 /* 定时器/计数器1A比较匹配中断向量 */
#define TIM1_COMPB 8 /* 定时器/计数器1B比较匹配中断向量 */
#define TIM1_OVF 9 /* 定时器/计数器1溢出中断向量 */
#define TIM0_OVF 10 /* 定时器/计数器0溢出中断向量 */
#define SPI_STC 11 /* SPI串行传输结束中断向量 */
#define USART_RXC 12 /* USART接收结束中断向量 */
#define USART_DRE 13 /* USART数据寄存器空中断向量 */
#define USART_TXC 14 /* USART传送结束中断向量 */
#define ADC_INT 15 /* ADC转换结束中断向量 */
#define EE_RDY 16 /* EEPROM就绪中断向量 */
#define ANA_COMP 17 /* 模拟比较器中断向量 */
#define TWI 18 /* 两线串行接口中断向量 */
#define EXT_INT2 19 /* 外部中断请求2中断向量 */
#define TIM0_COMP 20 /* 定时器/计数器0比较匹配中断向量 */
#define SPM_READY 21 /* 保存程序存储器内容就绪中断向量 */
/*======================================================================================
片内程序和数据存储器地址空间定义
======================================================================================*/
#define FLASHEND 0x1fff /* 程序存储器最大地址数(Flash Memory) */
/* (此地址为 16 位字的地址数) */
/* 【8K×16位字长】 */
#define IOEND 0x003f /* I/O存储器最大地址数 */
#define SRAM_START 0x0060 /* 静态随机存储器起始地址 */
#define SRAM_SIZE 1024 /* 静态随机存储器容量大小 */
#define RAMEND 0x045f /* 数据存储器最大地址数(SRAM)【8位字长】 */
/* (1KB随机存储器+I/O寄存器+通用寄存器) */
#define XRAMEND 0x0000 /* 外部扩展存储器最大地址数 */
#define EEPROMEND 0x01ff /* 电可擦除只读存储器最大地址数(EEPROM) */
/* 【512B×8位字长】 */
#define EEADRBITS 9 /* 电可擦除只读存储器寻址位数 */
/*======================================================================================
本单片机无扩展并行总线结构声明。
======================================================================================*/
#define MCU_No_ExtendedParallelBus /* 本单片机无扩展并行总线结构声明 */
/*======================================================================================
下面这三条指令是用于与上面三条区分编译系统为 C++ 或 C 的预处理指令相对应。用于指定
extern "C" 链接指示符作用域,此处的"}"与上面的"{"相对应,为链接指示符作用结束符。
======================================================================================*/
#ifdef __cplusplus
}
#endif
#endif /* "_MEGA16_INCLUDED_" 条件编译结束 */
/*
****************************************************************************************
本头部文件到此结束
****************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -