📄 cfg.h
字号:
/*
项目: 人员定位:读卡器
文件: cfh.h
日期: 2007.09.12
作者: 邵子扬
说明: 定义项目的配置参数,分配管脚
*/
#ifndef _CFG_H_
#define _CFG_H_
//系统时钟频率
#define F_CPU 8000000UL
//LED
#define LED PB0
#define LEDPORT PORTB //LED端口
//Plus:控制外部放大器输出脉冲
#define Plus PB1
//nRF2401接口
#define DR1 PD3
#define CE PD5
#define CS PB2
#define MOSI PB3
#define MISO PB4
#define SCK PB5
#define SPIPORT PORTB
//使用485模式
#define RS485 1
//485控制端口和引脚
#define RS485PORT D
#define RS485TXEn PD4
//串口号: 0/1/2...
#define COMPORTNo 0
//波特率
#define BAUDRATE 9600
//计算波特率寄存器
#define BAUDREG ((unsigned int)((F_CPU * 10) / (16UL * BAUDRATE) - 5) / 10)
//收发缓冲区最大长度
#define RTBUF_MAX_SIZE 100
//最大保存卡片数
#define MAX_CARD_NO 160
//nRF2401关键配置字
//收发:1b
#define RF_RXEN 1 //1:收 0:发
//频率:7b,最大127 FREQ=2400+RF_FREQ
#define RF_FREQ 2 //0-127
//功率:2
#define RF_PWR 3 //0:-20 1:-10 2:-5 3:0
//晶体频率:3
#define RF_CRYS 3 //0:4MHz 1:8 2:12 3:16MHz 4:20
//速率:1
#define RF_BPS 0 //0:250k 1:1M
//通信模式:1
#define RF_MODE 1 //0:直接 1:ShockBurst
//双通道:1
#define RF_RX2EN 0 //0:禁止 1:使能
//使能硬件CRC:1
#define RF_CRCEN 1 //0:禁止 1:使能
//CRC8/CRC16
#define RF_CRCL 1 //0:CRC8 1:CRC16
//通道地址长度:6,最大40
#define RF_ADDRW 32 //0-40
//通道1地址:最大5字节
#define RF_ADDR10 0x78
#define RF_ADDR11 0x56
#define RF_ADDR12 0x34
#define RF_ADDR13 0x12
#define RF_ADDR14 0x00
//通道1数据长度:8
#define RF_DATAW1 16
//通道2地址:最大5字节
#define RF_ADDR20 0xCC
#define RF_ADDR21 0xCC
#define RF_ADDR22 0xCC
#define RF_ADDR23 0x1C
#define RF_ADDR24 0x00
//通道2数据长度:8
#define RF_DATAW2 8
///////////////////////////////////////////////////////
//以下不要随便修改
///////////////////////////////////////////////////////
//检查波特率误差
//下面的定义在不同的C编译器之间可能会有差异
#define FreqTemp (16UL * BAUDRATE * (((F_CPU * 10) / (16 * BAUDRATE) + 5)/ 10))
#if ((FreqTemp * 50) > (51 * F_CPU) || (FreqTemp * 50) < (49 * F_CPU))
#error "BaudRate error > 2% ! Please check BaudRate and F_CPU value."
#endif
#define True 1
#define False 0
#define TRUE 1
#define FALSE 0
//内部使用的宏定义
#define CONCAT(a, b) a ## b
#define CONCAT3(a, b, c) a ## b ## c
//端口以及位定义
#define PORTREG(No) CONCAT(PORT, No)
#define PINREG(No) CONCAT(PIN, No)
#define UDRREG(No) CONCAT(UDR, No)
#define DDRREG(No) CONCAT(DDR, No)
#define TXCBIT(No) CONCAT(TXC, No)
#define RXCBIT(No) CONCAT(RXC, No)
#define RXENBIT(No) CONCAT(RXEN, No)
#define TXENBIT(No) CONCAT(TXEN, No)
#define URSELBIT(No) CONCAT(URSEL, No)
#define RXCIEBIT(No) CONCAT(RXCIE, No)
#define TXCIEBIT(No) CONCAT(TXCIE, No)
//串口初始化需要寄存器
#define UBRRHREG(No) CONCAT3(UBRR, No, H)
#define UBRRLREG(No) CONCAT3(UBRR, No, L)
#define UCSRAREG(No) CONCAT3(UCSR, No, A)
#define UCSRBREG(No) CONCAT3(UCSR, No, B)
#define UCSRCREG(No) CONCAT3(UCSR, No, C)
#define UCSZBIT(No1, No2) CONCAT3(UCSZ, No1, No2)
//部分AVR单片机设置串口时需要使用URSEL位
#if defined(URSEL) || defined(URSEL0)
#define USEURSEL URSELBIT(COMPORTNo)
#else
#define USEURSEL 0
#endif
//定义串口0相关寄存器
#if !defined(UDR0)
#define UBRR0H UBRRH
#define UBRR0L UBRRL
#define UCSR0A UCSRA
#define UCSR0B UCSRB
#define UCSR0C UCSRC
#define UDR0 UDR
#define TXC0 TXC
#define RXC0 RXC
#define RXEN0 RXEN
#define TXEN0 TXEN
#define UCSZ01 UCSZ1
#define UCSZ00 UCSZ0
#define URSEL0 URSEL
#define RXCIE0 RXCIE
#define TXCIE0 TXCIE
#endif
#if RS485
#define RS485Enable() PORTREG(RS485PORT) |= (1 << RS485TXEn)
#define RS485Disable() PORTREG(RS485PORT) &= ~(1 << RS485TXEn)
#endif
#define DataInUart() (UCSRAREG(COMPORTNo) & (1 << RXCBIT(COMPORTNo)))
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -