?? atmega16.h
字號(hào):
/*
****************************************************************************************
頭部文件名: ATmega16.H
頭部文件名稱: ATmega16 單片機(jī)內(nèi)部寄存器名和位名定義的頭部文件
適用器件芯片類型: ATmega16(ATMEL公司生產(chǎn)的單片機(jī))
文件版本: 1.0
文件功能:
本文件是 ATmega16 單片機(jī)內(nèi)部寄存器名和位名定義、編譯器數(shù)據(jù)類型定義的
的頭部文件。
文件說(shuō)明:
編譯工具軟件: CodeVision AVR C 版本:1.24.6 以上
鏈接文件:
編作者: 磊元
編作者 E-Mail: PTZSW@163.COM
編制日期: 2005年5月18日
------------------------------------------------------------------------------
頭部文件版本歷史:
2005年5月18日 -------- 版本 1.0 :發(fā)行版本
****************************************************************************************
*/
/*======================================================================================
下面兩條指令是本頭部文件條件編譯的預(yù)處理指令,用于防止本頭部文件被其他文件重復(fù)引用。
======================================================================================*/
#ifndef _MEGA16_INCLUDED_ /* "_MEGA16_INCLUDED_" 條件編譯開(kāi)始 */
#define _MEGA16_INCLUDED_
/*======================================================================================
下面這三條指令是用于區(qū)分編譯系統(tǒng)為 C++ 或 C 的預(yù)處理指令。
"__cplusplus" 為 C++ 預(yù)處理器名字,這三條指令表明接在其下面的那些指令為 C 程序特征。
======================================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/*======================================================================================
I/O 寄存器定義
======================================================================================*/
#pragma used+
sfrb SREG = 0x3f; /* 狀態(tài)寄存器 */
sfrb SPH = 0x3e; /* 堆棧指針高字節(jié) */
sfrb SPL = 0x3d; /* 堆棧指針低字節(jié) */
sfrb OCR0 = 0x3c; /* 輸出比較寄存器 */
sfrb GICR = 0x3b; /* 通用中斷屏蔽寄存器 */
sfrb GIFR = 0x3a; /* 通用中斷標(biāo)志寄存器 */
sfrb TIMSK = 0x39; /* 定時(shí)器中斷屏蔽寄存器 */
sfrb TIFR = 0x38; /* 定時(shí)器中斷標(biāo)志寄存器 */
sfrb SPMCSR = 0x37; /* 保存程序存儲(chǔ)器控制寄存器 */
sfrb TWCR = 0x36; /* TWI控制寄存器 */
sfrb MCUCR = 0x35; /* MCU控制寄存器 */
sfrb MCUCSR = 0x34; /* MCU控制與狀態(tài)寄存器 */
sfrb TCCR0 = 0x33; /* 定時(shí)器/計(jì)數(shù)器0控制寄存器 */
sfrb TCNT0 = 0x32; /* 定時(shí)器/計(jì)數(shù)器0(8位) */
sfrb OSCCAL = 0x31; /* 振蕩器標(biāo)定寄存器 */
sfrb OCDR = 0x31; /* 片上調(diào)試系統(tǒng)(OCD)寄存器 */
sfrb SFIOR = 0x30; /* 特殊功能IO寄存器 */
sfrb TCCR1A = 0x2f; /* 定時(shí)器/計(jì)數(shù)器1控制寄存器A */
sfrb TCCR1B = 0x2e; /* 定時(shí)器/計(jì)數(shù)器1控制寄存器B */
sfrb TCNT1H = 0x2d; /* 定時(shí)器/計(jì)數(shù)器1高字節(jié) */
sfrb TCNT1L = 0x2c; /* 定時(shí)器/計(jì)數(shù)器1低字節(jié) */
sfrw TCNT1 = 0x2c; /* 定時(shí)器/計(jì)數(shù)器1 */
/* (16 位存取模式) */
sfrb OCR1AH = 0x2b; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器A高字節(jié) */
sfrb OCR1AL = 0x2a; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器A低字節(jié) */
sfrw OCR1A = 0x2a; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器A */
/* (16 位存取模式) */
sfrb OCR1BH = 0x29; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器B高字節(jié) */
sfrb OCR1BL = 0x28; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器B低字節(jié) */
sfrw OCR1B = 0x28; /* 定時(shí)器/計(jì)數(shù)器1輸出比較寄存器B */
/* (16 位存取模式) */
sfrb ICR1H = 0x27; /* 定時(shí)器/計(jì)數(shù)器1輸入捕獲寄存器高字節(jié) */
sfrb ICR1L = 0x26; /* 定時(shí)器/計(jì)數(shù)器1輸入捕獲寄存器低字節(jié) */
sfrb TCCR2 = 0x25; /* 定時(shí)器/計(jì)數(shù)器2控制寄存器 */
sfrb TCNT2 = 0x24; /* 定時(shí)器/計(jì)數(shù)器2(8位) */
sfrb OCR2 = 0x23; /* 定時(shí)器/計(jì)數(shù)器2輸出比較寄存器 */
sfrb ASSR = 0x22; /* 異步方式狀態(tài)寄存器 */
sfrb WDTCR = 0x21; /* 看門狗定時(shí)器控制寄存器 */
sfrb UBRRH = 0x20; /* USART波特率寄存器(注意:UCSRC 等于 UBRRH) */
sfrb UCSRC = 0x20; /* USART控制和狀態(tài)寄存器C(注意:UCSRC 等于 UBRRH) */
sfrb EEARH = 0x1f; /* EEPROM地址寄存器高字節(jié) */
sfrb EEARL = 0x1e; /* EEPROM地址寄存器低字節(jié) */
sfrw EEAR = 0x1e; /* EEPROM地址寄存器 */
/* (16 位存取模式) */
sfrb EEDR = 0x1d; /* EEPROM數(shù)據(jù)寄存器 */
sfrb EECR = 0x1c; /* EEPROM控制寄存器 */
sfrb PORTA = 0x1b; /* 端口A數(shù)據(jù)寄存器 */
sfrb DDRA = 0x1a; /* 端口A數(shù)據(jù)方向寄存器 */
sfrb PINA = 0x19; /* 端口A輸入引腳地址 */
sfrb PORTB = 0x18; /* 端口B數(shù)據(jù)寄存器 */
sfrb DDRB = 0x17; /* 端口B數(shù)據(jù)方向寄存器 */
sfrb PINB = 0x16; /* 端口B輸入引腳地址 */
sfrb PORTC = 0x15; /* 端口C數(shù)據(jù)寄存器 */
sfrb DDRC = 0x14; /* 端口C數(shù)據(jù)方向寄存器 */
sfrb PINC = 0x13; /* 端口C輸入引腳地址 */
sfrb PORTD = 0x12; /* 端口D數(shù)據(jù)寄存器 */
sfrb DDRD = 0x11; /* 端口D數(shù)據(jù)方向寄存器 */
sfrb PIND = 0x10; /* 端口D輸入引腳地址 */
sfrb SPDR = 0x0f; /* SPI數(shù)據(jù)寄存器 */
sfrb SPSR = 0x0e; /* SPI狀態(tài)寄存器 */
sfrb SPCR = 0x0d; /* SPI控制寄存器 */
sfrb UDR = 0x0c; /* USART I/O 數(shù)據(jù)寄存器 */
sfrb UCSRA = 0x0b; /* USART控制和狀態(tài)寄存器A */
sfrb UCSRB = 0x0a; /* USART控制和狀態(tài)寄存器B */
sfrb UBRRL = 0x09; /* USART波特率寄存器 */
sfrb ACSR = 0x08; /* 模擬比較器控制和狀態(tài)寄存器 */
sfrb ADMUX = 0x07; /* ADC多路選擇寄存器 */
sfrb ADCSRA = 0x06; /* ADC控制和狀態(tài)寄存器 */
sfrb ADCH = 0x05; /* ADC數(shù)據(jù)寄存器高字節(jié) */
sfrb ADCL = 0x04; /* ADC數(shù)據(jù)寄存器低字節(jié) */
sfrw ADCW = 0x04; /* ADC數(shù)據(jù)寄存器 */
/* (16 位存取模式) */
sfrb TWDR = 0x03; /* TWI數(shù)據(jù)寄存器 */
sfrb TWAR = 0x02; /* TWI(從機(jī))地址寄存器 */
sfrb TWSR = 0x01; /* TWI狀態(tài)寄存器 */
sfrb TWBR = 0x00; /* TWI比特率寄存器 */
#pragma used-
/*======================================================================================
中斷向量定義
======================================================================================*/
#define EXT_INT0 2 /* 外部中斷請(qǐng)求0中斷向量 */
#define EXT_INT1 3 /* 外部中斷請(qǐng)求1中斷向量 */
#define TIM2_COMP 4 /* 定時(shí)器/計(jì)數(shù)器2比較匹配中斷向量 */
#define TIM2_OVF 5 /* 定時(shí)器/計(jì)數(shù)器2溢出中斷向量 */
#define TIM1_CAPT 6 /* 定時(shí)器/計(jì)數(shù)器1輸入捕獲中斷向量 */
#define TIM1_COMPA 7 /* 定時(shí)器/計(jì)數(shù)器1A比較匹配中斷向量 */
#define TIM1_COMPB 8 /* 定時(shí)器/計(jì)數(shù)器1B比較匹配中斷向量 */
#define TIM1_OVF 9 /* 定時(shí)器/計(jì)數(shù)器1溢出中斷向量 */
#define TIM0_OVF 10 /* 定時(shí)器/計(jì)數(shù)器0溢出中斷向量 */
#define SPI_STC 11 /* SPI串行傳輸結(jié)束中斷向量 */
#define USART_RXC 12 /* USART接收結(jié)束中斷向量 */
#define USART_DRE 13 /* USART數(shù)據(jù)寄存器空中斷向量 */
#define USART_TXC 14 /* USART傳送結(jié)束中斷向量 */
#define ADC_INT 15 /* ADC轉(zhuǎn)換結(jié)束中斷向量 */
#define EE_RDY 16 /* EEPROM就緒中斷向量 */
#define ANA_COMP 17 /* 模擬比較器中斷向量 */
#define TWI 18 /* 兩線串行接口中斷向量 */
#define EXT_INT2 19 /* 外部中斷請(qǐng)求2中斷向量 */
#define TIM0_COMP 20 /* 定時(shí)器/計(jì)數(shù)器0比較匹配中斷向量 */
#define SPM_READY 21 /* 保存程序存儲(chǔ)器內(nèi)容就緒中斷向量 */
/*======================================================================================
片內(nèi)程序和數(shù)據(jù)存儲(chǔ)器地址空間定義
======================================================================================*/
#define FLASHEND 0x1fff /* 程序存儲(chǔ)器最大地址數(shù)(Flash Memory) */
/* (此地址為 16 位字的地址數(shù)) */
/* 【8K×16位字長(zhǎng)】 */
#define IOEND 0x003f /* I/O存儲(chǔ)器最大地址數(shù) */
#define SRAM_START 0x0060 /* 靜態(tài)隨機(jī)存儲(chǔ)器起始地址 */
#define SRAM_SIZE 1024 /* 靜態(tài)隨機(jī)存儲(chǔ)器容量大小 */
#define RAMEND 0x045f /* 數(shù)據(jù)存儲(chǔ)器最大地址數(shù)(SRAM)【8位字長(zhǎng)】 */
/* (1KB隨機(jī)存儲(chǔ)器+I/O寄存器+通用寄存器) */
#define XRAMEND 0x0000 /* 外部擴(kuò)展存儲(chǔ)器最大地址數(shù) */
#define EEPROMEND 0x01ff /* 電可擦除只讀存儲(chǔ)器最大地址數(shù)(EEPROM) */
/* 【512B×8位字長(zhǎng)】 */
#define EEADRBITS 9 /* 電可擦除只讀存儲(chǔ)器尋址位數(shù) */
/*======================================================================================
本單片機(jī)無(wú)擴(kuò)展并行總線結(jié)構(gòu)聲明。
======================================================================================*/
#define MCU_No_ExtendedParallelBus /* 本單片機(jī)無(wú)擴(kuò)展并行總線結(jié)構(gòu)聲明 */
/*======================================================================================
下面這三條指令是用于與上面三條區(qū)分編譯系統(tǒng)為 C++ 或 C 的預(yù)處理指令相對(duì)應(yīng)。用于指定
extern "C" 鏈接指示符作用域,此處的"}"與上面的"{"相對(duì)應(yīng),為鏈接指示符作用結(jié)束符。
======================================================================================*/
#ifdef __cplusplus
}
#endif
#endif /* "_MEGA16_INCLUDED_" 條件編譯結(jié)束 */
/*
****************************************************************************************
本頭部文件到此結(jié)束
****************************************************************************************
*/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -