?? emot.h
字號:
/*****************************************
// For: CC2430 in PS-WSN
// emot.h
// 2008年1月30日 emot
*****************************************/
#ifndef EMOT_H
#define EMOT_H
#include <ioCC1110.h>
/*****************************************
//定義類型
*****************************************
typedef unsigned char BOOL;
// Data
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
// Unsigned numbers
typedef unsigned char UINT8;
typedef unsigned char INT8U;
typedef unsigned short UINT16;
typedef unsigned short INT16U;
typedef unsigned long UINT32;
typedef unsigned long INT32U;
// Signed numbers
typedef signed char INT8;
typedef signed short INT16;
typedef signed long INT32;
*/
#define uchar unsigned char
#define uint unsigned int
/*****************************************
//定義常量
*****************************************/
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef HIGH
#define HIGH 1
#endif
#ifndef LOW
#define LOW 0
#endif
/*****************************************
//中斷
*****************************************/
#define DISABLE_ALL_INTERRUPTS() (IEN0 = IEN1 = IEN2 = 0x00)
/*****************************************
//LED 使能控制
*****************************************/
#define LED_ENABLE(val) \
do{ \
if(val==1) \
{ \
P1SEL &= ~0X03; \
P1DIR |= 0X03; \
RLED = 1; \
GLED = 1; \
} \
else \
{ \
P1DIR &= ~0X03; \
} \
}while(0)
#define RLED P1_0
#define GLED P1_1
/*****************************************
//時鐘相關寄存器
*****************************************/
// Macro for getting the clock division factor
#define CLKSPD (CLKCON & 0x07)
// Macro for getting the timer tick division factor.
#define TICKSPD ((CLKCON & 0x38) >> 3)
// Macro for checking status of the crystal oscillator
#define XOSC_STABLE (SLEEP & 0x40)
// Macro for checking status of the high frequency RC oscillator.
#define HIGH_FREQUENCY_RC_OSC_STABLE (SLEEP & 0x20)
/*****************************************
//選擇主時鐘,關閉不用的時鐘
*****************************************/
#define SET_MAIN_CLOCK_SOURCE(source) \
do { \
if(source) { \
CLKCON |= 0x40; /*RC*/ \
while(!HIGH_FREQUENCY_RC_OSC_STABLE); /*待穩*/ \
SLEEP |= 0x04; /*關掉不用的*/ \
} \
else { \
SLEEP &= ~0x04; /*全開*/ \
while(!XOSC_STABLE);/*待穩*/ \
asm("NOP"); \
CLKCON &= ~0x47; /*晶振*/ \
SLEEP |= 0x04; /*關掉不用的*/ \
} \
}while (0)
/*
#define CRYSTAL 0
#define RC 1
*/
/*****************************************
//選擇低速時鐘
*****************************************/
#define SET_LOW_CLOCK_SOURCE(val) \
do{ \
CLKCON = (val)?(CLKCON|0X80):(CLKCON & ~0X80); \
}while(0)
// Where _timer_ must be either 3 or 4
// Macro for initialising timer 3 or 4
#define TIMER34_INIT(timer) \
do { \
T##timer##CTL = 0x06; \
T##timer##CCTL0 = 0x00; \
T##timer##CC0 = 0x00; \
T##timer##CCTL1 = 0x00; \
T##timer##CC1 = 0x00; \
} while (0)
//Macro for setting the clock tick for timer3 or 4
#define TIMER34_START(timer,val) \
(T##timer##CTL = (val) ? T##timer##CTL | 0X10 : T##timer##CTL&~0X10)
#define TIMER34_SET_CLOCK_DIVIDE(timer,val) \
do{ \
T##timer##CTL &= ~0XE0; \
( val==2) ? (T##timer##CTL|=0X20): /*2*/ \
(val==4) ? (T##timer##CTL|=0x40): /*4*/ \
(val==8) ? (T##timer##CTL|=0X60): \
(val==16)? (T##timer##CTL|=0x80): \
(val==32)? (T##timer##CTL|=0xa0): \
(val==64) ? (T##timer##CTL|=0xc0): \
(val==128) ? (T##timer##CTL|=0XE0): \
(T##timer##CTL|=0X00); /* 1 */ \
}while(0)
//Macro for setting the mode of timer3 or 4
#define TIMER34_SET_MODE(timer,val) \
do{ \
T##timer##CTL &= ~0X03; \
(val==1)?(T##timer##CTL|=0X01): /*DOWN */ \
(val==2)?(T##timer##CTL|=0X02): /*Modulo */ \
(val==3)?(T##timer##CTL|=0X03): /*UP / DOWN */ \
(T##timer##CTL|=0X00); /*free runing */ \
}while(0)
//Macro for enabling overflow interrupt
#define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \
(T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08)
#define SET_POWER_MODE(mode) \
do { \
if(mode == 0) { SLEEP &= ~0x03; } \
else if (mode == 3) { SLEEP |= 0x03; } \
else { SLEEP &= ~0x03; SLEEP |= mode; } \
PCON |= 0x01; \
asm("NOP"); \
}while (0)
/*****************************************
//開啟電池板上的按鍵
*****************************************/
#define USE_KEY_ON_BT() \
do{ \
P1DIR &= ~0X0C; /*按鍵在P12 P13*/\
P1INP &= ~0x0c; /*上、下拉*/ \
P2INP |= 0x40; \
}while(0)
#define K1 P1_2
#define K2 P1_3
/*****************************************
//延時程序
*****************************************/
#define DELAY(val) \
do{ \
uint jj; \
for(jj=0;jj<val;jj++); \
for(jj=0;jj<val;jj++); \
for(jj=0;jj<val;jj++); \
for(jj=0;jj<val;jj++); \
for(jj=0;jj<val;jj++); \
}while(0)
#endif //EMOT_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -