作者deo2000 (800IM)
看板ASM
标题[问题] PC送UART给51两个字,出错机率大
时间Sat Aug 11 16:01:46 2012
我要用PC传 0x00~0xFF 给51,并显示在一个 port 的 LED
但是 bit 0 和 bit 3 经常会消失变 0,找不到原因
code
http://pastie.org/4454435
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.167.217
1F:推 lion21:你pc用什麽传? 08/11 20:22
2F:→ deo2000:VB6 MSC.Output = Txt_Tx.Text 08/11 20:32
3F:→ deo2000:难道是PC端出了问题吗?? 因为我照Wolflord说的做也没改善 08/11 20:33
4F:推 lion21:vb6 请用binary方式.需要用阵列方式传输.不好搞 08/11 21:20
5F:→ lion21:建议你用 专用於测试终端机程式 可以直接传 binary 08/11 21:21
6F:推 ksmrt0123:应该是race condition. 试看看多宣告一组 b[2], 在 for 08/11 23:35
7F:→ ksmrt0123:回圈中增加 b[i]=rxQ[i]; 後面的rxQ[rix]都改为b[i] 08/11 23:36
8F:→ ksmrt0123:最後也改为 P1=~(b[0]<<4|b[1]); 08/11 23:37
谢啦! 的确可以!
是因为不可预期时间中断造成的 race 吗?
※ 编辑: deo2000 来自: 140.122.167.217 (08/12 00:22)
9F:推 ksmrt0123:嗯~ 发生中断後让主程式读到不一致(inconsistent)的资料 08/12 21:52
10F:推 WolfLord:其实,9600 uart的速度大多数应用根本没有作isr的需求 08/12 22:13
11F:→ WolfLord:isr的运用观念你可以看作是一个cpu切成两个或三个,却共 08/12 22:15
12F:→ WolfLord:用一套硬体资源与一起竞争cpu的运算能力(时间) 08/12 22:16
13F:→ WolfLord:所以,在运用尚要考虑的问题会成次方的长出来。 08/12 22:17
14F:→ WolfLord:结果反而导致可靠度的下降,因此进行微系统设计时,最好 08/12 22:19
15F:→ WolfLord:先进行资源与处理机时间分割以及行程规划,不要像在PC写 08/12 22:20
16F:→ WolfLord:程式一般的随性想到就加进去。因为PC了资源丰富外还有 08/12 22:20
17F:→ WolfLord:高阶作业系统在宠爱你,不管你干了什麽不自觉得蠢事,只 08/12 22:21
18F:→ WolfLord:要PC资源还吃得下去,作业系统都会尽量包容你。但是直接 08/12 22:22
19F:→ WolfLord:操控微处理机的状况下,你逻辑错误或发生成事干涉,微处 08/12 22:23
20F:→ WolfLord:理机都只会呆呆往前冲:就像Asimov笔下早期机器一样憨直 08/12 22:25