PIC单片机用SPI 发送数据出现乱码问题

dabuyang 2009-05-19 07:35:50

用的PIC单片机,
采用在定时器中断里面发送数据,
如果当前发送的数据块和下一个将要发送的数据块的时间间隔的间隔很短的话(10秒以内),不会出现乱码
只要时间间隔稍微长点(譬如23秒),就出现乱码了

想问下哪位大侠有此方面的经验,在此谢过
...全文
319 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidffffffff 2009-05-21
  • 打赏
  • 举报
回复
改这个试一下,可能也不对
void uart_re(void)
{
TMR1IE=0; //中断允许位
TXEN=1;
CREN=1;

for(k=0;k <11;k++)
{
TXREG=tran[k]; /*发出一个字符*/
while(1)
{
if(TXIF==1)
break;
}
while(TMR1IF==0);
TMR1IF==0;
}
TXEN=0;
CREN=0;
TMR1IE=1; //中断允许位
}
还有把中断里的TMR1IF=0去掉
dabuyang 2009-05-20
  • 打赏
  • 举报
回复
用的是主模式,
用PIC16F87X往PC上位机COM口发数据,编译器是MPLAB_IDE,代码如下
void interrupt time1_ISR(void)
{
if(TMR1IF==1) //10ms中断
{
TMR1H=0xD9 ; //重载计数初始值
TMR1L=0x00 ;
TMR1IF=0 ; //清中断
count=count+1 ;
if(count==1000)
{ count=0; //每10秒清count ,重新开始等待1秒
uart_re(void)
}
}
}

void uart_re(void)
{
TMR1IE=0; //中断允许位
TXEN=1;
CREN=1;

for(k=0;k<11;k++)
{
TXREG=tran[k]; /*发出一个字符*/
while(1)
{
if(TXIF==1)
break;
}
}
TXEN=0;
CREN=0;
TMR1IE=1; //中断允许位
}
zyzhang365 2009-05-20
  • 打赏
  • 举报
回复
相关部分代码贴出来吧。

看看大家能不能帮你找到问题。
dabuyang 2009-05-20
  • 打赏
  • 举报
回复
诸神啊,救救我吧
lose_forest 2009-05-19
  • 打赏
  • 举报
回复
用秒做单位 对于SPI有点不切实际吧
1;检查CS
2;降低频率

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧