作者MasterChang (我爱ASM)
看板ASM
标题Re: [问题] RS232问题
时间Wed Mar 4 22:54:54 2009
※ 引述《BlueFeel (蓝色感觉)》之铭言:
: 8051是用C写的
: 写完後测试功能
: 发现9600胞率的RS232常会出现 按下去,但终端机没反应的情况.
: 多按几次才出现,有时又可以马上出来..
uart是用中断吗?还是在main()里面用轮询的?用轮询去做,
如果其他工作跑太久的确会漏资料....
: 我朋友用过之後
: 怀疑是main写得太长,使得RS232跑很久....
?看不懂你在说什麽...看样子你好像是用轮询的....
: 可能跳到别地方,以至那次没反应
: 建议我可以在某些函式加判断式...加快执行速度
: 不过我不太明白他说的那个指令...
判断就是if...else、switch...case一类的,不过一开始没规划
好也是枉然。
: 另外...
: 不太明白什麽情况那个函式前需要那个指令
: main里头是一些 使用者按 1 就呼叫某函式 2 又呼叫某函式.....方式
: 这样说来, 应该都没在使用, 等使用者按数字才动...
如果上述为真,那你朋友判断是错的.....
--
不要问我从哪来,我只是一个浪迹天涯的工程师....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.132.23.74
1F:推 BlueFeel:轮询的意思是.....? 03/04 23:20
2F:推 BlueFeel:会不会是在说 #pragma disable, #ifndef ? 03/04 23:53
3F:推 ruemann:轮询就是开一个loop一直去检查 03/05 00:21
4F:→ ruemann:你按按键有加上反弹跳吗? 03/05 00:21
5F:推 BlueFeel:我是用pc keyboard的数字键,再用rs232传 03/05 00:31
6F:→ BlueFeel:For里面有SBUF,check SBUF='e'就跳开 03/05 00:32
7F:→ BlueFeel:RS232有用到中断 03/05 00:33
8F:→ BlueFeel:static void Serial_Port_ISR (void)interrupt 4 using 3 03/05 00:34
9F:推 ruemann:你应该把RS232 RX读到的值先存到另一个暂存器,再去判断 03/05 00:45
10F:→ ruemann:那个暂存器,而非直接去判断SBUF,你RX到的SBUF很有可能会 03/05 00:45
11F:→ ruemann:被TX的loop的写入SBUF盖掉,这样就判断不到了 03/05 00:46