主题:串口问题 共有36034人关注过本帖 |
---|
ggg |
1楼 |
串口问题 Post By:2005-1-24 9:20:00 [只看该作者]
我是贵公司etr232i网络模块的用户   我在进行串口通讯的时候 往下面发数  各个字节的数据传输格式需要不一样 比如第一个字节不加效验  而第二个奇偶位保持传号  进行了串口初始化函数后 在数据传输过程中 我改变数据传输格式无效  串口通讯不是很了解  我程序是这样写的 是什么地方错了:
#define LCR 3*2 . . main() { . . unsigned int tport = 0xff10; COM_NUM = 2;                     InitUART1 ( COM_NUM, 2 )          InstallISR  ( COM_NUM )   . . abyte = 0x00; PutOutputData  ( abyte )                              . . . UninstallISR  ( COM_NUM )   outport(tport + LCR, 0x80);  //DLAB 置0 outport(tport + LCR,0x2b);  //奇偶保持传号 InstallISR(COM_NUM); abyte = Pos[i].pos_no; PutOutputData  ( abyte )                           StartSend  () . . 第二个字节的格式始终没有改变  是哪里有错误? 望赐教 |
|
单帖管理 | 引用 | 回复 |
zhl |
2楼 |
Post By:2005-1-24 9:51:00 [只看该作者]
outport(tport + LCR, 0x80) 执行是用于设置波特率。所以如果仅仅改变奇偶校验,只需要直接调用outport(tport + LCR,0x2b)即可。
|
|
单帖管理 | 引用 | 回复 |
ggg |
3楼 |
Post By:2005-1-24 9:56:00 [只看该作者]
不好意思 写错了 是
outport(tport + LCR, 0x00);  //DLAB 置0 outport(tport + LCR,0x2b);  //奇偶保持传号 |
|
单帖管理 | 引用 | 回复 |
ggg |
4楼 |
Post By:2005-1-24 10:06:00 [只看该作者]
和UninstallISR  ( COM_NUM );InstallISR(COM_NUM);没有关系吗?
传输过程中直接调用 outport(tport + LCR,0x2b); 就可以PutOutputData  ( abyte )?  不需要再置中断 和恢复中断吗? |
|
单帖管理 | 引用 | 回复 |
ggg |
5楼 |
Post By:2005-1-24 10:20:00 [只看该作者]
我们仿真试过  确实收不到+了奇偶效验的第二个字节 
您能帮忙测试一下吗? |
|
单帖管理 | 引用 | 回复 |
ggg |
6楼 |
Post By:2005-1-24 11:54:00 [只看该作者]
测试程序以发至邮箱zhl@emtronix.com.cn
请查收  谢谢 |
|
单帖管理 | 引用 | 回复 |
zhl |
7楼 |
Post By:2005-1-24 15:51:00 [只看该作者]
看了你的程序,没有什么问题。请检查你的接收方通讯参数是否也作了相应的调整。
|
|
单帖管理 | 引用 | 回复 |