• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: ST16C554  

资源简介

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


评论

共有 条评论

相关资源