📄 header.h
字号:
#include "e:\keil c51\c51\inc\atmel\at898252.h"
#ifndef OS_Q_MEM_SEL
#define OS_Q_MEM_SEL idata
#endif
sbit TX00 = P0^0;
sbit RX01 = P0^1;
sbit INIT02 = P0^2;
sbit UART03 = P0^3;
sbit CS = P1^0;
sbit CE = P1^1;
sbit PWR_UP = P1^2;
sbit TXEN = P1^3;
sbit TRI_STA20 = P2^0;
sbit EN_3STA = P2^1;
sbit SCH22 = P2^2;
sbit EN_SCH = P2^3;
sbit RIGHT = P2^4;
sbit WRONG = P2^5;
// 凡是宏定义,前面均加有下划线以示与变量的区别
// 这几个宏定义是程序中所使用的一些常量
#define _DataWidth 0x02 // 长度为2个字节
#define _AddrWidth 0x04 // 长度为4个字节
#define _MaxTimes 0x04 // 最大重传次数
#define _RIGHT 0X01
#define _ERROR 0X00
#define _Tx_Word 0x04
#define _Rx_Word 0x05
#define _ControlFrame 0xc0
#define _DataFrame 0x00
#define _END 0x0d // 回车符号
#define _STARTBYTE1 0xf0 // PC--->MCU的帧头标志
#define _STARTBYTE2 0x0f
#define _CtrlDataFlag 0x80
#define _AckState 0x60
#define _NewFrame 0x10
#define _LastFrame 0x08
#define _FrameSequence 0x07
#define _ReSendThisFrame 0
#define _ReSendLastFrame 1
#define _SendNextFrame 2
#define _SendComplete 3
#define _ThisFrameHasReceived 0
#define _ReceivedANewFrame 1
#define _AllFramesHasReceived 2
#define _LostAtLeastOneFrame 3
#define _ParameterError 4
// 以下宏定义暂未使用,留待扩展
#define _TransData 0x00
#define _TransAck 0x01
#define _PCAsk 0x05
#define _PCSendEnd 0x0d // 回车符号表示PC发送完成
#define _AskSelfAddr 0x10
#define _Admit 0x55
#define _RequireErr 0x60
#define _DataAckErr 0x70
#define _TransOK 0x80
#define _TXD 0x88
#define _ReqFrame 0xa3
#define _Agree 0xac
#define _500US 0
#define _1MS 1
#define _3MS 2
#define _5MS 3
#define _10MS 4
#define _Spi_RX 0
#define _Spi_TX 1
#define _F_Ctrl 1
#define _F_Data 0
/* CE下跳沿后195us,2401把数据发射出去 */
#define _2401_START_TX PWR_UP=1; CS=0; CE=0; Delay(_5MS)
/* 启动SPI传输 */
#define _TX_SPI(para) OS_ENTER_CRITICAL();SPDR=(para);while(!(SPSR&0x80));OS_EXIT_CRITICAL()
#define _RX_SPI(para) OS_ENTER_CRITICAL();SPDR=0xff;while(!(SPSR&0x80));(para)=SPDR;OS_EXIT_CRITICAL()
/* 等待SPI传输结束 */
#define _WAIT_SPI OS_ENTER_CRITICAL();SPDR=0xcc;while(!(SPSR&0x80));OS_EXIT_CRITICAL()
/* 查询方式,等待TIMER0计数结束 */
#define _WAIT_TIMER0 TF0=0; TR0=1; while(!TF0); TR0=0; TF0=0
/* 启动TIMER1 */
#define _START_TIMER1 TR1=1
/* 启动Timer2 */
#define _START_SYS_TIMER TR2=1
/* 开关3-STATE的小灯 */
#define _TURN_ON_3STA EN_3STA=1;TRI_STA20=0
#define _TURN_OFF_3STA TRI_STA20=1
/* 开关SCHMIDIT的小灯 */
#define _TURN_ON_SCH EN_SCH=0; SCH22=0
#define _TURN_OFF_SCH SCH22=1
/* 开关指示灯TX00*/
#define _TURN_ON_TX TX00=0
#define _TURN_OFF_TX TX00=1
/* 开关指示灯RX01 */
#define _TURN_ON_RX RX01=0
#define _TURN_OFF_RX RX01=1
/* 开关指示灯INIT02 */
#define _TURN_ON_INIT INIT02=0
#define _TURN_OFF_INIT INIT02=1
/* 开关指示灯UART03 */
#define _TURN_ON_UART UART03=0
#define _TURN_OFF_UART UART03=1
/* 开关指示灯LED24 */
#define _TURN_ON_RIGHT RIGHT=0
#define _TURN_OFF_RIGHT RIGHT=1
/* 开关指示灯LED25 */
#define _TURN_ON_WRONG WRONG=0
#define _TURN_OFF_WRONG WRONG=1
/* 总体中断使能位 */
#define _EN_INT EA=1
#define _DIS_INT EA=0
/* UART中断使能 */
#define _EN_UART_INT ES=1
#define _DIS_UART_INT ES=0
/* INT0中断使能 */
#define _EN_INT0_INT EX0=1; IT0=1; INT0=1; IE0=0
#define _DIS_INT0_INT EX0=0; IE0=0
/* INT1中断使能(Aviable At Negative Edge And Ready For Input) */
#define _EN_INT1_INT EX1=1; IT1=1; INT1=1; IE1=0
#define _DIS_INT1_INT EX1=0; IE1=0
/* TIMER0中断使能 */
#define _EN_TIMER0_INT TF0=0; ET0=1
#define _DIS_TIMER0_INT TF0=0; ET0=0
/* TIMER1中断使能 */
#define _EN_TIMER1_INT ET1=1
#define _DIS_TIMER1_INT ET1=0
/* TIMER2中断使能 */
#define _EN_TIMER2_INT ET2=1
#define _DIS_TIMER2_INT ET2=0
/* 设置中断优先级 */
#define _SET_INT_PRI(para) (para)=1
/* 设置SPI为SPCR=0x53=01010011,主控方式, 开放SPI,关SPI中断,
从MSB到LSB,正脉冲前沿,128分频(FCLK=CK/128) */
#define _SET_SPI_TX SPCR=0x53
/* 设置SPI为SPCR=0x57=01010111,主控方式, 开放SPI,关SPI中断,
从MSB到LSB,正脉冲后沿,128分频(FCLK=CK/128) */
#define _SET_SPI_RX SPCR=0x57
extern volatile bit SerialCanSend;
extern volatile unsigned char data SelfAddr,DesAddr,SourAddr,ReceAddr;
extern volatile unsigned char idata DataCnt,AddressCnt;
extern volatile unsigned char idata FrameType;
extern unsigned char OS_Q_MEM_SEL SerialInBuf[];
extern unsigned char OS_Q_MEM_SEL ReceDataBuf[];
extern unsigned char OS_Q_MEM_SEL AckInBuf[];
extern unsigned char data SendData[];
extern unsigned char code Rxconfig_Word[];
extern void Power_Down(void);
extern void Stand_By(void);
extern void Config_Word(void);
extern void Init_System(void);
extern void Delay(unsigned char) ;
extern void PutChar(unsigned char);
extern void ChangeState(unsigned char);
extern unsigned char Dispose(unsigned char);
extern void Transmit(unsigned char,unsigned char (*), unsigned char);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -