📄 hal.h
字号:
#ifndef __HAL_H
#define __HAL_H
#include "msp430x42x0.h"
#include "in430.h"
#include "common.h"
#include "ccreg.h"
#include "function.h"
//------------------------------------------------------------------------------
#define PLATE4 BIT7
#define PLATE3 BIT6
#define PLATE2 BIT5
#define PLATE1 BIT4
#define PLATE0 BIT3
#define KEY1 BIT2
#define PLATESHIFT 3
#define SET_EO P5OUT |= BIT7
#define CLR_EO P5OUT &= ~BIT7
#define CCGDO2 BIT0 //ccxxxx
#define CCOVER BIT7
//------------------------------------------------------------------------------
#define TIMER_A3_OFF (TACTL = 0)
#define TIMER_A3_ON (TACTL = TASSEL_1 + ID_3 + MC_1 + TACLR)
#define TIMER_A30_DURA(x) {TACCR0 = x;TIMER_A3_ON;}
#define TIMER_A30_1MS 3
#define TIMER_A30_10MS 40
#define TIMER_A30_100MS 409
#define TIMER_A30_1S 4095
#define TIMER_A30_10S 40959
//min = 1/4096s max = 16S
#define BTIMER_ON IE2 |= BTIE //only disable or enable the IEN bit
#define BTIMER_OFF IE2 &= ~BTIE
//------------------------------------------------------------------------------
#define I2C_Wait() {__no_operation();\
__no_operation();\
__no_operation();\
}
#define I2C_SDA_SET (P5OUT |= BIT5)
#define I2C_SDA_CLR (P5OUT &= ~BIT5)
#define I2C_SCL_SET (P5OUT |= BIT6)
#define I2C_SCL_CLR (P5OUT &= ~BIT6)
#define I2C_SCL_CLK {I2C_SCL_SET; I2C_Wait(); I2C_SCL_CLR;}
#define I2C_SDA_DIRI (P5DIR &= ~BIT5)
#define I2C_SDA_DIRO (P5DIR |= BIT5)
#define I2C_SDA_IN ((P5IN & BIT5) >> 5)
#define I2C_READ_MSK BIT0
#define I2C_ACK 0
#define I2C_NOACK 1
#define I2C_DEVICE 0xA0
#define I2C_WAIT_WRITE Pause_1mS(10)
#define I2C_TEST_ADDR 0xfe
#define I2C_CHACK_EN
//----------------------------------------------------------------------------//
#define SD16_REF BIT4 //P6OUT
#define SD16_CH0 BIT5
#define SD16_CH1 BIT6
#define SD16_CH2 BIT7
#define SD16_CH3 BIT0 //P5OUT
#define SD16_CH4 BIT1
#define SD16_OFF_ALL {P5OUT |= BIT0+BIT1; P6OUT |= BIT4 + BIT5 + BIT6 + BIT7; }
#define SD16_ON_ALL {P5OUT &= ~(BIT0+BIT1); P6OUT &= ~(BIT4 + BIT5 + BIT6 + BIT7);}
#define SD16CH_OFF_ALL {P5OUT |= BIT0+BIT1; P6OUT |= BIT5 + BIT6 + BIT7; }
#define SD16CH_ON_ALL {P5OUT &= ~(BIT0+BIT1); P6OUT &= ~(BIT5 + BIT6 + BIT7);}
#define SD16CH_OFF(x) {if(x>2){P5OUT |= 0x10>>x ;} else{P6OUT |= 0x20<<x; }}
#define SD16CH_ON(x) {if(x>2){P5OUT &= ~(0x10>>x);} else{P6OUT &= ~(0x20<<x);}}
#define SD16REF_OFF (P6OUT |= SD16_REF)
#define SD16REF_ON (P6OUT &= ~SD16_REF)
#ifdef DEBUG
#define CAL_MIN_MAX_SPAN 5000 //for test, get the tenth
#define SET_TEST1 (P6OUT |= SD16_CH1)
#define CLR_TEST1 (P6OUT &= ~SD16_CH1)
#define SET_TEST2 (P6OUT |= SD16_CH2)
#define CLR_TEST2 (P6OUT &= ~SD16_CH2)
#else
#define CAL_MIN_MAX_SPAN 5000 // Scale value for CalMin/CalMax 10,000 Counts=10kg=10,000g
#endif
// Get a 18-bit wide result from SD16 channel 0 (17 bit + sign bit)
// Basic bit wide 16
#define SD16_BIT_WIDE 18
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -