📄 c8051f020.h
字号:
#include "C8051F020.inc"
#define SYSTEM_CLK 11059200
#define TRUE 1
#define FALSE 0
//--------------------------------------------------------------------------------------------------------
//24MHZ
void Oscillator_Init();
void Port_IO_Init(void);
//打开int0中断
//px :1.高级中断 0低级中断
//it :1.下降沿中断 0.低电平中断
#define OpenInt0(px,it) XBR2|=0X40;XBR1|=0x04;EX0=1;PX0=px;IT0=it;
//关闭int0
#define CloseInt0() EX0=0;
//打开int0中断
//px :1.高级中断 0低级中断
//it :1.下降沿中断 0.低电平中断
#define OpenInt1(px,it) XBR2|=0X40;XBR1|=0x10;EX1=1;PX1=px;IT1=it;
//关闭int0
#define CloseInt1() EX1=0;
//C8051F020 看门狗的设置
//sw == 0时关闭看门狗 sw!= 0时打开并重置
extern bit SYSTEM_TEMP_BIT;
#define WatchDog(sw) if (sw!=0){WDTCN = 0xff;WDTCN = 0xa5;}else{SYSTEM_TEMP_BIT=EA;EA=0;WDTCN = 0xde;WDTCN = 0xad;EA=SYSTEM_TEMP_BIT;}
void ADC_Init();
//端口初始化
void Port_IO_Init();
//外部总线初始化
void ExtBus_Init();
//ADC2初始化8位
void ADC2_Init();
//ADC2放大倍数设置
//num=0:0.5倍;num=1:1倍;num=2:2倍;num=3:4倍
#define ADC2_SetupMul(mul) ADC2CF&=0XF8;ADC2CF|=(mul&0x07)
//ADC2线路选择
//输入参数 0-7 选择8路通道
#define ADC2_SelLine(val) AMX2SL = val;
//读取ADC2转换结果
unsigned char ADC2_Read(void);
//定时器3
//clk是定时器中断的频率
#define T3Stup(clk) TMR3RLH = ((0xffff-(SYSTEM_CLK/clk))+1)/0x100;\
TMR3RLL = ((0xffff-(SYSTEM_CLK/clk))+1)%0x100;\
TMR3CN = 0X06;\
EIE2 |= 0x01;\
EA=1;
void DAC_Init();
void ADC0_Init();
//------------------------------------------------------------------------------------------------------------
//串口0
#define UART0SetSM2() SM20=1 //多机通讯时设置为 地址接收
#define UART0ClrSM2() SM20=0 //多机通讯时设置为 数据接收
#define UART0SetTB8() TB80=1 //多机通讯时设置为 地址发送
#define UART0ClrTB8() TB80=0 //多机通讯时设置为 数据发送
#define UART0SetRI() RI0=1 //置位RI
#define UART0ClrRI() RI0=0 //清除RI
#define UART0GetRI() RI0 //获取RI
#define UART0SetTI() TI0=1 //置位RI
#define UART0ClrTI() TI0=0 //清除RI
#define UART0GetTI() TI0 //获取RI
#define UART0SEND(val) SBUF0 = val //UART0数据发送
//设置串口
//bps 波特率
//dataBits 数据位8或9
#define UART0SETUP(bps,dataBits) \
CKCON&=0XeF;\
PCON&=0x7f;\
RCAP2H=(65535-(SYSTEM_CLK/32/bps)+1)/0X100;\
RCAP2L=(65535-(SYSTEM_CLK/32/bps)+1)%0X100;\
T2CON=0x34;SCON0=(0x50|(0x01<<(dataBits-2)));\
P0MDOUT|=0X01;P0MDOUT&=0Xfd;\
XBR0|=0X04;XBR2|=0X40;
//开串口中断
#define UART0ENABLE() ES0=1
//关串口中断
#define UART0DISABLE() ES0=0
//------------------------------------------------------------------------------------------------------------
//串口1
#define UART1SetSM2() SCON1|=0x40 //多机通讯时设置为 地址接收
#define UART1ClrSM2() SCON1&=(~0x40) //多机通讯时设置为 数据接收
#define UART1SetTB8() SCON1|=0x08 //多机通讯时设置为 地址发送
#define UART1ClrTB8() SCON1&=(~0x08) //多机通讯时设置为 数据发送
#define UART1SetRI() SCON1|=0x01//置位RI
#define UART1ClrRI() SCON1&=(~0x01)//清除RI
#define UART1GetRI() (SCON1&0x01)//获取RI
#define UART1SetTI() SCON1|=0x02//置位TI
#define UART1ClrTI() SCON1&=(~0x02)//清除TI
#define UART1GetTI() (SCON1&0x02)//获取TI
#define UART1SEND(val) SBUF1 = val //UART1数据发送
//设置串口
//bps 波特率
//dataBits 数据位8或9
#define UART1SETUP(bps,dataBits) \
CKCON&=0XBF;\
PCON&=0xE7;\
RCAP4H=(65535-(SYSTEM_CLK/32/bps)+1)/0X100;\
RCAP4L=(65535-(SYSTEM_CLK/32/bps)+1)%0X100;\
T4CON=0x34;SCON1=(0x50|(0x01<<(dataBits-2)));\
P0MDOUT|=0X04;P0MDOUT&=0Xf7;\
XBR2|=0X44;
//开串口中断
#define UART1ENABLE() EIE2|=(0x01<<6)
//关串口中断
#define UART1DISABLE() EIE2&=~(0x01<<6)
//--------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -