⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.h

📁 125K曼彻斯特编码的只读ID卡读头程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -