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

📄 define.h

📁 本代码以AVR单片机为主控制器
💻 H
字号:
/************************** (H) 2005  485表项目 *******************************

   项     目: 485表项目
   编译环境 : IARAVR 编译器 4.12A

   模块名称 : Define.h
   版    本 : V 1.0

   建立时间 : 2008-5-3 21:52

   修改时间 : 2008-5-3 23:00

   作    者 : 郝瑜云

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

   功能描述 : I/O 口和其他宏定义头文件




-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

   修改 :

******************************************************************************/


//-----------------------------Macro define------------------------------------
#include    <iom88.h>

#define     _VERSION    11              // 软件版本号 11 代表V1.1
// 定时删除有效  绍兴不灭零
//#define     _DEL_ZERO
//-----------------------------汇编宏定义--------------------------------------
#define     _WDR() 	    asm("wdr")
#define     _SEI()	    asm("sei")
#define     _CLI()	    asm("cli")
#define     _NOP()	    asm("nop")
#define     _SLEEP()    asm("sleep")

//-----------------------------变量宏定义--------------------------------------
#define     INT8U       unsigned char
#define     INT16U      unsigned int
#define     INT32U      unsigned long
#define     INT8S       signed char
#define     INT16S      signed int
#define     INT32S      signed long


#define     Input       0
#define     Output      1

// 位处理宏定义
//*****************************************************************************
#define     REVBIT(x,y) (x ^=(1<<y))    // Reverse bit
#define     SETBIT(x,y) (x |=(1<<y))    // Set   bit y in byte x
#define     CLRBIT(x,y) (x &=(~(1<<y))) // Clear bit y in byte x
#define     CHKBIT(x,y) (x & (1<<y))    // Check bit y in byte x

//-----------------------------硬件相关定义------------------------------------
#define     _FOSC               4915200 // 定义时钟频率
//#define     _TCNT2_RELOAD       (INT8U)(0xFF-(_FOSC/1024/100))
#define     _TCNT1_LOAD         (INT16U)(0xFFFF-(_FOSC/8/800))   // 定时1.25ms TIMER1重载值
#define     _TCNT1_RELOAD       (INT16U)(0xFFFF-(_FOSC/8/1200))  // 定时10/12ms TIMER1重载值
#define     _OCR2A_LOAD         (INT8U)(_FOSC/76000)             // 定义TIMER2输出38k方波加载值
#define     _SUMCONST           3                                // 定义大分频数
//-----------------------------------------------------------------------------

#define     _PULSE_LED_ON()     CLRBIT(PORTB,IO_YGOUT)      // 脉冲输出定义
#define     _PULSE_LED_OFF()    SETBIT(PORTB,IO_YGOUT)

#define     _LCDPOWER_ON()      SETBIT(PORTC,IO_BLED)     // LCD驱动相关定义
#define     _LCDPOWER_OFF()     CLRBIT(PORTC,IO_BLED)
#define     _IO_CLED_ON()       SETBIT(PORTB,IO_CLED)
#define     _IO_CLED_OFF()      CLRBIT(PORTB,IO_CLED)
#define     _STATUS_LED_ON()    CLRBIT(PORTC,IO_STATUS)
#define     _STATUS_LED_OFF()   SETBIT(PORTC,IO_STATUS)
#define     _FLASH_STATUS_LED() REVBIT(PORTC,IO_STATUS)

// 定义特殊功能寄存器初始值
//-----------------------------------------------------------------------------
#define     _DDRB_INIT      0x2E
#define     _DDRC_INIT      0x00
#define     _DDRD_INIT      0x42
//-----------------------------------------------------------------------------
//          BIT7    BIT6    BIT5    BIT4    BIT3    BIT2    BIT1    BIT0
//WDTCSR    WDIF    WDIE    WDP3    WDCE    WDE     WDP2    WDP1    WDP0
#define     _WDTCSR_START   0x18                            // WDT启动时序配置
#define     _WDTCSR_INIT    0x0F                            // WDT初始值 2秒
//-----------------------------------------------------------------------------
//          BIT7    BIT6    BIT5    BIT4    BIT3    BIT2    BIT1    BIT0
//EICRA                                     ISC11   ISC10   ISC01   ISC00
//PCICR                                             PCIE2   PCIE1   PCIE0
//EIMSK                                                     INT1    INT0
//EIFR                                                      INTF1   INTF0
#define     _EICRA_INIT     0x0E                            // INT1上升沿中断,INT0下降沿中断
#define     _PCICR_INIT     0x00                            // 禁止电平变化中断
#define     _EIMSK_INIT     0x03                            // 允许INT1中断,禁止INT0中断
#define     _EIFR_INIT      0x03                            // 清除INT1,INT0中断标志
//-----------------------------------------------------------------------------
//          BIT7    BIT6    BIT5    BIT4    BIT3    BIT2    BIT1    BIT0
//TCCR0A    COM0A1  COM0A0  COM0B1  COM0B0                  WGM01   WGM00
//TCCR0B    FOC0A   FOC0B                   WGM02   CS02    CS01    CS00
//TIMSK0                    ICIE1                   OCIE0B  OCIE0A  TOIE0
#define     _TCCR0A_INIT    0x00                            // TIMER0模式
#define     _TCCR0B_INIT    0x07                            // T0引脚上升沿触发
#define     _TIMSK0_INIT    0x01                            // 开TOIE0中断
#define     _TCNT0_LOAD     0xFF                            // 计数
//#define     _TCNT0_LOAD     (INT8U)(0xFF-(_FOSC/64/800))    // 1200 bps 定时器起始值 OSC:8.000M
//#define     _TCNT0_RELOAD   (INT8U)(0xFF-(_FOSC/64/1200))   // 定时1ms 定时器0重载值 OSC:8.000M
//-----------------------------------------------------------------------------
//          BIT7    BIT6    BIT5    BIT4    BIT3    BIT2    BIT1    BIT0
//TCCR1A    COM1A1  COM1A0  COM1B1  COM1B0                  WGM11   WGM10
//TCCR1B    ICNC1   ICES1           WGM13   WGM12   CS12    CS11    CS10
//TCCR1C    FOC1A   FOC1B
//                          ICIE1                   OCIE1B  OCIE1A  TOIE1
//#define     _OCR1A_LOAD     (INT16U) (_FOSC/76000)          // 定义OCR1A输出38k方波时OCR1A寄存器加载值
#define     _TCCR1A_INIT    0x00                            // TIMER1工作于CTC模式,OC1A输出
#define     _TCCR1A_38K     0x40                            // OC1A输出比较匹配取反脉冲
#define     _TCCR1B_INIT    0x09                            // TIMER1工作于CTC模式,1分频
#define     _TCCR1C_INIT    0x00                            // 禁止强制比较输出 FOC1A 和 FOC1B
#define     _TIMSK1_INIT    0x20                            // 与操作,避开ICIE1中断
//-----------------------------------------------------------------------------
//          BIT7    BIT6    BIT5    BIT4    BIT3    BIT2    BIT1    BIT0
//TCCR2A    COM2A1  COM2A0  COM2B1  COM2B0                  WGM21   WGM20
//TCCR2B    FOC2A   FOC2B                   WGM22   CS22    CS21    CS20
//TIMSK2                                            OCIE2B  OCIE2A  TOIE2
#define     _ASSR_INIT      0x00
#define     _TCCR2A_INIT    0x00                            //
#define     _TCCR2B_INIT    0x00                            //
#define     _TIMSK2_INIT    0x00                            //

//-----------------------------------------------------------------------------
//                         MEGA88 I/O 口定义
//-----------------------------------------------------------------------------
//PORTB I/O 口定义
//*****************************************************************************
#define     IO_RXD2       0   // PB0  I   // DDRB |= 0B00101110   0x2E    I   0   DDRB  =0B00101010
#define     IO_YGOUT      1   // PB1  O                                   O   1   PORTB =0B00001010
#define     IO_BLED       2   // PB2  O                                   O   0
#define     IO_TXD2       3   // PB3  O                                   O   1
#define     IO_PROG       4   // PB4  I                                   I   0
#define     IO_SCK        5   // PB5  O                                   O   1
//PORTC I/O 口定义
//*****************************************************************************
#define     IO_DISPLAY    0   // PC0  I   // DDRC |= 0B00001110   0x0E    O   1   DDRC  =0B00001110
#define     IO_KEYCLR     1   // PC1  I                                  O   1   PORTC =0B11111111
#define     IO_REVP_A     2   // PC2  I                                   O   1
#define     IO_SDAA       3   // PC3  I                                   O   1
#define     IO_SDA        4   // PC4  I                                   I   1
#define     IO_SCL        5   // PC5  I                                   I   1
#define     IO_REVP_B     6   // PC6  I 
#define     IO_REVP_C     7   // PC7  I 
//PORTD I/O 口定义
//*****************************************************************************
#define     IO_RXD1       0   // PD0  I   // DDRD |= 0B10100010   0x82    I   0   DDRD  =0B10100010
#define     IO_TXD1       1   // PD1  O                                   O   1   PORTD =0B10100010
#define     IO_CF_A       2   // PD2  I                                   I   0
#define     IO_CF_B       3   // PD3  I                                   I   0
#define     IO_CF_C       4   // PD4  I                                   I   0
#define     IO_FAULT      5   // PD5  I                                   O   1
//#define     IO_PROG     6   // PD6  I                                   I   0
#define     IO_PWD        7   // PD7  I                                   I   0


/*************************** END OF SUB **************************************/

⌨️ 快捷键说明

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