串口异步通信Word格式.docx
《串口异步通信Word格式.docx》由会员分享,可在线阅读,更多相关《串口异步通信Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
OUTDX,AL
OUTDX,AL
MOVAL,40H
MOVAL,4EH
MOVAL,27H
2.键盘输入
键盘的输入由8279控制,再输入之前要现判断键盘是否允许按键,则只需读取8279的状态即可;
通过数据口读取键值。
然后对输入的数据进行判断,若为数字键,只需判断其高四位,高四位为零,则为数字键;
不为零则不是数字键;
再判断是否为EXEC键,此时只需和10H比较,相同则为EXEC键。
KEY0:
MOVDX,CONTPORT;
读8279状态
INAL,DX
TESTAL,07H;
判断是否有键按下
JZKEY0
MOVCX,0FFFH
DELAY1:
LOOPDELAY1
MOVDX,DATAPORT;
读取键值
MOVDI,AX
ANDAL,0F0H;
判断是否为数字键
JZKEY1
MOVAX,DI
CMPAL,10H;
判断是否为EXEC键
JNZKEY0
CMPWORDPTRDS:
[0601H],0000H;
判断按EXEC键前是否按过数字键
JZSERERR1
MOVSI,DATA3
CALLLEDDISP
3.数值转换
数值转换就是将输入的键值转换成发送代码。
转换代码实现部分:
CONVERS:
MOVBH,0H
ANDAL,0FH
MOVBL,AL
MOVAL,CS:
[BX+DATA4]
MOVBYTEPTRDS:
[0602H],AL
RET
4.发送数据
1号机用于键盘的控制以及数据的发送。
首先判断1号机器键盘的状态,由8279控制,则只需读取8279的状态即可;
再判断按键值,若为数字键,则计算次数,再将按键值转换为显示代码;
若为EXEC键,再判断按此键之前是否按过数字键,若没按过,则调用显示,显示Errl,若按过再将按键值转换为显示代码。
接下来就是判断是否允许发送数据了,发送数据由8251控制,则只需读取8251的状态。
允许发送就开始发送数据。
部分代码如下:
WATTXD:
MOVDX,SECOPORT
INAL,DX;
读取8251状态
TESTAL,01H;
判断是否允许发送
JZWATTXD
MOVAL,BYTEPTRDS:
[0602H];
显示代码送给AL
MOVDX,SEDAPORT;
发送显示代码
OUTDX,AL
MOVCX,0FFFFH
DELAY2:
LOOPDELAY2
JMPKEY0
SEREND:
JMPSEREND
5.接收数据并显示
2号机用于接受1号机发送的数据并将其显示出来。
数据接收由8251控制,则先判断其状态,允许接收则转入接收程序,从数据口读取数据,然后将接收到的数据存入到RAM区暂存。
再将数据发送到控制口进行显示。
接收数据部分代码如下:
WATRXD:
MOVDX,SECOPORT;
INAL,DX
TESTAL,02H;
判断是否允许接受
JZWATRXD
MOVDX,SEDAPORT;
接受数据
MOVBYTEPTRDS:
[0600H],AL;
将接受的数据存入RAM区
MOVAL,90H
MOVDX,CONTPORT
MOVAL,BYTEPTRDS:
[0600H];
从RAM区取出数据?
MOVDX,DATAPORT
OUTDX,AL;
显示接受的数据
MOVAL,00H
JMPWATRXD
详见源程序清单及注释附录部分。
三操作说明
1、准备2台本系统,确定1号为发送,2号为接收。
2、将1号RXD插孔和2号的TXD插孔相连。
3、将1号TXD插孔和2号的RXD插孔相连。
4、将1号GND插孔和2号的GND插孔相连(共地)。
5、先运行2号机,显示器显示“8251-2”,进入等待接收状态。
6、再运行1号机,显示器显示“8251-1”,进入串行发送状态。
。
7、在1号机的键盘上输入数字键,在2号机显示器上显示对应数字值。
8、输入数字键后再按EXEC键,1号机显示“8251good”。
如果不输入数字键直接按EXEC键,则显示“Err”,如果双机通信不能正常进行,也显示“Err1”。
四总结
设计体会和收获:
最初选择串行通信这个实验时,由于从未接触过这类设计,感到新鲜的同时不乏焦虑。
现在终于将它完成了,感到受益颇多。
第一,这是一份考验我们自觉性、动手能力与协作意识的任务。
在长达一个月的时间里,我们不断发现自身不足也不断自我完善。
第二,未知并不可怕,可怕的是因未知而止步。
我们在课堂上所学的知识是非常有限的,这次的课程设计就是个很好的体现。
很多函数的运用我们还没掌握,一些简单的循环语句都可能出错。
实践后才能真的知道我们真正掌握了多少。
第三,团结就是力量一点都不假,三个臭皮匠顶一个诸葛亮。
在团组合作时我们更便于互相取长补短,相互讨论,效果很好。
附:
1、程序流程图
接收数据:
:
2、源程序清单及注释
Send程序段代码
CODESEGMENT
ASSUMECS:
CODE
START:
JMPSERIAL
CONTPORTEQU00DFH;
8279端口地址
DATAPORTEQU00DEH;
SECOPORTEQU0051H;
8251端口地址
SEDAPORTEQU0050H;
DATA0EQU0500H
DATA1EQU0508H
DATA2EQU0510H
DATA3EQU0518H
DATA4EQU0520H
SERIAL:
CALLFORMAT
MOVSI,DATA2
CALLLEDDISP;
显示8251-2
[0601H],0H
MOVWORDPTRDS:
[0602H],0H
CLD
MOVDI,0602H;
MOVCX,08H
XORAX,AX
REPSTOSW
MOVAL,00H;
初始化8251
MOVAL,40H
TESTAL,07H;
JZKEY0
MOVCX,0FFFH
MOVDX,DATAPORT;
MOVDI,AX
ANDAL,0F0H;
JZKEY1
MOVAX,DI
CMPAL,10H;
JNZKEY0
CMPWORDPTRDS:
JZSERERR1
MOVSI,DATA3
CALLLEDDISP
SERERR1:
MOVSI,DATA1
CALLLEDDISP;
显示Err1
JMPSEREND
KEY1:
CALLCONVERS;
键值转换成显示代码
INAL,DX;
TESTAL,01H;
JZWATTXD
MOVCX,0FFFFH
KEY2:
ADDBYTEPTRDS:
[0601H],01H
JMPKEY0
ANDAL,0FH
MOVBL,AL
MOVAL,CS:
RET
LEDDISP:
MOVAL,90H
[0600H],00
LED1:
CMPBYTEPTRDS:
[0600H],07H
JALED2
MOVBL,DS:
[0600H]
MOVBH,0H
[BX+SI]
[0600H],01H
JNZLED1
LED2:
LEDDISPD:
LEDD1:
JALEDD2
MOVAL,DS:
[BX+0602H]
JNZLEDD1
LEDD2:
FORMAT:
MOVBX,0
[BX+0500H],5050H;
ERR2显示代码
ADDBX,2
[BX+0500H],0079H
[BX+0500H],0000H
[BX+0500H],503FH;
ERR1显示代码
[BX+0500H],7950H
[BX+0500H],405BH;
8251---1显示代码
[BX+0500H],4040H
[BX+0500H],6D06H
[BX+0500H],7F5BH
[BX+0500H],5C5EH;
8251good显示代码
[BX+0500H],6F5CH
[BX+0500H],063FH;
0-F显示代码
[BX+0500H],4F5BH
[BX+0500H],6D66H
[BX+0500H],077DH
[BX+0500H],6F7FH
[BX+0500H],7C77H
[BX+0500H],5E39H
[BX+0500H],7179H
CODEENDS
ENDSTART
Recive程序段代码
8279控制口
8279数据口
ORG1800H
JMPKEYLED
参考文献
1《C语言程序设计》清华大学出版社;
谭浩强主编
1999.12
2《C语言程序设计技巧及应用》
上海科学普及出版社;
陈进编著
1992.6
3《微型计算机原理与应用》(第二版)西安电子科技大学出版社;
王永山,杨宏五,杨婵娟编著
4《单片机原理及应用教程》北京大学出版社;
范立南,谢子殿编著
2007.8
东华理工大学软件学院
课程设计评分表
苏林坡班级:
081132学号:
项目内容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(5人一题)
10
工作量适中,难易度合理
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
理论依据充分,数据准确,公式推导正确
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
能体现创造性思维,或有独特见解
成
果
质
量
总体设计正确、合理,各项技术指标符合要求。
说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;
分析处理科学、条理分明、语言流畅、结构严谨、版面清晰
设计说明书栏目齐全、合理,符号统一、编号齐全。
格式、绘图、表格、插图等规范准确,符合国家标准
有一定篇幅,字符数不少于5000
总分
100
指导教师评语:
指导教师签名:
年月日