在线时间130 小时
UID2106909
注册时间2014-7-2
NXP金币0
该用户从未签到
高级会员

- 积分
- 747
- 最后登录
- 2023-5-24
|

楼主 |
发表于 2015-7-22 09:42:00
|
显示全部楼层
void SCI_INIT(void) {
SCI1BD =8000000/16/scibandrate;
SCI1C1=0x00;
SCI1C2=0x2C;//使能接受中断
}
UINT8 SCI1_TxMsg(UINT8 *pTxMsg,UINT16 length)
{
SCI1_TxMsgLength = length;
FLAG_SCI1_TX_COMPLETE = 0;
if(pTxMsg == NULL)
return FALSE;
else
{
memcpy(Tx_Buffer,pTxMsg,length); //copy the message to transmit buffer
SCI1TXON; //sci1 transmit enable
SCI1TIE; //transmit register buffer empty interrupt enable
//SCI1D = Tx_Buffer[0]; //sending first byte
return TRUE;
}
}
interrupt void isr_SCI1tx(void)
{
static UINT16 SCI1_TxMsgIndex = 0;
if(SCI1_TxMsgIndex < (SCI1_TxMsgLength))
{
SCI1S1;
SCI1D = Tx_Buffer[SCI1_TxMsgIndex];
SCI1_TxMsgIndex++;
}
else
{
SCI1TXOFF; //transmit function off
SCI1TID; //transmit interrupt disable
SCI1TCID;
SCI1_TxMsgIndex = 0; //transmit message index reset to 0
FLAG_SCI1_TX_COMPLETE = 1; //transmit complete flag set
if(NULL != SCI1TxCmptEvent)
{
(*SCI1TxCmptEvent)();
}
}
}
interrupt void isr_SCI1rx(void)
{
UINT8 temp = 0;
SCI1S1; //clear RDRF flag
temp = SCI1D;
}
|
|