📄 system.h
字号:
#define T1_TIME 5 //定时时间5mS
#define T1_VALUE (0x10000-(FOSC * T1_TIME/1000)) //定时计算器1基数
#define TH1_VALUE ((T1_VALUE>>8)&0x00FF) //右移八位,将T1_VALUE高八位给TH1_VALUE
#define TL1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE低八位给TL1_VALUE */
/* 工作方式2,8位自动重装定时器,晶振11.0592M,最大定时时间23uS
#define TMOD_VALUE1 0x20 //GATE=0,C/T=0,M1=1,M0=0;
#define T1_TIME 20 //定时时间20uS
#define T1_VALUE (0x100-(FOSC/100 * T1_TIME/10000)) //定时计算器1基数
#define TH1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE给TH1_VALUE
#define TL1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE给TL1_VALUE */
/*定时器1,1T模式,T1x12=1,AUXR |= T1x12;*/
/* 工作方式1,13位定时器,晶振11.0592M,最大定时时间8.88mS
#define TMOD_VALUE1 0x00 //GATE=0,C/T=0,M1=0,M0=0;
#define T1_TIME 5 //定时时间5mS
#define T1_VALUE (0x2000-(FOSC/12 * T1_TIME/1000)) //定时计算器1基数
#define TH1_VALUE ((T1_VALUE>>5)&0x00FF) //右移五位,将T1_VALUE高八位给TH1_VALUE
#define TL1_VALUE ((T1_VALUE<<3)&0x00FF) //左移三位,将T1_VALUE低五位给TL1_VALUE*/
/* 工作方式1,16位定时器,晶振11.0592M,最大定时时间71.11mS
#define TMOD_VALUE1 0x10 //GATE=0,C/T=0,M1=0,M0=1;
#define T1_TIME 50 //定时时间50mS
#define T1_VALUE (0x10000-(FOSC/12 * T1_TIME/1000)) //定时计算器1基数
#define TH1_VALUE ((T1_VALUE>>8)&0x00FF) //右移八位,将T1_VALUE高八位给TH1_VALUE
#define TL1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE低八位给TL1_VALUE */
/* 工作方式2,8位自动重装定时器,晶振11.0592M,最大定时时间276uS
#define TMOD_VALUE1 0x20 //GATE=0,C/T=0,M1=1,M0=0;
#define T1_TIME 250 //定时时间250uS
#define T1_VALUE (0x100-(FOSC/1200 * T1_TIME/10000)) //定时计算器1基数
#define TH1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE给TH1_VALUE
#define TL1_VALUE (T1_VALUE&0x00FF) //将T1_VALUE给TL1_VALUE */
/*串口,12T模式,UART0_M0x6=0,AUXR &= 0xDF;*/
/*定时器1作波特率发生器,波特率不倍增,晶振11.0592M,最大波特率28800
#define PCON_VALUE 0x7F //PCON &=0x7F; //波特率不倍增
#define SCON_VALUE 0x50 //八位可变波特率,无奇偶校验,接收使能
//#define SCON_VALUE 0x40 //八位可变波特率,无奇偶校验,接收禁止
#define TMOD_VALUE 0x20 //定时器1,8位自动重装
#define T1_bps 9600 //波特率9600
#define TH1_VALUE (0x100-(FOSC/32/12/T1_bps)) //TH1装初值
#define TL1_VALUE (0x100-(FOSC/32/12/T1_bps)) //TL1装初值 */
/*定时器1作波特率发生器,波特率倍增,晶振11.0592M,最大波特率57600 */
#define PCON_VALUE 0x80 //PCON |=0x80; //波特率倍增
#define SCON_VALUE 0x50 //八位可变波特率,无奇偶校验,接收使能
//#define SCON_VALUE 0x40 //八位可变波特率,无奇偶校验,接收禁止
#define TMOD_VALUE 0x20 //定时器1,8位自动重装
#define T1_bps 4800 //波特率4800
#define TH1_VALUE (0x100-(FOSC * 2/32/12/T1_bps)) //TH1装初值
#define TL1_VALUE (0x100-(FOSC * 2/32/12/T1_bps)) //TL1装初值
/*串口,1T模式,T1x12=1,AUXR |= T1x12;*/
/*定时器1作波特率发生器,波特率不倍增,晶振11.0592M,最大波特率345600
#define PCON_VALUE 0x7F //PCON &=0x7F; //波特率不倍增
#define SCON_VALUE 0x50 //八位可变波特率,无奇偶校验,接收使能
//#define SCON_VALUE 0x40 //八位可变波特率,无奇偶校验,接收禁止
#define TMOD_VALUE 0x20 //定时器1,8位自动重装
#define T1_bps 9600 //波特率9600
#define TH1_VALUE (0x100-(FOSC/32/T1_bps)) //TH1装初值
#define TL1_VALUE (0x100-(FOSC/32/T1_bps)) //TL1装初值 */
/*定时器1作波特率发生器,波特率倍增,晶振11.0592M,最大波特率691200
#define PCON_VALUE 0x80 //PCON |=0x80; //波特率倍增
#define SCON_VALUE 0x50 //八位可变波特率,无奇偶校验,接收使能
//#define SCON_VALUE 0x40 //八位可变波特率,无奇偶校验,接收禁止
#define TMOD_VALUE 0x20 //定时器1,8位自动重装
#define T1_bps 9600 //波特率9600
#define TH1_VALUE (0x100-(FOSC * 2/32/T1_bps)) //TH1装初值
#define TL1_VALUE (0x100-(FOSC * 2/32/T1_bps)) //TL1装初值 */
/*PCA模块0 */
#define CMOD_VALUE 0x00 //PCA记数脉冲选择,0:Fosc/12;2:Fosc/2;
//4:定时器0溢出率;6:P3.4脚外部时钟输入(最大Fosc/2);
#define CCAPM0_VALUE 0x49 //PCA模块0工作模式
#define CCAPM1_VALUE 0x00 //PCA模块1工作模式
//0x00:无操作;0x21:上升沿捕获;0x11:下降沿捕获;0x31:CEXn跳变捕获;0x49:定时器;0x4D:高速输出;0x42:PWM;
// 0x20:关中断 0x10:关中断 0x30:关中断 0x48:关中断;0x4C:关中断;
/*PCA定时模式,CCAPMn = 0x49; PCA高速输出模式,CCAPMn = 0x4D;CCAPMn = 0x4C; */
#define CH_VALUE 0x00 //定时记数初值
#define CL_VALUE 0x00 //定时记数初值
#define PCA_FOSC (FOSC/12) //PCA记数时钟Fosc/12,晶振11.0592M,最大定时时间71.11mS
//#define PCA_FOSC Fosc/2 //PCA记数时钟Fosc/2,晶振11.0592M,最大定时时间11.85C
//#define PCA_FOSC 5000 //PCA记数时钟定时器0溢出率,晶振11.0592M,定时时间mS到mS
//#define PCA_FOSC 5000 //PCA记数时钟P3.4脚外部时钟输入(最大Fosc/2),最大定时时间mS
#define PCAM0_TIME 50 //PCA模块0定时模式定时时间50mS
#define CCAP0_VALUE (PCA_FOSC*PCAM0_TIME/1000) //PCA模块0定时模式定时基数
#define CCAP0H_VALUE ((CCAP0_VALUE>>8)&0x00FF) //右移八位,将CCAP0_VALUE高八位给CCAP0H_VALUE
#define CCAP0L_VALUE (CCAP0_VALUE&0x00FF) //将CCAP0_VALUE低八位给CCAP0L_VALUE
#define PCAM1_TIME 50 //PCA模块1定时模式定时时间50mS
#define CCAP1_VALUE (PCA_FOSC*PCAM1_TIME/1000) //PCA模块1定时模式定时基数
#define CCAP1H_VALUE ((CCAP1_VALUE>>8)&0x00FF) //右移八位,将CCAP1_VALUE高八位给CCAP1H_VALUE
#define CCAP1L_VALUE (CCAP1_VALUE&0x00FF) //将CCAP1_VALUE低八位给CCAP1L_VALUE
/*PCA溢出定时模式,CCAPMn = 0x00,CMOD |= ECF;PCA记数溢出中断使能
#define PCA_FOSC (FOSC/12) //PCA记数时钟Fosc/12,晶振11.0592M,最大定时时间71.11mS
//#define PCA_FOSC Fosc/2 //PCA记数时钟Fosc/2,晶振11.0592M,最大定时时间11.85C
//#define PCA_FOSC 5000 //PCA记数时钟定时器0溢出率,晶振11.0592M,定时时间mS到mS
//#define PCA_FOSC 5000 //PCA记数时钟P3.4脚外部时钟输入(最大Fosc/2),最大定时时间mS
#define PCA_TIME 50 //PCA模块0定时模式定时时间50mS
#define C_VALUE (0x10000 - (PCA_FOSC*PCA_TIME/1000)) //PCA溢出定时模式定时基数
#define CH_VALUE ((C_VALUE>>8)&0x00FF) //定时记数初值
#define CL_VALUE (C_VALUE&0x00FF) //定时记数初值 */
/*PCA PWM模式,CCAPMn = 0x42,
#define PWM_DC 50 //占空比
#define CL_VALUE 0x00
#define CCAP0H_VALUE (0x100 - (0x100*PWM_DC/100)) //
#define CCAP0L_VALUE CCAP0H_VALUE //
#define CCAP1H_VALUE (0x100 - (0x100*PWM_DC/100)) //
#define CCAP1L_VALUE CCAP1H_VALUE // */
/* SPI
sbit SPICLK = P1^7;
sbit MISO = P1^6;
sbit MOSI = P1^5;
sbit SS = P1^4; */
//#define MASTER 1 //编译后的程序下载到主单片机中
//#define MASTER 0 //编译后的程序下载到从单片机中
//#define SPCTL_VALUE 0xFF
/*#ifdef MASTER
#define SPCTL_VALUE 0xFC //SSIG=1:忽略SS脚
//SPEN=1:允许SPI工作
//DORD=1:先传低位LSB
//MSTR=1:设为主机
//CPOL=1:SPI空闲模式为1,
//CPHA=1:数据由SPICLK前跳变沿驱动到SPI口线,SPI模块在后跳变沿采集数据
//SPR1,SPR0=00:主模式时SPI时钟源选择为FOSC/4
#else
#define SPCTL_VALUE 0xEC //SSIG=1:忽略SS脚
//SPEN=1:允许SPI工作
//DORD=1:先传低位LSB
//MSTR=0:设为从机
//CPOL=1:SPI空闲模式为1,
//CPHA=1:数据由SPICLK前跳变沿驱动到SPI口线,SPI模块在后跳变沿采集数据
//SPR1,SPR0=00:主模式时SPI时钟源选择为FOSC/4
#endif */
/***********************************************************************************
函数名称:uart_send_byte()
功能:串口发送函数
函数参数:udata:发送的数据
***********************************************************************************/
void uart_send_byte(UINT8 udata);
/***********************************************************************************
函数名称:uart_send()
功能:串口发送函数
函数参数:*send_buf:发送的数据
***********************************************************************************/
void uart_send(UINT8 *send_buf);
/***********************************************************************************
函数名称:uart_send1()
功能:串口发送函数
函数参数:*send_buf:发送的数据
n:数据个数
***********************************************************************************/
void uart_send1(UINT8 *send_buf,UINT8 n);
/***********************************************************************************
函数名称:sys_init()
功能描述:系统初始化子程序
参 数:无
***********************************************************************************/
void sys_init(void);
void read_head(void);
void decode_data();
/***********************************************************************************
函数名称:putbytespi()
功能描述:发送一个字节数据子程序
参 数:udata
调用之前最好检测MCLK是否为0(对方是否申请数据通讯)
***********************************************************************************/
bit putbytespi(UINT8 udata);
/***********************************************************************************
函数名称:putspi()
功能描述:发送N个字节数据子程序
参 数:*buf,n
调用之前最好检测MCLK是否为0(对方是否申请数据通讯)
***********************************************************************************/
bit putspi(UINT8 *buf,UINT8 n);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -