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

📄 atmega128.h

📁 本程序是用 ATmega16 控制实时时钟芯片 DS12887 接口驱动的源程序文件。
💻 H
📖 第 1 页 / 共 5 页
字号:
/*
********************************************************************************************
头部文件名:        ATmega128.h
头部文件名称:      ATmega128 单片机内部寄存器名和位名定义的头部文件
适用器件芯片类型:   ATmega128(ATMEL公司生产的单片机)
文件版本:        1.0
文件功能:
    本文件是 ATmega128 单片机内部寄存器名和位名定义、编译器数据类型定义的的头部文件。
文件说明:
    在使用本文件前,必须首先使用全局预定义字符来对C编译系统进行定义!
    对各种C编译系统规定使用的全局预定义字符如下(中括号里面的字符):
    ①.IAR Embedded Workbench for Atmel AVR ------ [_IAR_EW_AVR_]
    ②.ICCAVR ------------------------------------ [_ICC_AVR_]
    ③.CodeVision AVR ---------------------------- [_CodeVision_AVR_]

编译工具软件:      IAR Embedded Workbench for Atmel AVR 版本:3.20 以上
                    CodeVision AVR C 版本:1.24.6 以上
                    ICCAVR 版本:6.31A 以上
链接文件:          MCU_C_Macro_Data_Define.h

编作者:            
编作者 E-Mail:     PTZSW@163.COM
编制日期:          2005年8月22日
----------------------------------------------------------------------------------------
头部文件版本历史:
2005年8月22日 -------- 版本 1.0 :发行版本
********************************************************************************************
*/


/*==========================================================================================
下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
==========================================================================================*/
#ifndef MCU_8BIT_ATMEGA128_H                  // "MCU_8BIT_ATMEGA128_H" 条件编译开始
#define MCU_8BIT_ATMEGA128_H


/*==========================================================================================
下面这三条指令是用于区分编译系统为 C++ 或 C 的预处理指令。
"__cplusplus" 为 C++ 预处理器名字,这三条指令表明接在其下面的那些指令为 C 程序特征。
==========================================================================================*/
#ifdef __cplusplus
extern "C" {
#endif


/*==========================================================================================
                  本头部文件包括的其他头部文件
==========================================================================================*/
#include "MCU_C_Macro_Data_Define.h"          // 包含数据类型和常用指令宏定义的头部文件


/*
********************************************************************************************
            适合的编译系统:IAR Embedded Workbench for Atmel AVR 版本:3.20 以上
********************************************************************************************
*/
#if defined(_IAR_EW_AVR_)                     // "IAR Embedded Workbench AVR "条件编译开始
/*==========================================================================================
                  本头部文件包括的其他头部文件
==========================================================================================*/
#include "IOmacro.h"                          // AT90S 系列特殊功能寄存器宏定义的头部文件


/*==========================================================================================
                   本器件芯片的处理器配置选项
==========================================================================================*/
#if TID_GUARD(3)                              // "TID_GUARD(3)" 条件编译开始
#error 本文件仅只能用于 ICCAVR 或者 AAVR 编译器,且处理器选项为 [-v3] 的条件下进行编译
#endif                                        // "TID_GUARD(3)" 条件编译结束


/*==========================================================================================
如果在此之前,本头部文件没有被其他文件引用或者此文件被汇编程序引用(在每个汇编程序模块中
必须定义特殊功能寄存器),本指令将包含特殊功能寄存器部分的宏定义。
==========================================================================================*/
#if !defined(__IOM128_H) || defined(__IAR_SYSTEMS_ASM__)


#pragma language=extended                     // 使用 IAR 针对 AVR 特性而扩展的C语言

/*==========================================================================================
                                预定义特殊功能寄存器存储地址
==========================================================================================*/
/*--------------------------------------------------------------------------------------
 本例子用于说明如何对“SFR_B()”进行宏调用,对其进行展开后的结果和对此结果的用法:
 SFR_B_R(0x1F,   AVR)
 展开为:
 __io union {
             unsigned char AVR;                // The sfrb 被看作 1 个字节
             struct {                          // The sfrb 被看作 8 位
                     unsigned char AVR_Bit0:1,
                                   AVR_Bit1:1,
                                   AVR_Bit2:1,
                                   AVR_Bit3:1,
                                   AVR_Bit4:1,
                                   AVR_Bit5:1,
                                   AVR_Bit6:1,
                                   AVR_Bit7:1;
                    };
            } @ 0x1F;
 对展开后结果的用法如下面这些例子所示(操作:置位变量 AVR 的第 6 位):
 AVR |= (1<<5);
 也可以如下面所示进行操作:
 AVR_Bit5 = 1;


 本例子用于说明如何对“SFR_B_N()”进行宏调用,对其进行展开后的结果和对此结果的用法:
 SFR_B_N(0x25,  TCCR2, FOC2, WGM20, COM21, COM20, WGM21, CS22, CS21, CS20)
 展开为:
  __io union {
              unsigned char TCCR2;
              struct {
                      unsigned char TCCR2_Bit0:1,
                                    TCCR2_Bit1:1,
                                    TCCR2_Bit2:1,
                                    TCCR2_Bit3:1,
                                    TCCR2_Bit4:1,
                                    TCCR2_Bit5:1,
                                    TCCR2_Bit6:1,
                                    TCCR2_Bit7:1;
                     };
              struct {
                      unsigned char TCCR2_CS20:1,
                                    TCCR2_CS21:1,
                                    TCCR2_CS22:1,
                                    TCCR2_WGM21:1,
                                    TCCR2_COM20:1,
                                    TCCR2_COM21:1,
                                    TCCR2_WGM20:1,
                                    TCCR2_FOC2:1;
                     };
             } @ 0x25;
 对展开后结果的用法如下面这些例子所示(操作:置位寄存器 TCCR2 的第 6 位):
 TCCR2 |= (1<<5);
 或者,如果在 ENABLE_BIT_DEFINITIONS 被定义的条件下,也可以如下面所示进行操作:
 TCCR2 |= (1<<COM21);
 也可以如下面所示进行操作:
 TCCR2_Bit5 = 1;
 也可以如下面所示进行操作:
 TCCR2_COM21 = 1;
--------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------
I/O 寄存器定义($3F-$00)
--------------------------------------------------------------------------------------*/
SFR_B_N(0x00, PINF, PINF7, PINF6, PINF5, PINF4, PINF3, PINF2, PINF1, PINF0)
                                              // 端口F输入引脚地址
SFR_B_N(0x01, PINE, PINE7, PINE6, PINE5, PINE4, PINE3, PINE2, PINE1, PINE0)
                                              // 端口E输入引脚地址
SFR_B_N(0x02, DDRE, DDE7, DDE6, DDE5, DDE4, DDE3, DDE2, DDE1, DDE0)
                                              // 端口E数据方向寄存器
SFR_B_N(0x03, PORTE, PORTE7, PORTE6, PORTE5, PORTE4, PORTE3, PORTE2, PORTE1, PORTE0)
                                              // 端口E数据寄存器
SFR_W_R(0x04, ADC)                            // ADC数据寄存器(16 位存取模式)
SFR_B2_N(0x06, ADCSR, ADCSRA, ADEN, ADSC, ADFR, ADIF, ADIE, ADPS2, ADPS1, ADPS0)
                                              // ADC控制和状态寄存器
SFR_B_N(0x07, ADMUX, REFS1, REFS0, ADLAR, MUX4, MUX3, MUX2, MUX1, MUX0)
                                              // ADC多路选择寄存器
SFR_B_N(0x08, ACSR, ACD, ACBG, ACO, ACI, ACIE, ACIC, ACIS1, ACIS0)
                                              // 模拟比较器控制和状态寄存器
SFR_B_R(0x09, UBRR0L)                         // USART0波特率寄存器低字节
SFR_B_N(0x0A, UCSR0B, RXCIE0, TXCIE0, UDRIE0, RXEN0, TXEN0, UCSZ02, RXB80, TXB80)
                                              // USART0控制和状态寄存器B
SFR_B_N(0x0B, UCSR0A, RXC0, TXC0, UDRE0, FE0, DOR0, UPE0, U2X0, MPCM0)
                                              // USART0控制和状态寄存器A
SFR_B_R(0x0C, UDR0)
                                              // USART0 I/O 数据寄存器
SFR_B_N(0x0D, SPCR, SPIE, SPE, DORD, MSTR, CPOL, CPHA, SPR1, SPR0)
                                              // SPI控制寄存器
SFR_B_N(0x0E, SPSR, SPIF, WCOL, Dummy5, Dummy4, Dummy3, Dummy2, Dummy1, SPI2X)
                                              // SPI状态寄存器
SFR_B_R(0x0F, SPDR)                           // SPI数据寄存器
SFR_B_N(0x10, PIND, PIND7, PIND6, PIND5, PIND4, PIND3, PIND2, PIND1, PIND0)
                                              // 端口D输入引脚地址

⌨️ 快捷键说明

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