汇编语言实现双机通信

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安邮电大学

单片机课程设计报告

题目: 单片机之间的通信综合设计

班级:测控1002班

姓名:

仵俊娇(06102048)

朱凌萱(06102053)

刘俊廷(06102038)

刘宇(06102043)

指导老师:赵广元

实习时间:12-12-03-----12-12-13

单片机之间的通信综合设计

一、设计要求:

1.A机,B机进行全双工通信,并用2位一体的数码管显示发送的数据和接收的数据。

2.加扩展功能。

二、实验步骤:

1.根据单片机原理,分析实验要求,编写程序。

2.设计硬件电路,并且在Proteus中进行模拟仿真。

3.仿真成功后,合理布线,进行焊接。

4.进行检查调试。

三、所需元器件:

四、主要功能描述:

双机通讯系统实现A机指定数据段对B机指定数据段循环发送数据,建立通信时A机与B机进行一次握手确认,在接收过程中由B机对A机发送的数据进行校验,并可对错误字节进行重新接收。A机数码管显示A机发送的数据,B机数码管显示B机接收的数据。

五、实验电路图:

六、实验源程序及流程图:

A机程序:

ORG 0000H

LJMP AMAIN

ORG 0040H

AMAIN: MOV SP,#5FH

MOV TMOD,#20H ;定时器1置为方式2

MOV TH1,#0F4H ;装载定时器初值,波特率2400

MOV TL1,#0F4H

MOV SCON,#50H ;串口工作在方式2

MOV PCON,#00H ;SMOD=0

SETB TR1 ;启动定时器

SETB ET1 ; 开定时器1

SETB ES ; 允许串行口中断

CLR TI ;发送中断标志位清零

MOV P2,#00H ;

MAIN: JNB ,KEY2 ;判断按键是否按下

LJMP MAIN

KEY2: LCALL D10MS ;延时,消抖

JB ,MAIN; 再判断按键是否真的按下WAIT: JNB ,WAIT ; 等待按键松手

CALL INIT ;调试用数据产生DIALOG: MOV A,#0E1H

CALL TXBYTE ;发送“E1”联络信号

CALL RXBYTE

CJNE A,#0E2H,DIALOG ;B机允许发送RETX: CALL TXDATA ;发送数据块

CALL RXBYTE

CJNE A,#00H,RETX ;B机接受正确

LJMP DIALOG

TXBYTE: MOV SBUF,A ;发送字节子程序

CALL TRANS ;调用显示

MOV A,SBUF

JNB TI,$

CLR TI

RET

RXBYTE: JNB RI,$ ;接受字节子程序

MOV A,SBUF

CLR RI

RET

TXDATA: MOV R7,#15 ;发送数据块子程序

MOV R0,#40H

MOV R6,#00H

LDATA: MOV A,@R0

CALL TXBYTE

MOV A,R6

ADD A,@R0 ;求校验和

MOV R6,A ;保存校验和

INC R0

DJNZ R7,LDATA ;整个数据块是否发送完毕

MOV A,R6 ;发送校验和

CALL TXBYTE

RET

INIT: MOV R0,#40H ;调试用数据产生子程序

MOV R7,#15

MOV A,#36H

L0: MOV @R0,A

INC A

INC R0

DJNZ R7,L0

RET

;延时消抖程序

D1S: MOV R6,#100

D10: CALL D10MS

DJNZ R6,D10

RET

D10MS: MOV R5,#10

D1MS: MOV R4,#249

DL: NOP

NOP

DJNZ R4,DL

DJNZ R5,D1MS

RET

;显示子程序

TRANS:

MOV B, #16 ;采用16进制显示

DIV AB

MOV R1, B

MOV R2, A

MOV R3,#17

DISP:

MOV A,R2

SETB

ACALL DISPLAY

ACALL D10MS

CLR

MOV A,R1

SETB

ACALL DISPLAY

ACALL D10MS

CLR

DJNZ R3,DISP

RET

DISPLAY:

MOV DPTR, #TABLE1 ;设置数据指针地址初值

MOVC A,@A+DPTR ;根据有效地址查询

MOV P1, A ; 结果传送到输出口P1

RET

;共阳

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

END

B机程序:

ORG 0000H

LJMP BMAIN

ORG 0040H

BMAIN: MOV SP,#5FH

MOV TMOD,#20H ;定时器1置为方式2

MOV TH1,#0F4H ;装载定时器初值,波特率2400

MOV TL1,#0F4H

MOV SCON,#50H

MOV PCON,#00H ;SMOD=0

SETB TR1 ;启动定时器

WDIALOG: CALL RXBYTE

CJNE A,#0E1H,WDIALOG ;等待联络信号

MOV A,#0E2H

CALL TXBYTE ;发送“E2”联络信号

相关文档
最新文档