3721|2

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助-双机在串行通信方式下的近距离发送和接收的程序 [复制链接]

一、毕业论文的要求和内容
要求:
1. 掌握串行通信的基本原理。
2. 掌握RS-232的基本结构和特性。
3. 掌握8250的工作特性。
4. 掌握串行通信的硬件连接方法。
5. 查找与本课题相关的一篇外文资料,并翻译成中文。
6. 小组共同讨论,每周向指导老师汇报讨论结果。
7. 按要求完成开题报告和毕业论文.
内容:
1. 双机在串行通信方式下的近距离通信。
2. 设计硬件连接图。
3. 用C语言编写发送和接收程序。
4. 用电缆线将双机相连,并运行本程序,实现双机通信。

下面是汇编语言的程序,谁能帮我转成C语言的,越快出来越好,谢谢了
入口参数:AL=初始化参数,其格式如下:
D7        D6        D5        D4        D3        D2        D1        D0
波特率除数        奇偶选择        停止位        数据位数
其中,D4~D0各位的定义与线路控制寄存器相对应的位定义相同,而D7~D5的各位则为波特率选择。
串口初始化的子程序

;波特率除数表                           ;D7   D6  D5   波特率        
BAUD_TABLE   DW   1047               ;0   0   0    110
                DW   768                                 ;0   0   1    150
                DW   384                ;0   1   0    300               
                DW   192                ;0   1   1    600                    
                DW   96                 ;1   0   0    1200         
                DW   48                 ;1   0   1    2400     
                DW   24                 ;1   1   0    4800   
                DW   12                 ;1   1   1    9600
SERIAL_INIT    PROC  NEAR
                MOV  AH,AL           ;入口参数保存到AH
                MOV  DX,3FBH         ;线路控制寄存器端口
                MOV  AL,80H           ;置DALB=1
                OUT   DX,AL           ;
                MOV  DL,AH            ;获取波特率除数值
                MOV  CL,4              ;
                ROL   DL,CL            ;循环左移4次,波特率除数移低4位
                AND   DX,0EH          ;除数值乘2,存放在DX中
                MOV   DI,OFFSET        
                        BAUD_TABLE
                ADD   DI,DX            ;DI为波特率除数表索引
                MOV   DX,3F9H         ;波特率除数高字节端口
                MOV   AL,CS:[DI]+1    ;
                OUT    DX,AL           ;写入除数高字节
                MOV   DX,3F8H          ;波特率除数低字节端口
                MOV    AL,CS:[DI]
                OUT    DX,AL           ;写汝低字节
                MOV   DX,3FBH         ;线路控制积存器端口
                MOV   AL,AH
                AND   AL,1FH           ;留下数据格式参数
                OUT   DX,AL            ;写入数据格式
                MOV   AL,0             ;屏蔽4种中断源类型
                MVO   DX,3F9H         ;中断允许寄存器端口
                OUT   DX,AL            ;采用查询I/O
                RET                       ;正常通信,返回
SERIAL_INIT    ENDP

发送一个字符子程序
;入口:AL=发送字符
SERIAL_TRAN  PROC  NEAR
               PUSH  AX               ;保存入口字符(发送字符)
               MOV  DX,3FCH         ;MODEM控制寄存器端口
               MOV  AL,3             ;置RST=1,DTR=1
               OUT  DX,AL
               MOV  DX,3FEH         ;MODEM状态寄存器端口
               MOV  BH,30H           ;检测CTS=1、DSR=1?
               CALL  TEST_SEATUS     ;调用状态检测子程序
               JZ    TRAN_2             ;已检测到状态位,转发送
TRAN_1        POP   CX
               MOV   AL,CL            ;恢复发送字符
               OR    AH,80H            ;为检测到状态位,置朝时错(D7=1)
               JMP   TRAN_3            ;返回
TRAN_2        MOV   DX,3FDH         ;线路状态积存器端口
               MOV  BH,20H           ;查到保持寄存器为空?(THRE=1?)
               CALL  TEST_STATUS      ;调用状态检测子程序
               JNZ   TRAN_1            ;未查到,返回Z=0,转超时错
               MOV  DX,3F8H          ;已查到,指向白痴寄存器
               POP   CX                ;恢复发送字符
               MOV   AL,CL
               OUT    DX,AL          ;发送字符,写到保持寄存器
TRAN_3        RET                      ;发送结束,返回
SERIAL_TRAN ENDP



最新回复

帮帮我了,我C学的不大好,自己弄不出来。  详情 回复 发表于 2007-5-29 23:51
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
找个C语言的参照参照就行了。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
帮帮我了,我C学的不大好,自己弄不出来。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表