这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » put,char put_char() 可不可这样写

共2条 1/1 1 跳转至

put,char put_char() 可不可这样写

院士
2006-09-17 18:14:16     打赏
put,char put_char() 可不可这样写



关键词: 不可     这样    

院士
2006-12-22 22:43:00     打赏
2楼
问 void put_char(unsigned char c)
{
    while((U0LSR & 0x20) == 0);
    U0THR = c;
}

当FIFO未满时, 是否这样没有等待, 也不必等待发送完成?






光盘中的查询发送是这样的

/*
**********************************************************
** 函数名称 :UART0_SendByte()
** 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。
** 入口参数 :dat    要发送的数据
** 出口参数 :无
**********************************************************
*/

void UART0_SendByte (uint8 dat)
{
    U0THR = dat;
    while ((U0LSR & 0x40) == 0);   // 等待数据发送完毕
}

/////////////////////////////////////////////////////////////

发送保持寄存器空(THRE)

0:U1THR 包含有效数据
1:U1THR 空

当检测到 U1THR 空时,THRE 置位,U1THR 写操作清零该位。


发送器空(TEMT)

0:U1THR 和/或 U1TSR 包含有效数据
1:U1THR 和 U1TSR 空

当 THR 和 TSR 都为空时,TEMT 置位。
当 U1TSR 或 U1THR 包含有效数据时,TEMT清零。

//////////////////////////////////////////////////////////

请问检查 THRE 和 TEMT 有不同吗,
或者说 THRE 置位后写 THR ,  
会不会丢失数据?

在什么情况下写 THR 会丢数据(被忽略或覆盖原有数据)?

请指教。
谢谢! 1: 哎,就是一个调试函数,正式使用,谁这样用呀?全用中断了

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]