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

📄 pindef.h

📁 NEC527多功能电表完整源代码,包括LCD驱动,显示,计量,存储,整个527驱动程序!
💻 H
字号:
/* hal.h */

#ifndef HAL_H
#define HAL_H


#ifdef __cplusplus
extern "C"
{
#endif

#define BIT0                (uchar)(0x01)
#define BIT1                (0x02)
#define BIT2                (0x04)
#define BIT3                (0x08)
#define BIT4                (0x10)
#define BIT5                (0x20)
#define BIT6                (0x40)
#define BIT7                (uchar)(0x80)
#define BIT8                (0x0100)
#define BIT9                (0x0200)
#define BITA               (0x0400)
#define BITB                (0x0800)
#define BITC               (0x1000)
#define BITD               (0x2000)
#define BITE               (0x4000)
#define BITF               (0x8000)


// LCD_LIGHT ( UPD78F0537 --> RTC_INTB )
// +---------------+
// |          P6.3 |  <--- LCD_LIGHT
// +---------------+
#define  LCD_LIGHT_BIT      BIT7
#define LCD_LIGHT                 P7.7
#define LCD_LIGHT_ON() (LCD_LIGHT=1)
#define LCD_LIGHT_OFF() (LCD_LIGHT=0)


// ALARM0 ( UPD78F0537 --> RTC_INTB )
// +---------------+
// |          P0.6 |  <--- ALARM0
// +---------------+
#define ALARM0  P0.6
#define ALARM0_ON()  ALARM0 = 0
#define ALARM0_OFF() ALARM0 = 1

// ALARM0 ( UPD78F0537 --> RTC_INTB )
// +---------------+
// |          P0.5 |  <--- ALARM1
// +---------------+
#define ALARM1  P0.5
#define ALARM1_ON()   ALARM0 = 0
#define ALARM1_OFF()  ALARM0 = 1


// ALARM0 ( UPD78F0537 --> RTC_INTB )
// +---------------+
// |          P3.2 |  <--- BUZZER
// +---------------+
#define BUZZER  P3.2
#define BUZZER_ON()  BUZZER = 0
#define BUZZER_OFF() BUZZER = 1

// User key 0 ( UPD78F0537 --> USERKEY0 )//这个是用来上翻下翻的
// +---------------+
// |          P7.2 |  <--- USERKEY0
// +---------------+
#define USERKEY0                  BIT3
#define USERKEY0_IN               P7

// User key 1 ( UPD78F0537 --> USERKEY1 )
// +---------------+
// |          P7.2 |  <--- USERKEY1//这个用来上翻
// +---------------+
#define USERKEY1                  BIT2
#define USERKEY1_IN               P7

// PROG_EN ( UPD78F0537 --> PROG_EN )
// +---------------+
// |          P7.3 |  <--- PROG_EN //这个是编程使能按键
// +---------------+
#define PROG_EN                  BIT4
#define PROG_EN_IN               P7
#define USERKEY2                 PROG_EN


// 开上盖报警管脚定义 ( UPD78F0537 <--- COVER_UP )
// +---------------+
// |          P7.5 |  <--- COVER_UP
// +---------------+
#define COVER_UP                    BIT5
#define COVER_UP_OUT               P7
#define COVER_UP_IN                P7
#define COVER_UP_DIR               PM7


// 开下盖报警管脚定义 ( UPD78F0537 <--- COVER_DOWN )
// +---------------+
// |          P7.6 |  <--- COVER_DOWN
// +---------------+
#define COVER_DOWN                    BIT6
#define COVER_DOWN_OUT                P7
#define COVER_DOWN_IN                 P7
#define COVER_DOWN_DIR               PM7


// Power FOUT ( UPD78F0537 --> PWR_FOUT )
// +---------------+
// |          P7.0 |  <--- PWR_F0 这个是市电
// |          P7.1 |  <--- PWR_F1 这个是电池
// +---------------+
#define PWR_F0                    BIT0
#define PWR_F0_IN                 P7

#define PWR_F1                    BIT1
#define PWR_F1_IN                 P7


// IR红外管脚定义 ( UPD78F0537 <--> IR )
// +---------------+
// |          P14.1 | <---  IR_IN/IR_RX(interrupt)
// |          P0.0  |  ---> IR_OUT/IR_TX
// |          P12.0 |  ---> IR_EN
// +---------------+
#define IR_RX                     BIT1
#define IR_RX_DIR                 PM14
#define IR_RX_IN                  P14
#define IR_RX_OUT                P14

#define IR_TX                     BIT0
#define IR_TX_DIR                PM0
#define IR_TX_OUT                P0  
#define IR_TX_LOW()        ( IR_TX_OUT &=~ IR_TX )

#define IR_EN                       BIT0
#define IR_EN_OUT                P12
#define IR_EN_DIR                PM12

#define IR_ON() {PM12.0 = 0; IR_EN_OUT &= ~IR_EN;} //红外电源打开
#define IR_OFF() {PM12.0 = 1;IR_EN_OUT |= IR_EN;PMK7=1;} //红外电源关闭

#define IR_OFF_PD() { IR_OFF(); LCD_LIGHT_OFF();}//;IR_RX_IE&=~IR_RX;IR_EN_OUT|=IR_EN;} 
#define IR_ON_PD()   IR_ON() //{IR_RX_IE|=IR_RX; IR_EN_OUT&=~IR_EN;}

//      UPD78F0537   <---> UART
// +---------------+
// |          P1.3 |  ---> RD_D
// |          P1.4 | <---  RS_R(Interrupt)
// |          P 
// |          P1.0 |  ---> RD_D1
// |          P1.1 | <---  RS_R1(Interrupt)
// +---------------+
#define RS485_TX                 BIT3
#define RS485_TX_DIR             PM1
#define RS485_TX_OUT             P1

#define RS485_RX                 BIT4
#define RS485_RX_DIR             PM1
#define RS485_RX_IN              P1
#define RS485_RX_OUT             P1


#define RS485_2_TX                  BIT0
#define RS485_2_TX_DIR             PM1
#define RS485_2_TX_OUT             P1

#define RS485_2_RX                  BIT1
#define RS485_2_RX_DIR             PM1
#define RS485_2_RX_IN               P1
#define RS485_2_RX_OUT             P1


#define RS485_PF0()  { P1&=~(RS485_TX); PM1|=RS485_TX;  }

#define RS485_2_PF0() { P1&=~(RS485_2_TX);PM1|=RS485_2_TX; }

#define RS_EN                     BIT5
#define RS_EN_DIR             PM1
#define RS_EN_IN               P1
#define RS_EN_OUT            P1

#define RS_EN_2                   BIT2
#define RS_EN_2_DIR             PM1
#define RS_EN_2_IN               P1
#define RS_EN_2_OUT            P1

#define RS485_TX_EN()                    P1.5 = 0
#define RS485_RX_EN()                    P1.5 = 1
#define RS485_TX_EN2()                  P1.2 = 0
#define RS485_RX_EN2()                  P1.2 = 1

//ATT7022B 管脚定义//
// +---------------+
// |          0     |  <--- ATT7022SIG  //这个没有用
// |          P0.2  |  <--- ATT7022DOUT
// |          P13.0 |  ---> ATT7022CS
// |          P0.3  |  ---> ATT7022DIN
// |          P0.4  |  ---> ATT7022SCLK
// +---------------+
#define ATT7022DOUT          BIT3
#define ATT7022DOUT_DIR   PM0
#define ATT7022DOUT_OUT   P0

#define ATT7022CS             BIT0
#define ATT7022CS_OUT     P13
#define ATT7022CS_DIR     PM13

#define ATT7022DIN           BIT2
#define ATT7022DIN_DIR    PM0
#define ATT7022DIN_IN      P0

#define ATT7022CLK           BIT4
#define ATT7022CLK_OUT    P0
#define ATT7022CLK_DIR    PM0

#define ATT7022_PF0()   //{  ATT7022DOUT_DIR|=(ATT7022DOUT);P2&=(uchar)(~(ATT7022DIN|ATT7022CLK|ATT7022DOUT|ATT7022CS));PM2|=ATT7022SIG;}
//这个地方暂时不改
//      UPD78F0537   <---> DataFlash
// +---------------+
// |          P5.2 | ---> DATA_FLASH_WP
// |          P1.6 | <--- DATA_FLASH_SO
// |          P1.7 | ---> DATA_FLASH_SI
// |          P3.0 | ---> DATA_FLASH_SCL
// |          P5.3 | ---> DATA_FLASH_CS
// +---------------+
#define DATA_FLASH_WP                              BIT2
#define DATA_FLASH_WP_OUT                          P5
#define  DATA_FLASH_WP_DIR                     PM5

#define DATA_FLASH_SO                              BIT6
#define DATA_FLASH_SO_IN                           P1
#define  DATA_FLASH_SO_IN_DIR                PM1

#define DATA_FLASH_SI                              BIT7
#define DATA_FLASH_SI_OUT                          P1
#define DATA_FLASH_SI_DIR                       PM1

#define DATA_FLASH_SCL                             BIT0
#define DATA_FLASH_SCL_OUT                       P3
#define DATA_FLASH_SCL_DIR                       PM3

#define DATA_FLASH_CS                              BIT3
#define DATA_FLASH_CS_OUT                       P5
#define DATA_FLASH_CS_DIR                       PM5


// WDI管脚定义 ( UPD78F0537 --> WDI )
// +---------------+
// |          P5.1 |  ---> WDI//新版没有外置看门狗这个就不用了
// +---------------+

#define WDI                       BIT1
#define WDI_OUT               P5
#define WDI_DIR                PM5


// 实时时钟管脚定义 ( MSP430F435 <--> 8025 )
// +---------------+
// |          P6.0 |  ---> WP
// |          P6.1 | <---> SDA
// |          P6.2 |  ---> SCL
// +---------------+

#define RTC_WP                    BIT2
#define RTC_WP_OUT               P6
#define RTC_WP_DIR               PM6

#define RTC_SDA                   BIT1
#define RTC_SDA_IN                P6
#define RTC_SDA_OUT              P6
#define RTC_SDA_DIR              PM6

#define RTC_SCL                   BIT0
#define RTC_SCL_OUT              P6
#define RTC_SCL_DIR              PM6

// +---------------+
// |          P6.0 |  ---> FRAM_SCL
// +---------------+
#define FRAM_SCL                            RTC_SCL
#define FRAM_SCL_OUT                        RTC_SCL_OUT 

// +---------------+
// |          P6.1 |  ---> FRAM_SDA
// +---------------+
#define FRAM_SDA                           RTC_SDA
#define FRAM_SDA_OUT                       RTC_SDA_OUT
#define FRAM_SDA_IN                        RTC_SDA_IN
#define FRAM_SDA_DIR                       RTC_SDA_DIR

// +---------------+
// |          P6.3 |  ---> FRAM_WP
// +---------------+
#define FRAM_WP                           RTC_WP
#define FRAM_WP_OUT                       RTC_WP_OUT 

#define ANA_UART_RX P3.3
#define ANA_UART_RX_DIR PM3.3
#define ANA_UART_TX P6.3
#define ANA_UART_TX_DIR PM6.3

/************************************************************
 * P0端口定义:
 * -----------------------------------------------------------
 * P0.0----IR_D	
 * P0.1----NOP
 * P0.2----DO    
 * P0.3----DI    
 * P0.4----CLK
 * P0.5----ALARM1
 * P0.6----ALARM0

 ************************************************************/
#define P0DIR_VAL    (BIT3)
#define P0OUT_VAL    (0xFF)

#define LP_P0DIR_VAL   (BIT2)
#define LP_P0OUT_VAL  (BIT1)
/************************************************************
 * P1端口定义:
 * -----------------------------------------------------------
 * P1.0----RS_D1	
 * P1.1----RS_R1
 * P1.2----RS_EN1
 * P1.3----RS_D
 * P1.4----RS_R
 * P1.5----RS_EN
 * P1.6----DF_DO
 * P1.7----DF_DI
 ************************************************************/
#define P1DIR_VAL     (BIT1 + BIT4 + BIT6 )
#define P1OUT_VAL    0XFF

#define LP_P1DIR_VAL (BIT6)
#define LP_P1OUT_VAL (BIT6|BIT7)

/************************************************************
 * P2端口定义:
 * -----------------------------------------------------------
 * P2.0----NC
 * P2.1----NC
 * P2.2----NC
 * P2.3----NC
 * P2.4----NC
 * P2.5----NC
 * P2.6----NC
 * P2.7----NC
 ************************************************************/
#define P2DIR_VAL     (0x00)
#define P2OUT_VAL     (0xFF)

#define LP_P2DIR_VAL     (0x00)
#define LP_P2OUT_VAL     (0x00)

/************************************************************
 * P3端口定义:
 * -----------------------------------------------------------
 * P3.0----DF_CLK
 * P3.1----JDQ1       //高电平受控
 * P3.2----BUZZER     //低电平受控
 * P3.3----LCD_B      //高电平受控
 ************************************************************/
#define P3DIR_VAL     (0xF8)
#define P3OUT_VAL     (0xF0|BIT2|BIT0)

#define LP_P3DIR_VAL  P3DIR_VAL
#define LP_P3OUT_VAL P3OUT_VAL
/************************************************************
 * P4端口定义:
 * -----------------------------------------------------------
 * P4.0----NC
 * P4.1----NC
 * P4.2----IR_CON2  //高电平控制
 * P4.3----IR_CON1  //高电平控制
 ************************************************************/
#define P4DIR_VAL     (~(BIT2|BIT3))//23为输出别的为输入
#define P4OUT_VAL     (~(BIT2|BIT3))

#define LP_P4DIR_VAL  P4DIR_VAL
#define LP_P4OUT_VAL P4OUT_VAL

/************************************************************
 * P5端口定义:
 * -----------------------------------------------------------
 * P5.0----JDQ2  高电平控制。有10K下拉电阻
 * P5.1----WDI   有10K下拉电阻
 * P5.2----WP_D  高电平有效,有10K下拉电阻
 * P5.3----DF_CS //低电平有效,有10K上拉电阻
 ************************************************************/
 #define P5DIR_VAL     (0xF0)
#define  P5OUT_VAL     ((~BIT0)&(~BIT1)&(~BIT2)&BIT3)

#define LP_P5DIR_VAL P5DIR_VAL
#define LP_P5OUT_VAL P5OUT_VAL
/************************************************************
 * P6端口定义:
 * -----------------------------------------------------------
 * P6.0----SCK_R    //有上接
 * P6.1----SDA_R    //有上拉
 * P6.2----WP_R    //低电平有效 有10K上拉
 * P6.3----NC
 ************************************************************/
#define P6DIR_VAL     (BIT1)
#define P6OUT_VAL     (0x0f)

#define LP_P6DIR_VAL P6DIR_VAL
#define LP_P6OUT_VAL P6OUT_VAL
/************************************************************
 * P7端口定义:
 * -----------------------------------------------------------
 * P7.0----PWR_F0   //市电 上拉没有
 * P7.1----PWR_F1   //电池 无上接
 * P7.2----USER1    //10K上拉
 * P7.3----USER0    //10K上拉
 * P7.4----USER2    //10K上拉
 * P7.5----STA_DOWN  //10上拉 电表正常运行状态下
 * P7.6----STA_UP    //10上拉 电表正常运行状态下
 * P7.7----not connected
 ************************************************************/
#define P7DIR_VAL     (BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6)
#define P7OUT_VAL     (0x7F)

#define LP_P7DIR_VAL  P7DIR_VAL  
#define LP_P7OUT_VAL  P7OUT_VAL

/************************************************************
 * P14端口定义:
 * -----------------------------------------------------------
 * P14.0----AD_IRQ  //通过上拉接VDD停电时应当成为
 * P14.1----IR_R  //有10K上接电阻
 ************************************************************/
 #define P14DIR_VAL      (0xFF)
 #define P14OUT_VAL     (0xFF)

#define  LP_P14DIR_VAL (0xFE)
#define  LP_P14OUT_VAL (0xFE)

#define ALARM_LIGHT()                    (ALARM0_ON())
#define ALARM_LIGHT_CANCLE()       (ALARM0_OFF())

#define ALARM_LIGHT2_ON()              (ALARM1_ON())
#define ALARM_LIGHT2_OFF()            (ALARM1_OFF())

#define ALARM_SOUND()                    (BUZZER_ON())
#define ALARM_SOUND_CANCLE()      (BUZZER_OFF())
#define BELL()                                     (BUZZER_ON())

#define EXT_IO_RELAY_1_ON()               P3.1 = 1
#define EXT_IO_RELAY_1_OFF()              P3.1 = 0
#define EXT_IO_RELAY_2_ON()               P5.0 = 1
#define EXT_IO_RELAY_2_OFF()             P5.0 = 0

#endif /* HAL_H */

⌨️ 快捷键说明

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