(100分高分悬赏,答对还有追加) 单片机 SPI 传送出现乱码问题

发送数据的间隔很短的话(不超过10秒),不会出现乱码但是发数的间隔一旦过了10秒,就出现乱码了我用的PIC单片机,想问下哪位大侠有此方面的经验,在此谢过MELCOCA可能... 发送数据的间隔很短的话(不超过10秒),不会出现乱码
但是发数的间隔一旦过了10秒,就出现乱码了

我用的PIC单片机,想问下哪位大侠有此方面的经验,在此谢过
MELCOCA可能理解错了:发送的时间间隔是人工自己设置的,发送间隔就是这么长
NINGLING__21:是一个当前发送的数据块和下一个将要发送的数据块的时间间隔
SD_JACK:用的是定时器,能否将调试的步骤说具体一些?~~~
展开
 我来答
平实且通融丶福星0g
2009-05-21 · 超过32用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:98.5万
展开全部
我用过PIC16F877的SPI方式向数码管发送数据,间隔一秒都用不到,没有任何问题!
你的原因我想可能是你的程序写的有点问题,我这里有一个调试过的小程序,你把它烧到板子里实验一下,理解了代码就没什么问题了!
list p=16F877A
include "p16F877A.inc"
COUNTER EQU 30H
N EQU 20H
M EQU 21H

org 0000H
;* * * * * * * * * * * * * * * *
NOP
MAIN NOP
BSF STATUS,RP0
MOVLW B'11000111' ;设RC5,RC4,RC3为输出口
MOVWF TRISC
BCF INTCON,GIE ;关中断
CLRF SSPSTAT ;清除SMP,CKE位,BF位
BCF STATUS,RP0
MOVLW B'00110010' ;SPI主控,CKP=1,Fosc/64
MOVWF SSPCON
CLRF COUNTER ;计数器清零
NEXT
MOVF COUNTER,0
CALL CONVERT ;查表子程序
MOVWF SSPBUF
BTFSS PIR1,SSPIF
GOTO $-1
BCF PIR1,SSPIF
BCF PORTC,4
NOP
BSF PORTC,4

CALL DELAY
INCF COUNTER,1
MOVLW 0FH
ANDWF COUNTER,1
GOTO NEXT
GOTO $
;* * * * * * * * * * * * * * * *
CONVERT
ADDWF PCL,1
RETLW 3FH ;0的笔段码
RETLW 06H ;1
RETLW 5BH ;2
RETLW 4FH ;3
RETLW 66H ;4
RETLW 6DH ;5
RETLW 7DH ;6
RETLW 07H ;7
RETLW 7FH ;8
RETLW 6FH ;9的笔段码
RETLW 77H ;A
RETLW 7CH ;B
RETLW 39H ;C
RETLW 5EH ;D
RETLW 79H ;E
RETLW 71H ;F
;* * * * * * * * * * * * * * * *
DELAY
movlw d'250' ;
movwf N
movlw d'250'
movwf M
loop1 decfsz N,1
goto loop1
loop2
decfsz M,1
goto loop1
return

;* * * * * * * * * * * * * * * *
END

这个程序是我亲手调试过的,连线正确的话,数码管显示没有问题!其中的延时程序不是太专业,可以自己加一个!
芯火半导体
2025-07-16 广告
深圳市芯火半导体有限公司(简称:芯火半导体)成立于2018年6月,是一家专业电子元器件代理销售企业,业务涉及元器件现货供应、期货订购、中小批量BOM配单、工厂呆料回收、PCBA工程服务等,已成为众多大型企业指定元件长期供应商,公司拥有超过3... 点击进入详情页
本回答由芯火半导体提供
茶孤9
2009-05-17 · TA获得超过105个赞
知道答主
回答量:97
采纳率:0%
帮助的人:0
展开全部
10秒钟对于电信号是一个非常大的时间间隔。不应该停顿这么长时间。怀疑是接收芯片的硬件焊接、电压等问题造成。还有就是对使用的I/O口输入状态或输出状态没有确定指配。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2009-05-18 · TA获得超过3713个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1267万
展开全部
你说的间隔,是一个字节与一个字节之间的间隔?
如果说是一位与一位之间的间隔,那太长了肯定不行的。

如果是块与块之间的话,应该是程序问题,或是干扰引起
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sd_jack
2009-05-19 · TA获得超过1705个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:0
展开全部
你的“发数的间隔”是如何实现的,定时器?延时循环?
无论如何,如果真的如你所说“一旦过了10秒,就出现乱码”,那么问题多半出在定时环节上,例如一旦定时时间超过10秒,某个变量或标志会被意外修改,变量或者寄存器溢出、超出表示范围,以及程序的流程意外改变,某个中断被意外允许或者屏蔽等等。
嘿嘿,这中问题不看具体东西是说不清楚的,调试的方法大家都会,关键是如何找到问题所在。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式