📄 para.c
字号:
// *******************************************************************
//Website: http://wch.cn
//Email: tech@wch.cn
//Author: W.ch 2007.6
// *******************************************************************
/* CH432芯片 硬件标准8位并口连接的硬件抽象层 V1.0 */
/* 提供I/O接口子程序,提供寄存器级读写子程序 */
/* 本例中的硬件连接方式如下(实际应用电路可以参照修改下述定义及子程序) */
/* 单片机的引脚 CH432芯片的引脚
P0.0 A0
P0.1 A1
P0.2 A2
P0.3 A3
Y6 CS# /* 片选输入引脚
VCC CS1 片选输入引脚 */
/**************************并口直接地址方式***********************
定义CH432 寄存器基址
**************************************************************************/
#define addr 0xE000 /* 根据硬件地址修改 */
/**************************************************************************
定义CH432串口0的寄存器地址
**************************************************************************/
#define CH432_RBR_PORT ( addr + REG_RBR_ADDR ) /* 假定CH432接收缓冲寄存器0的I/O地址 */
#define CH432_THR_PORT ( addr + REG_THR_ADDR ) /* 假定CH432发送保持寄存器0的I/O地址 */
#define CH432_IER_PORT ( addr + REG_IER_ADDR ) /* 假定CH432中断使能寄存器0的I/O地址*/
#define CH432_IIR_PORT ( addr + REG_IIR_ADDR ) /* 假定CH432中断识别寄存器0的I/O地址 */
#define CH432_FCR_PORT ( addr + REG_FCR_ADDR ) /* 假定CH432FIFO控制寄存器0的I/O地址 */
#define CH432_LCR_PORT ( addr + REG_LCR_ADDR ) /* 假定CH432线路控制寄存器0的I/O地址 */
#define CH432_MCR_PORT ( addr + REG_MCR_ADDR ) /* 假定CH432MODEM控制寄存器0的I/O地址 */
#define CH432_LSR_PORT ( addr + REG_LSR_ADDR ) /* 假定CH432线路状态寄存器0的I/O地址 */
#define CH432_MSR_PORT ( addr + REG_MSR_ADDR ) /* 假定CH432MODEM状态寄存器0的I/O地址 */
#define CH432_SCR_PORT ( addr + REG_SCR_ADDR ) /* 假定CH432用户可定义寄存器0的I/O地址 */
#define CH432_DLL_PORT ( addr + REG_DLL_ADDR ) /* 假定CH432波特率除数锁存器0低8位I/O地址 */
#define CH432_DLM_PORT ( addr + REG_DLM_ADDR ) /* 假定CH432波特率除数锁存器0高8位I/O地址 */
/**************************************************************************
定义CH432串口1的寄存器地址
**************************************************************************/
#define CH432_RBR1_PORT ( addr + REG_RBR1_ADDR ) /* 假定CH432接收缓冲寄存器1的I/O地址 */
#define CH432_THR1_PORT ( addr + REG_THR1_ADDR ) /* 假定CH432发送保持寄存器1的I/O地址 */
#define CH432_IER1_PORT ( addr + REG_IER1_ADDR ) /* 假定CH432中断使能寄存器1的I/O地址 */
#define CH432_IIR1_PORT ( addr + REG_IIR1_ADDR ) /* 假定CH432中断识别寄存器1的I/O地址 */
#define CH432_FCR1_PORT ( addr + REG_FCR1_ADDR ) /* 假定CH432FIFO控制寄存器1的I/O地址 */
#define CH432_LCR1_PORT ( addr + REG_LCR1_ADDR ) /* 假定CH432线路控制寄存器1的I/O地址 */
#define CH432_MCR1_PORT ( addr + REG_MCR1_ADDR ) /* 假定CH432MODEM控制寄存器1的I/O地址 */
#define CH432_LSR1_PORT ( addr + REG_LSR1_ADDR ) /* 假定CH432线路状态寄存器1的I/O地址 */
#define CH432_MSR1_PORT ( addr + REG_MSR1_ADDR ) /* 假定CH432MODEM状态寄存器1的I/O地址 */
#define CH432_SCR1_PORT ( addr + REG_SCR1_ADDR ) /* 假定CH432用户可定义寄存器1的I/O地址 */
#define CH432_DLL1_PORT ( addr + REG_DLL1_ADDR ) /* 假定CH432波特率除数锁存器1低8位I/O地址 */
#define CH432_DLM1_PORT ( addr + REG_DLM1_ADDR ) /* 假定CH432波特率除数锁存器1高8位I/O地址 */
/* 向指定寄存器写数据 */
void WriteCH432Data( UINT32 mAddr, UINT8 dat )
{
*( UINT8 xdata * ) mAddr = dat;
}
/* 从指定寄存器读数据 */
UINT8 ReadCH432Data( UINT32 mAddr )
{
return( *( UINT8 xdata * ) mAddr );
}
void WriteCH432Block( UINT32 mAddr, UINT8 mLen, PUINT8 mBuf ) /* 向指定起始地址写入数据块 */
{
while ( mLen -- ) WriteCH432Data( mAddr, *mBuf++ );
}
void CH432_PORT_INIT( ) /* 标准并口不需要初始化 */
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -