6.MCS-51单片机四种工作方式的波特率应如何确定? 答:见5题
7.简述单片机多机通信的原理。 答:略
8.已知异步通信接口的桢格式由一个起始位、七个数据位、一个奇偶校验位和一个停止位组成。当该接口每分钟传送3600个字符时,计算其传送波特率。
解:由题意可知,每个字符为10位,则每秒传送3600/60=60个字符。 故波特率为:
60×10=600(位/秒)=600b/s
9.试设计一个发送程序,将片内RAM 20H~2FH中的数据从串行口输出,要求将串行口定义为工作方式2,TB8作为奇偶校验位。 解:程序如下:
MOV SCON,#80H
MOV PCON,#80H MOV
SMOD,#00H
;首地址20H→间址寄存器R0 ;数据字节数→R7 ;取一数据→A
;P随A变,P→C→TB8 ;数据→SBUF,启动发送 ;等待发送完 ;调整发送数据指针
MOV R0,#20H MOV R7,#16 MOV C,P MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R7,LOOP SJMP $
LOOP: MOV A,@R0
;设定为方式2发送 ;波特率为fosc/32
MOV TB8,C
10.以8031串行口按工作方式1进行串行数据通信。假定波特率为1200bps,以查询方式传送数据,请编写全双工通信程序。
解:参考程序略(见8.5.1 双机通信举例)
11.以8031串行口按工作方式3进行串行数据通信。假定波特率为1200bps,第九数据位作奇偶校验位,以中断方式传送数据,请编写通信程序。
解:设为单片机双机通信系统按工作方式3实现全双工通信,若发送数据区的首址为内部RAM30H~3FH单元,接收数据的首址为40H单元,设两机晶振为6MHz,则采用定时器T1方式2计算初值为0F3H。通信程序如下: 主程序:
ORG LJMP ORG MAIN:MOV
MOV MOV SETB MOV
0000H MAIN 1000H
TMOD,#20H ;定时器1设方式2 TL1,#0F3H TH1,#0F3H TR1
;启动T1
SCON,#0D0H ;串行口设方式3,充许接收
;定时器初值
MOV MOV MOV SETB SETB LCALL SJMP R0,#30H R1,#40H R7,#16 EA ES STXD $
;发送区首址 ;接收区首址 ;数据块长度计数器 ;开总中断 ;开串行口中断 ;先输出一个字符 ;等待中断 ;中断服务程序:
ORG AJMP ORG
SBRK: JB
LCALL SJMP
SEND: LCALL NEXT:RETI ;发送子程序 ORG STXD: CLR
MOV MOV MOV MOV
DJNZ INC
EXIT: RET ;接收子程序:
ORG SRXD:CLR
MOV JNB JNB
RIGHT: MOV
DJNZ INC
CLR SJMP
PER: SETB SJMP PNP: JB
SJMP
EXIT1:RET
0023H
SBRK 0100H T1,SEND SRXD NEXT STXD
0200H TI
A,@R0 C,P
TB8,C SUBF,A R7,EXIT R0
0400H RI
A,SBUF P,PNP
RB8,ERR @R1,A R7,EXIT1
R1 F1
EXIT1 F1
EXIT1 RB8,PER RIGHT
;串行口中断入口
;TI=1为发送中断 ;RI=1为接收中断 ;转到统一出口 ;调发送子程序
;TI清零 ;取发送数据到A ;奇偶校验赋予TB8C ;启动发送
;判断16位是否发送完 ;修改发送地址指针
;从串行口中读取数据 ;P=0,去PNP
;P=1,RB8=0,出错去PER ;P=1,RB8=1,存接收数据 ;判断16位是否接收完
;正确接收完16个字节数据清零标志位F1 ;奇偶错置位F1
;P=0,RB8=1,奇偶错去PER ;P=0,RB8=0,去RIGHT
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机原理与应用习题(7)在线全文阅读。
相关推荐: