汇编语言实现双机通信(共13页).doc

上传人:飞****2 文档编号:14186305 上传时间:2022-05-03 格式:DOC 页数:13 大小:128KB
返回 下载 相关 举报
汇编语言实现双机通信(共13页).doc_第1页
第1页 / 共13页
汇编语言实现双机通信(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《汇编语言实现双机通信(共13页).doc》由会员分享,可在线阅读,更多相关《汇编语言实现双机通信(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上西安邮电大学单片机课程设计报告题目: 单片机之间的通信综合设计班 级:测控1002班学生姓名:仵俊娇()朱凌萱()刘俊廷()刘宇()指导老师:赵广元实习时间:12-12-03-12-12-13单片机之间的通信综合设计一、 设计要求:1A机,B机进行全双工通信,并用2位一体的数码管显示发送的数据和接收的数据。2加扩展功能。二、实验步骤:1根据单片机原理,分析实验要求,编写程序。2设计硬件电路,并且在Proteus中进行模拟仿真。3仿真成功后,合理布线,进行焊接。4进行检查调试。三、所需元器件:器件名称数量AT89C522管脚座411.0592MHz晶振230pF电容22

2、k欧电阻4纽扣开关1220欧电阻4两位一体共阳数码管2电路板1四、主要功能描述:双机通讯系统实现A机指定数据段对B机指定数据段循环发送数据,建立通信时A机与B机进行一次握手确认,在接收过程中由B机对A机发送的数据进行校验,并可对错误字节进行重新接收。A机数码管显示A机发送的数据,B机数码管显示B机接收的数据。五、实验电路图: 六、实验源程序及流程图:A机程序:ORG 0000HLJMP AMAINORG 0040HAMAIN: MOV SP,#5FH MOV TMOD,#20H ;定时器1置为方式2 MOV TH1,#0F4H ;装载定时器初值,波特率2400 MOV TL1,#0F4H MO

3、V SCON,#50H;串口工作在方式2MOV PCON,#00H ;SMOD=0SETB TR1;启动定时器SETB ET1 ; 开定时器1SETB ES ; 允许串行口中断CLR TI ;发送中断标志位清零MOV P2,#00H ; MAIN:JNB P3.6,KEY2 ;判断按键是否按下LJMP MAINKEY2:LCALL D10MS ;延时,消抖JB P3.6,MAIN; 再判断按键是否真的按下WAIT:JNB P3.6,WAIT ; 等待按键松手CALL INIT;调试用数据产生DIALOG: MOV A,#0E1HCALL TXBYTE;发送“E1”联络信号CALL RXBYTE

4、CJNE A,#0E2H,DIALOG ;B机允许发送RETX:CALL TXDATA;发送数据块CALL RXBYTECJNE A,#00H,RETX ;B机接受正确?LJMP DIALOGTXBYTE:MOV SBUF,A;发送字节子程序CALL TRANS;调用显示MOV A,SBUFJNB TI,$CLR TIRETRXBYTE:JNB RI,$ ;接受字节子程序MOV A,SBUFCLR RIRETTXDATA:MOV R7,#15;发送数据块子程序MOV R0,#40HMOV R6,#00HLDATA:MOV A,R0CALL TXBYTEMOV A,R6ADD A,R0;求校验和

5、MOV R6,A ;保存校验和INC R0DJNZ R7,LDATA;整个数据块是否发送完毕MOV A,R6;发送校验和CALL TXBYTERETINIT:MOV R0,#40H;调试用数据产生子程序MOV R7,#15MOV A,#36HL0:MOV R0,AINC AINC R0DJNZ R7,L0RET;延时消抖程序D1S:MOV R6,#100D10:CALL D10MSDJNZ R6,D10RETD10MS:MOV R5,#10D1MS:MOV R4,#249DL: NOPNOPDJNZ R4,DLDJNZ R5,D1MSRET;显示子程序TRANS: MOV B, #16;采用1

6、6进制显示DIV ABMOV R1, BMOV R2, AMOV R3,#17DISP:MOV A,R2SETB P2.0ACALL DISPLAYACALL D10MSCLR P2.0MOV A,R1SETB P2.1ACALL DISPLAYACALL D10MSCLR P2.1DJNZR3,DISPRETDISPLAY:MOV DPTR, #TABLE1 ;设置数据指针地址初值MOVC A,A+DPTR;根据有效地址查询MOV P1, A; 结果传送到输出口P1 RET;共阳TABLE1:DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H D

7、B 80H, 90H, 88H, 83H DB 0C6H, 0A1H, 86H, 8EH;共阴TABLE2: DB 3FH, 06H, 5BH, 4FH DB 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH DB 39H, 5DH, 79H, 71HENDB机程序:ORG 0000HLJMP BMAINORG 0040HBMAIN:MOV SP,#5FHMOV TMOD,#20H ;定时器1置为方式2MOV TH1,#0F4H;装载定时器初值,波特率2400MOV TL1,#0F4HMOV SCON,#50HMOV PCON,#00H;SMOD=0SETB T

8、R1;启动定时器WDIALOG:CALL RXBYTECJNE A,#0E1H,WDIALOG ;等待联络信号MOV A,#0E2HCALL TXBYTE;发送“E2”联络信号RERX:CALL RXDATA;接受校验块XRL A,R6;校验和正确?JNZ NO;不正确,转NOMOV A,#00H ;正确CALL TXBYTELJMP WDIALOGNO:MOV A,#0FFHCALL TXBYTELJMP RERXTXBYTE:MOV SBUF,A;发送字节子程序JNB TI,$CLR TIRETRXBYTE:JNB RI,$;接受字节子程序MOV A,SBUFCLR RIRETRXDATA

9、:MOV R7,#15;接受数据块子程序MOV R0,#40HMOV R6,#00HLDATA:CALL RXBYTEMOV R0,ACALL TRANS;调用显示MOV A,R0MOV A,R6ADD A,R0;求校验和.MOV R6,A;保存校验和INC R0DJNZ R7,LDATA;整个数据块是否接受完毕CALL RXBYTERETD1S:MOV R6,#100D10:CALL D10MSDJNZ R6,D10RETD10MS:MOV R5,#10D1MS:MOV R4,#249DL:NOPNOPDJNZ R4,DLDJNZ R5,D1MSRETTRANS: MOV B, #16;采用

10、16进制显示DIV ABMOV R1, BMOV R2, AMOV R3,#17DISP:MOV A,R2SETB P2.0ACALL DISPLAYACALL D10MSCLR P2.0MOV A,R1SETB P2.1ACALL DISPLAYACALL D10MSCLR P2.1DJNZR3,DISPRETDISPLAY:MOV DPTR, #TABLE1 ;设置数据指针地址初值MOVC A,A+DPTR;根据有效地址查询MOV P1, A; 结果传送到输出口P0RET;共阳TABLE1:DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H D

11、B 80H, 90H, 88H, 83H DB 0C6H, 0A1H, 86H, 8EH;共阴TABLE2: DB 3FH, 06H, 5BH, 4FH DB 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH DB 39H, 5DH, 79H, 71HENDA,B机通信流程图(省略按键与显示流程):A机流程图B机流程图七、设计原理:本次课程设计的主要原理有:1.串行口通信,通过简单的握手验证,在定时器控制下实现字节接收:如果两个单片机应用系统相距很近,将他们的串行口直接相连即可实现双机通信。通信时首先A机发送“E1”请求传送数据。B机收到后发送应答数据“E2”(

12、因此时E2未放入B机数据缓冲区所以B机数码管不显示),表示同意接收。当A机收到应答信号“E2”后开始发送数据(此时“E2”为A机接收的数据,不显示),每发送一个数据字节都要计算“校验和”,然后B机接收数据并转存到数据缓冲区,接收一个次数据字节便计算一次“校验和”,再接收A机发送的校验和,进行比较若不相等请求A机重发。2.数码管的动态显示:数码管的abcdefgh与单片机数据输出端相连,将P2.0和P2.1和数码管使能端相连,通过控P2.0和P2.1的高低电平对数码管的高低位进行位选通控制,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms由于人的视觉暂

13、留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.按键的检测与软件去抖:作为一个按键,从没有按下到按下以及释放是一个完整的过程,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不可避免会产生干扰,这些干扰可能造成误触发过程。为了防止这种现象的产生,需要在按键按下的时候把各种干扰信号滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但会增加硬件成本及硬件电路的体积。对于实时性要求不高的系统,可以采用软件滤

14、波的方法去除干扰信号:一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。从按键被识别按下之后,延时4ms以上,可以避开了干扰信号区域,此时再检测一次按键是否真得已经按下,若真的已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明之前是由于干扰信号引起的误触发,处理单元便会舍弃本次的按键识别过程。从而提高了系统的可靠性。八、实验分析及检测:在数码管阳极未连接放大电路时,用仿真软件对电路和程序进行仿真,结果正确功能正常。但查询网络和参考资料后,了解到P1口输出电流(10mA左右)不足以正常驱动数码管(3040mA)。为了使数码管正常工作,小组讨论决

15、定增加放大电路。程序烧录和电路焊接完成后试运行,A机数码管高位不能点亮,用万用表检查放大电路的各脚电压后确定为管脚虚焊,重新焊接后解决问题,双机通讯系统最终正常工作。九、实验心得:仵俊娇:在最后加电源的环节,B组数码管只显示一边,通过检查,是因为控制他的放大电路三极管虚焊导致,补修之后问题就解决了。朱凌萱:实验开始时编写的程序略有问题无法很好的运行,后经过查阅资料、课本以及询问咨询解决了这个小问题,能够正常的运行。做实验一定要先把理论知识弄清楚做实验才能顺利。刘俊廷:实验中调试时会有接触不良的情况出现,时焊接时出现了些许地方没有焊好。重新检查后恢复正常,实验有一定的难度,也让我对于课本上的知识

16、有了进一步的理解不在只局限于课本。能够真正动手把课本上的知识变成手下的成品是这次实验最大的收获。刘 宇:通过本次实验,我最大的收获是学到了解决实际问题的方法。从一开始对课题的无从下手,到分析课题原理,明确步骤,逐个解决每一个问题的过程尽管艰难,却使我收获良多。从最初确定数码管共阴共阳到汇编源程序生成.hex文件再到按键去抖和用数码管进行数据显示,每一个问题都可以在参考书中找到解决方法,但只有真正将各个功能联系整合起来才真正解决了具体问题。最后,我们感谢赵老师在本次课程设计中对本小组的指导和支持。十、参考文献:单片机原理及接口技术,李全利,高等教育出版社单片机在控制系统中的应用,余永权,汪明慧,黄英,电子工业出版社专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁