📄 init.h
字号:
#ifndef INIT_H__
#define INIT_H__
#include".\Globle.h"
#define OSC_CRYSTAL 22118400 //晶振频率
#define INSTRU_CIRCLE 12 //指令周期和机器周期的关系
#define BAUND_RATE 9600 //定义波特率
#define TIMER_MAX 65536 //定时器0 1 对应模式的最大值
//定时器2作为波特率发生器的初始化值
#define TIMER2_BH (65536-(OSC_CRYSTAL/32/BAUND_RATE))/256
#define TIMER2_BL (65536-(OSC_CRYSTAL/32/BAUND_RATE))%256
//定时器1作为波特率发生器的初始化值
#define SMOD 1 //pcon.7
#if SMOD
#define TIMER1_BH (256-(OSC_CRYSTAL/BAUND_RATE/12/16))
#else
#define TIMER1_BH (256-(OSC_CRYSTAL/BAUND_RATE/12/32))
#endif
/*********************************************************************/
#define TIMER0_SET 10000 //定时的时间设置 单位uS
#define TIMER0_VALUE (TIMER_MAX-(TIMER0_SET/12)*(OSC_CRYSTAL/1000000)) //定时器设定
#define TH0_VALUE TIMER0_VALUE/256
#define TL0_VALUE TIMER0_VALUE%256
/************************************************************************/
#define TIMER1_SET 5000 //定时的时间设置 单位uS
#define TIMER1_VALUE (TIMER_MAX-(TIMER1_SET/12)*(OSC_CRYSTAL/1000000)) //定时器设定
#define TH1_VALUE TIMER1_VALUE/256
#define TL1_VALUE TIMER1_VALUE%256
/********************** Timer0 option *********************************/
#define TIMER0_GATE_ON 0x08
#define TIMER0_COUNTER_ON 0x04
#define TIMER0_MODE_0 0x00
#define TIMER0_MODE_1 0x01
#define TIMER0_MODE_2 0x02
#define TIMER0_MODE_3 0x03
/********************** Timer1 option *********************************/
#define TIMER1_GATE_ON 0x80
#define TIMER1_COUNTER_ON 0x40
#define TIMER1_MODE_0 0x00
#define TIMER1_MODE_1 0x10
#define TIMER1_MODE_2 0x20
#define TIMER1_MODE_3 0x30
/********************** Timer2 option *********************************/
#define S_RCLK 0x20 //产生接受波特率
#define S_TCLK 0x10 //产生发送波特率
#define S_EXEN2 0x08 //外部势能 选择 T2EX有负跳变时发生重载或捕捉
#define S_TR2 0x04 //T2开始运行 选择 开始运行
#define S_CT2 0x02 //T/C选择 选择 为计数器
#define S_CPRL2 0x01 //捕捉 重载选择 选择 为捕捉模式
/********************** interrupt enable option *********************************/
/*************************** IE *********************************************/
#define S_GLOBLE_ENABLE 0X80 //EA 使能
#define S_UART_ENABLE 0X10 //串口中断使能
#define S_TIMER1_ENABLE 0X08 //Timer1中断使能
#define S_EXTERN1_ENABLE 0X04 //外部中断1使能
#define S_TIMER0_ENABLE 0X02 //Timer0中断使能
#define S_EXTERN0_ENABLE 0X01 //外部中断0使能
/***************************** TCON ****************************************************/
#define S_TIMER1_RUN 0X40 //TIMER1 RUN FLAG
#define S_TIMER0_RUN 0X10 //TIMER0 RUN FLAG
#define S_EXTERN1_MODE 0X04 //外部中断1方式选择 1边沿触发 0电平触发
#define S_EXTERN0_MODE 0X01 //外部中断0方式选择 1边沿触发 0电平触发
/***************************** SCON ****************************************************/
#define S_UART_MODE0 0X00 //UART MODE 0
#define S_UART_MODE1 0X40 //UART MODE 1
#define S_UART_MODE2 0X80 //UART MODE 2
#define S_UART_MODE3 0XC0 //UART MODE 3
#define S_MULTI_COM 0X20 //多机通信
#define S_RECEIVE_EN 0X10 //enable receive
#define S_TRANSMIT_8 0X08 //发送第八位
#define S_RECEIVE_8 0X04 //接收第八位
/******************************************************************************************
** 函数名 Timer0_init
** 参数 mode 选择工作方式
** hvalue TH0的值
** lvalue TL0的值
*******************************************************************************************
** 选择项
TIMER0_GATE_ON 选择GATE方式
TIMER0_COUNTER_ON 选择COUNTER方式,如果不选为TIMER方式
TIMER0_MODE_0 方式1
TIMER0_MODE_1 方式2
TIMER0_MODE_2 方式3
TIMER0_MODE_3 方式4
*******************************************************************************************/
void Timer0_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue);
/******************************************************************************************
** 函数名 Timer1_init
** 参数 mode 选择工作方式
** hvalue TH0的值
** lvalue TL0的值
*******************************************************************************************
** 选择项
TIMER1_GATE_ON 选择GATE方式
TIMER1_COUNTER_ON 选择COUNTER方式,如果不选为TIMER方式
TIMER1_MODE_0 方式1
TIMER1_MODE_1 方式2
TIMER1_MODE_2 方式3
TIMER1_MODE_3 方式4
*******************************************************************************************/
void Timer1_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue);
/******************************************************************************************
** 函数名 Timer2_Init
** 参数 mode 选择工作方式
** hvalue TH0的值
** lvalue TL0的值
*******************************************************************************************
** 选择项
S_RCLK 0x20 //产生接受波特率
S_TCLK 0x10 //产生发送波特率
S_EXEN2 0x08 //外部势能 选择 T2EX有负跳变时发生重载或捕捉
S_TR2 0x04 //T2开始运行 选择 开始运行
S_CT2 0x02 //T/C选择 选择 为计数器
S_CPRL2 0x01 //捕捉 重载选择 选择 为捕捉模式
*******************************************************************************************/
void Timer2_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue);
/******************************************************************************************
** 函数名 Interrupt_init
** 参数 enable TCOM的值
** prio 中断优先级设置
** globle EA设置
*******************************************************************************************
** 选择项
S_TIMER1_RUN 0X40 //TIMER1 RUN FLAG
S_TIMER0_RUN 0X10 //TIMER0 RUN FLAG
S_EXTERN1_MODE 0X04 //外部中断1方式选择 1边沿触发 0电平触发
S_EXTERN0_MODE 0X01 //外部中断0方式选择 1边沿触发 0电平触发
*******************************************************************************************/
void Interrupt_init(UBYTE enable, UBYTE run);
/******************************************************************************************
** 函数名 Uart_init
** 参数 mode 方式设置
*******************************************************************************************
** 选择项
S_UART_MODE0 0X00 //UART MODE 0
S_UART_MODE1 0X40 //UART MODE 1
S_UART_MODE2 0X80 //UART MODE 2
S_UART_MODE3 0XC0 //UART MODE 3
S_MULTI_COM 0X20 //多机通信
S_RECEIVE_EN 0X10 //enable receive
S_TRANSMIT_8 0X08 //发送第八位
S_RECEIVE_8 0X04 //接收第八位
*******************************************************************************************/
void Uart_init(UBYTE mode);
void Devices_init();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -