📄 st16c554d.c
字号:
#include "st16c554d.h"
/****************************************************************************/
/* 函数名称 :void StPinInit(void) */
/* 功 能 :st16c554d的pin初始化 */
/* 输入参数 :无 */
/* 输出参数 :无 */
/****************************************************************************/
void StPinInit(void)
{
DATA_DIR_OUT;
RW_DIR_OUT;
A0_DIR_OUT;
A1_DIR_OUT;
A2_DIR_OUT;
A3_DIR_OUT;
A4_DIR_OUT;
CS_DIR_OUT;
RXDTXDRDY_DIR_IN;
}
/****************************************************************************/
/* 函数名称 :void SetPort(uchar addr) */
/* 功 能 :st16c554d设置地址,通道 */
/* 输入参数 :addr:地址 */
/* 输出参数 :无 */
/****************************************************************************/
void SetPort(uchar addr)
{
if((addr & 0x01) == 0x01)
A0_H;
else
A0_L;
if((addr & 0x02) == 0x02)
A1_H;
else
A1_L;
if((addr & 0x04) == 0x04)
A2_H;
else
A2_L;
if((addr & 0x08) == 0x08)
A3_H;
else
A3_L;
if((addr & 0x10) == 0x10)
A4_H;
else
A4_L;
}
/****************************************************************************/
/* 函数名称 :uchar Read(uchar cha,uchar addr) */
/* 功 能 :读某个通道的寄存器值 */
/* 输入参数 :cha,通道,addr:地址 */
/* 输出参数 :读到的一个字节 */
/****************************************************************************/
uchar Read(uchar cha, uchar addr)
{
uchar dat;
dat = 0;
DATA_DIR_IN;
_NOP();
READ_ST;
SetPort(cha + addr); //A0~A4 地址,通道
_NOP();
CS_L;
_NOP();
_NOP();
_NOP();
dat = DATA_IN;
_NOP();
_NOP();
_NOP();
CS_H;
_NOP();
_NOP();
_NOP();
_NOP();
DATA_DIR_OUT;
_NOP();
return dat;
}
/****************************************************************************/
/* 函数名称 :void Write(uchar cha,uchar addr, uchar dat) */
/* 功 能 :写某个通道的寄存器 */
/* 输入参数 :cha,通道,addr:地址,通道 ;dat:命令 */
/* 输出参数 :无 */
/****************************************************************************/
void Write(uchar cha,uchar addr, uchar dat)
{
DATA_DIR_OUT;
WRITE_ST;
SetPort(cha + addr);
_NOP();
CS_L;
_NOP();
_NOP();
_NOP();
DATA_OUT = dat;
_NOP(); //setup
_NOP();
_NOP();
CS_H;
_NOP(); //hold
_NOP();
_NOP();
READ_ST;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
}
/****************************************************************************/
/* 函数名称 :void ComChanelInit(uchar cha) */
/* 功 能 :某个通道的寄存器初始化 */
/* 输入参数 :cha:通道 ; */
/* 输出参数 :无 */
/****************************************************************************/
void ComChanelInit(uchar cha)
{
uchar aa = 0;
////////
Write(cha, LCR_ADDR, 0x00);
Write(cha, IER_ADDR, 0x00);
////////
Write(cha, LCR_ADDR, 0x80); //bit7-1 设置特殊功能寄存器允许位
Write(cha, DLM_ADDR, 0x00);
Write(cha, DLL_ADDR, 0x0C); //晶振1。8432M,波特率9600
Write(cha, LCR_ADDR, 0x03); //8位数据位,1位停止位,无校验,no break
Write(cha, FCR_ADDR, 0x01); //FIFO使能
Write(cha, FCR_ADDR, 0x07); //FIFO使能,RCVR\XMIT FIFOreset,DMA mode0,接收trigger 1个字节
// Write(cha, FCR_ADDR, 0x00);
aa = Read (cha, ISR_ADDR);
aa = aa & 0xC0;
if(!aa)
aa = 1; //port没有使用FIFO功能,因此没有设置FIFO Enable成功
Write(cha, IER_ADDR, 0x01); //receive holding register INT
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -