ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:93.54KB ,
资源ID:2103273      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2103273.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言实现双机通信.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言实现双机通信.docx

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

2、522管脚座4晶振230pF电容22k欧电阻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 ;装载定时器初值,波特率240

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

4、联络信号CALL RXBYTECJNE A,#0E2H,DIALOG ;B机允许发送RETX: CALL TXDATA ;发送数据块 CALL RXBYTE CJNE A,#00H,RETX ;B机接受正确 LJMP DIALOGTXBYTE: MOV SBUF,A ;发送字节子程序CALL TRANS ;调用显示MOV A,SBUF JNB TI,$ CLR TI RETRXBYTE: JNB RI,$ ;接受字节子程序MOV A,SBUFCLR RIRETTXDATA: MOV R7,#15 ;发送数据块子程序MOV R0,#40HMOV R6,#00HLDATA: MOV A,R0CAL

5、L TXBYTE MOV A,R6 ADD A,R0 ;求校验和 MOV R6,A ;保存校验和 INC R0 DJNZ R7,LDATA ;整个数据块是否发送完毕MOV A,R6 ;发送校验和 CALL TXBYTERETINIT: MOV R0,#40H ;调试用数据产生子程序 MOV R7,#15 MOV A,#36HL0: MOV R0,A INC A INC R0 DJNZ R7,L0 RET;延时消抖程序D1S: MOV R6,#100D10: CALL D10MS DJNZ R6,D10 RETD10MS: MOV R5,#10D1MS: MOV R4,#249DL: NOPNO

6、PDJNZ R4,DLDJNZ R5,D1MSRET;显示子程序TRANS: MOV B, #16 ;采用16进制显示DIV ABMOV R1, BMOV R2, AMOV R3,#17DISP: MOV A,R2 SETB ACALL DISPLAY ACALL D10MS CLR MOV A,R1 SETB ACALL DISPLAY ACALL D10MS CLR DJNZ R3,DISPRETDISPLAY:MOV DPTR, #TABLE1 ;设置数据指针地址初值MOVC A,A+DPTR ;根据有效地址查询MOV P1, A ; 结果传送到输出口P1 RET;共阳TABLE1:DB

7、 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H DB 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, 71H ENDB机程序:ORG 0000HLJMP BMAINORG 0040HBMAIN: MOV SP,#5FHMOV TMOD,#20H ;定时器1置为方式2MOV TH1,#0F4H ;装载定时器初值,波特率2400M

8、OV TL1,#0F4HMOV SCON,#50HMOV PCON,#00H ;SMOD=0SETB TR1 ;启动定时器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

9、TI,$CLR TIRETRXBYTE: JNB RI,$;接受字节子程序MOV A,SBUF CLR RI RETRXDATA: 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 R

10、5,#10D1MS: MOV R4,#249DL: NOPNOPDJNZ R4,DLDJNZ R5,D1MSRETTRANS: MOV B, #16 ;采用16进制显示DIV ABMOV R1, BMOV R2, AMOV R3,#17DISP:MOV A,R2SETB ACALL DISPLAYACALL D10MSCLR MOV A,R1SETB ACALL DISPLAYACALL D10MSCLR DJNZ R3,DISPRETDISPLAY:MOV DPTR, #TABLE1 ;设置数据指针地址初值MOVC A,A+DPTR ;根据有效地址查询MOV P1, A ; 结果传送到输出口

11、P0RET;共阳TABLE1:DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H DB 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, 71H ENDA,B机通信流程图(省略按键与显示流程):A机流程图 B机流程图七、设计原理:本次课程设计的主要原理有:1.串行口通信,通过简单的握手验证,在定时器控制下实现字节接收:如果两个单

12、片机应用系统相距很近,将他们的串行口直接相连即可实现双机通信。通信时首先A机发送“E1”请求传送数据。B机收到后发送应答数据“E2”(因此时E2未放入B机数据缓冲区所以B机数码管不显示),表示同意接收。当A机收到应答信号“E2”后开始发送数据(此时“E2”为A机接收的数据,不显示),每发送一个数据字节都要计算“校验和”,然后B机接收数据并转存到数据缓冲区,接收一个次数据字节便计算一次“校验和”,再接收A机发送的校验和,进行比较若不相等请求A机重发。2.数码管的动态显示:数码管的abcdefgh与单片机数据输出端相连,将和和数码管使能端相连,通过控和的高低电平对数码管的高低位进行位选通控制,就使

13、各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.按键的检测与软件去抖:作为一个按键,从没有按下到按下以及释放是一个完整的过程,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不可避免会产生干扰,这些干扰可能造成误触发过程。为了防止这种现象的产生,需要在按键按下的时候把各种干扰信号滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但会增加硬件成本及硬件电路的体积。对于实时性要求不高的系统,可以采用软件滤波的方法去除干扰信号:一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。从按键被识别按下之后,延时4ms以上,可以避开了干扰信号区域,此时再检测一次按键是否真得已经按下,若真的已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明之前是由于干扰信号引起的误触发,处理单元便会舍弃本次的按键识别过程。从而提高了系统的可靠性。八

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1