自己写的查询法发送数据代码如下:分析一下代码有没有错误?
/*************发送一个字节*********/
void Send_Char(unsigned char Ch) //发送一个字节
{
TXBUF0=Ch;
while(!(IFG1&UTXIFG0)); //等待发送完毕 !(IFG1&UTXIFG0)为0发送未完成 当!(IFG1&UTXIFG0)为1
IFG1&=~UTXIFG0; //发送标志位清零
}
/**********发送一组字符串*********/
void Send_String(unsigned char *String) //发送一组字符串
{
uchar *P;
P=String;
while(*P!=' ')
{
Send_Char(*P);
P++;
}
}
现在想采用中断的方式发送数据,不知道怎么发送,什么时候发送,发送标志如何产生,一头水雾不知道怎么解决 希望贴友们的大力指导。
此帖出自
小平头技术问答
发送的时候,把数据放入队列内,然后开发送中断。
队列为空的时候,关中断。
最重要的一点就是要防止变量的写冲突,在写某些共享的变量时要关中断。
我可不可以这样理解现在接收到一组数据,把接收到的数据装到一个数组里面,把这个数组里面的数据看成一个队列,可不可以在中断里面这样写
IE1|=UTXIE0; //发送中断使能
/*#pragma vector=UART0TX_VECTOR
__interrupt void USART0_TXITQ(void)
{
TXBUF0=Rebuf[ReLenth];
ReLenth++;
}
像那么个意思,但是不是简简单单几行代码就能搞定的。
程序一开始运行发送中断使能打开,进入中断因为没有要发的东西有跳出来了,此时标志位UTXIFG0为0,下次进中断的时候要不要再把标志位UTXIFG0=1呢,如果不置为1还会不会进入中断呢?可不可以把这个标志放到发送函数里面,来控制中断的发送?
一周热门 更多>