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

📄 atmega128.h

📁 本程序是用 ATmega16 控制实时时钟芯片 DS12887 接口驱动的源程序文件。
💻 H
📖 第 1 页 / 共 5 页
字号:
#define TIMER3_CAPT_vect   (0x64)             // 定时器/计数器3输入捕获中断向量
#define TIMER3_COMPA_vect  (0x68)             // 定时器/计数器3A比较匹配中断向量
#define TIMER3_COMPB_vect  (0x6C)             // 定时器/计数器3B比较匹配中断向量
#define TIMER3_COMPC_vect  (0x70)             // 定时器/计数器3C比较匹配中断向量
#define TIMER3_OVF_vect    (0x74)             // 定时器/计数器3溢出中断向量
#define USART1_RXC_vect    (0x78)             // USART1接收结束中断向量
#define USART1_UDRE_vect   (0x7C)             // USART1数据寄存器空中断向量
#define USART1_TXC_vect    (0x80)             // USART1发送结束中断向量
#define TWI_vect           (0x84)             // 两线串行总线接口中断向量
#define SPM_RDY_vect       (0x88)             // 保存程序存储器内容就绪中断向量


#endif                                        // "__IOM128_H(定义部分)" 条件编译结束
#endif                                        // "__IOM128_H(特殊功能寄存器部分)" 编译结束


#endif                                        // "defined(_IAR_EW_AVR_)" 条件编译结束



/*
********************************************************************************************
                     适合的编译系统:CodeVision AVR C 版本:1.24.6 以上
********************************************************************************************
*/
#if defined(_CodeVision_AVR_)                 // "CodeVision AVR C 编译器"条件编译开始
/*==========================================================================================
下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
==========================================================================================*/
#ifndef _MEGA128_INCLUDED_                    // "_MEGA128_INCLUDED_" 条件编译开始
#define _MEGA128_INCLUDED_


/*==========================================================================================
                                     I/O 寄存器定义
==========================================================================================*/
#pragma used+
/*--------------------------------------------------------------------------------------
I/O 寄存器定义($3F-$00)
--------------------------------------------------------------------------------------*/
sfrb    SREG             = 0x3F;              // 状态寄存器
sfrb    SPH              = 0x3E;              // 堆栈指针高字节
sfrb    SPL              = 0x3D;              // 堆栈指针低字节
sfrb    XDIV             = 0x3C;              // XTAL分频控制寄存器
sfrb    RAMPZ            = 0x3B;              // 程序存储器页面的Z指针选择寄存器
sfrb    EICRB            = 0x3A;              // 外部中断控制寄存器B
sfrb    EIMSK            = 0x39;              // 外部中断屏蔽寄存器
sfrb    EIFR             = 0x38;              // 外部中断标志寄存器
sfrb    TIMSK            = 0x37;              // 定时器/计数器中断屏蔽寄存器
sfrb    TIFR             = 0x36;              // 定时器/计数器中断标志寄存器
sfrb    MCUCR            = 0x35;              // MCU控制寄存器
sfrb    MCUCSR           = 0x34;              // MCU控制与状态寄存器
sfrb    TCCR0            = 0x33;              // 定时器/计数器0控制寄存器
sfrb    TCNT0            = 0x32;              // 定时器/计数器0(8位)
sfrb    OCR0             = 0x31;              // 定时器/计数器0输出比较寄存器
sfrb    ASSR             = 0x30;              // 异步方式状态寄存器
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输入捕获寄存器低字节
sfrw    ICR1             = 0x26;              // 定时器/计数器1输入捕获寄存器(16 位)
sfrb    TCCR2            = 0x25;              // 定时器/计数器2控制寄存器
sfrb    TCNT2            = 0x24;              // 定时器/计数器2(8位)
sfrb    OCR2             = 0x23;              // 定时器/计数器2输出比较寄存器
sfrb    OCDR             = 0x22;              // 片上调试系统(OCD)寄存器
sfrb    WDTCR            = 0x21;              // 看门狗定时器控制寄存器
sfrb    SFIOR            = 0x20;              // 特殊功能IO寄存器
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    UDR0             = 0x0C;              // USART0 I/O 数据寄存器
sfrb    UCSR0A           = 0x0B;              // USART0控制和状态寄存器A
sfrb    UCSR0B           = 0x0A;              // USART0控制和状态寄存器B
sfrb    UBRR0L           = 0x09;              // USART0波特率寄存器低字节
sfrb    ACSR             = 0x08;              // 模拟比较器控制和状态寄存器
sfrb    ADMUX            = 0x07;              // ADC多路选择寄存器
sfrb    ADCSR            = 0x06;              // ADC控制和状态寄存器
sfrb    ADCH             = 0x05;              // ADC数据寄存器高字节
sfrb    ADCL             = 0x04;              // ADC数据寄存器低字节
sfrw    ADCW             = 0x04;              // ADC数据寄存器(16 位存取模式)
sfrb    PORTE            = 0x03;              // 端口E数据寄存器
sfrb    DDRE             = 0x02;              // 端口E数据方向寄存器
sfrb    PINE             = 0x01;              // 端口E输入引脚地址
sfrb    PINF             = 0x00;              // 端口F输入引脚地址
#pragma used-

/*--------------------------------------------------------------------------------------
存储器映射式的I/O 寄存器定义(0xFF~0x60)
--------------------------------------------------------------------------------------*/
#define UCSR1C (*(volatile Uchar8 *)0x9D)     // USART1控制和状态寄存器C
#define UDR1   (*(volatile Uchar8 *)0x9C)     // USART1 I/O 数据寄存器
#define UCSR1A (*(volatile Uchar8 *)0x9B)     // USART1控制和状态寄存器A
#define UCSR1B (*(volatile Uchar8 *)0x9A)     // USART1控制和状态寄存器B
#define UBRR1L (*(volatile Uchar8 *)0x99)     // USART1波特率寄存器低字节
#define UBRR1H (*(volatile Uchar8 *)0x98)     // USART1波特率寄存器高字节
#define UCSR0C (*(volatile Uchar8 *)0x95)     // USART0控制和状态寄存器C
#define UBRR0H (*(volatile Uchar8 *)0x90)     // USART0波特率寄存器高字节
#define TCCR3C (*(volatile Uchar8 *)0x8C)     // 定时器/计数器3控制寄存器C
#define TCCR3A (*(volatile Uchar8 *)0x8B)     // 定时器/计数器3控制寄存器A
#define TCCR3B (*(volatile Uchar8 *)0x8A)     // 定时器/计数器3控制寄存器B
#define TCNT3H (*(volatile Uchar8 *)0x89)     // 定时器/计数器3高字节
#define TCNT3L (*(volatile Uchar8 *)0x88)     // 定时器/计数器3低字节
#define OCR3AH (*(volatile Uchar8 *)0x87)     // 定时器/计数器3输出比较寄存器A高字节
#define OCR3AL (*(volatile Uchar8 *)0x86)     // 定时器/计数器3输出比较寄存器A低字节
#define OCR3BH (*(volatile Uchar8 *)0x85)     // 定时器/计数器3输出比较寄存器B高字节
#define OCR3BL (*(volatile Uchar8 *)0x84)     // 定时器/计数器3输出比较寄存器B低字节
#define OCR3CH (*(volatile Uchar8 *)0x83)     // 定时器/计数器3输出比较寄存器C高字节
#define OCR3CL (*(volatile Uchar8 *)0x82)     // 定时器/计数器3输出比较寄存器C低字节
#define ICR3H  (*(volatile Uchar8 *)0x81)     // 定时器/计数器3输入捕获寄存器高字节
#define ICR3L  (*(volatile Uchar8 *)0x80)     // 定时器/计数器3输入捕获寄存器低字节
#define ETIMSK (*(volatile Uchar8 *)0x7D)     // 扩展的定时器/计数器中断屏蔽寄存器
#define ETIFR  (*(volatile Uchar8 *)0x7C)     // 扩展的定时器/计数器中断标志寄存器
#define TCCR1C (*(volatile Uchar8 *)0x7A)     // 定时器/计数器1控制寄存器C
#define OCR1CH (*(volatile Uchar8 *)0x79)     // 定时器/计数器1输出比较寄存器C高字节
#define OCR1CL (*(volatile Uchar8 *)0x78)     // 定时器/计数器1输出比较寄存器C低字节
#define TWCR   (*(volatile Uchar8 *)0x74)     // TWI控制寄存器
#define TWDR   (*(volatile Uchar8 *)0x73)     // TWI数据寄存器
#define TWAR   (*(volatile Uchar8 *)0x72)     // TWI(从机)地址寄存器
#define TWSR   (*(volatile Uchar8 *)0x71)     // TWI状态寄存器
#define TWBR   (*(volatile Uchar8 *)0x70)     // TWI比特率寄存器
#define OSCCAL (*(volatile Uchar8 *)0x6F)     // 振荡器标定寄存器
#define XMCRA  (*(volatile Uchar8 *)0x6D)     // 外部存储器控制寄存器A
#define XMCRB  (*(volatile Uchar8 *)0x6C)     // 外部存储器控制寄存器B
#define EICRA  (*(volatile Uchar8 *)0x6A)     // 外部中断控制寄存器A
#define SPMCSR (*(volatile Uchar8 *)0x68)     // 保存程序存储器控制寄存器
#define PORTG  (*(volatile Uchar8 *)0x65)     // 端口G数据寄存器
#define DDRG   (*(volatile Uchar8 *)0x64)     // 端口G数据方向寄存器
#define PING   (*(volatile Uchar8 *)0x63)     // 端口G输入引脚地址
#define PORTF  (*(volatile Uchar8 *)0x62)     // 端口F数据寄存器
#define DDRF   (*(volatile Uchar8 *)0x61)     // 端口F数据方向寄存器


/*==========================================================================================
                                      中断向量地址定义
==========================================================================================*/
#define EXT_INT0            2                 // 外部中断请求0中断向量
#define EXT_INT1            3                 // 外部中断请求1中断向量
#define EXT_INT2            4                 // 外部中断请求2中断向量
#define EXT_INT3            5                 // 外部中断请求3中断向量
#define EXT_INT4            6                 // 外部中断请求4中断向量
#define EXT_INT5            7                 // 外部中断请求5中断向量
#define EXT_INT6            8                 // 外部中断请求6中断向量
#define EXT_INT7            9                 // 外部中断请求7中断向量
#define TIM2_COMP          10                 // 定时器/计数器2比较匹配中断向量
#define TIM2_OVF           11                 // 定时器/计数器2溢出中断向量
#define TIM1_CAPT          12                 // 定时器/计数器1输入捕获中断向量
#define TIM1_COMPA         13                 // 定时器/计数器1A比较匹配中断向量
#define TIM1_COMPB         14                 // 定时器/计数器1B比较匹配中断向量
#define TIM1_OVF           15                 // 定时器/计数器1溢出中断向量

⌨️ 快捷键说明

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