资源简介
ST16C554 初始化、通信和通过串口收发数据
代码片段和文件信息
//------------------------------------------------------------------------
#include /* I/O Functions */
#include /* S3C44B0X definitions */
#include “option.H“
#include “ST16C554.H“
//--------------------------------------------------------------------------------------------------
TCommHandle exCom[PORT_NUM];
//---------------------------------------------------------------------------------------------------
// Define Private Faction
//-----------------------------------------------------------------------------------------------------
int ReadPortRecBuf(uchar Portuchar *Byte);
int WritePortSendBuf(uchar Portuchar Byte);
//void Port_open(uchar PortIDushort Baud);
//-------------------------------------------------------------------------
// Define Public Faction
//-------------------------------------------------------------------------
void Init_16c554(void);
void OpenEcom(uchar PortIDushort Bauduchar ucLCRuchar ucType);
//void Port_open(Uchar PortIDint BaudUchar DataBitNumUchar ParitUchar Stop);
void CloseEcom(uchar PortID);
int EcomRece(uchar Portuchar *Bufferint Count);
int EcomSend(uchar Portuchar *Bufferint Count);
//---------------------------------------------------------------------------------------------
// 初始化ST16C554
//---------------------------------------------------------------------------------------------
void Init_16c554(void)
{
// uchar xdata *ptr;
uchar i;
// bool Result=false;
//16C554 复位时间要求最少1us
pPIO->PDATE|=0x20;
wait(1);
pPIO->PDATE&=(~0x20);
//板上顺序刚好相反,所以序号换过来
// for(i=0;i for(i=0;i exCom[i].base_addr=(unsigned char *)(EXT_PORT_base+ i*0x08);
}
//---------------------------------------------------------------------------------------------
// 打开串口
//
// ucType: 串口用作的类型,232时不用处理,485时要使能485芯片
//---------------------------------------------------------------------------------------------
void OpenEcom(uchar PortIDushort Bauduchar ucLCRuchar ucType)
{
volatile unsigned char *ptr;
// PortID--; //传入时是1~8,这里使用必须是0~7
PortID = 8- PortID; //因为定义1-8的顺序倒过来,现在用8减
ptr = exCom[PortID].base_addr; // 取端口的基地址
*(ptr+LCR) = LCR_DIV_EN; // 允许发送波特率
*(ptr+DLM) = (uchar)(Baud>>8);
*(ptr+DLL) = (uchar)Baud; // 设置默任波特率
// *(ptr+LCR) = LCR_WORD_LEN8|LCR_STOP_LEN1; // 设置字长为8,1个停止位,无校验位
*(ptr+LCR) = ucLCR; // 按预设置值
*(ptr+FCR) = EX_FIFO_EN|EX_FIFO_TRI_LEVEL_1|EX_FIFO_CLEAR_RCVR
|EX_FIFO_CLEAR_XMIT; // 设置FIFO 控制寄存器
*(ptr+IER) = IER_RECEIVEHOLD_INT; //打开串口时只开接收中断
*(ptr+MCR) = MCR_INTX_EN; // 允许中断引脚输出
// if(ucType != CT_232)
switch(ucType)
{
case CT_232: //不用设置,用芯片默认的两个输出
break;
case CT_485: //半双工
//mark for test 2010.08.31
// *(ptr+MCR) = ((*(ptr+MCR)) | 0x03); //DTR 输出0,允许485接收并阻止发送
*(ptr+MCR) = ((*(ptr+MCR)) | 0x03); //DTR 输出0,
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13151 2012-01-11 13:16 ST16C554_1.c
----------- --------- ---------- ----- ----
13151 1
评论
共有 条评论