《单片微型计算机与接口技术》思考题与习题解答01 下载本文

内容发布更新时间 : 2024/5/4 15:47:03星期一 下面是文章的全部内容请认真阅读。

8.1 什么是串行异步通信?它有哪些特点?MCS-51单片机的串行通信有哪几种帧格式? 8.1见8.1节

8.2 某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。

8.2 方式3为每帧11位数据格式.即3600*11/60=660(波特)

8.3 为什么定时器T1用做串行口波特率发生器时,常采用工作方式2? 若已知系统时钟频率、通信选用的波特率,如何计算其初值?

8.3 T1的方式2模式不需要重装时间常数(计数初值),不影响cPU执行通信程序。设波特率为fboud计数初值为X,依据公式

fbaud=(2smod/32)*(fosc/12(256-X)) 求得X=256-((2smod/32)*(fosc/fbaud))。

8.4 已知定时器T1设置为方式2,用做波特率发生器,系统时钟频率为6MHz,求可能产生的最高和最低的波特率是多少?

8.4最低波特率为,T1定时最大值时,此时计数初值为256,并且SMOD=0,得

fbaud=(1/32)*(fosc/(12(256-0))=61

最高波特率为T1定时最小值且SOMD=1时,得 fbaud=(2/32)*fosc/(12(256-1))=31250

8.5 设甲、乙两机采用方式1通信,波特率为4800,甲机发送O,1,2,?,1FH,乙机接收存放在内部 RAM以20H为首址的单元,试用查询方式编写甲、乙两机的程序(两机的fosc=6MHz)。

8.5取SMOD=1计算TH1=TL1=B2;

;***********************发送查询方式******

ORG 0000H

MOV TMOD,#20H MOV THl,#OB2H MOV TL1,#0B2H SETB TR1

MOV SCON,#40H MOV A,#O

NEXT:MOV SBUF,A TES:JBC T1,ADD1 SJMP TES ADD1:INC A

CJNE A,#20H,NEXT SJMP $ END

;************************发送中断方式********************************* ORG 0000H

AJMP MAIN;转主程序 ORG 0023H ;中断服务 CLR TI INC A

MOV SBUF,A

CJNE A,#20H,RE

29

CLR ES RE:RETI

MAIN:MOV TMOD,#20H;主程序 MOV TH1,#0B2H MOV TL1,#082H SETB TR1

MOV SCON,#40H SETB EA SETB ES MOV A,#O MOV SBUF,A

SJMP$ ;等待中断

;*******************************接收查询方式***************************

ORG 0000H MOV TMOD,#20H MOV TH1,#0B2H MOV TL1,#0B2H SETB TR1

MOV SCON,#50H MOV RO。#20H TEC:JBC R1,REC

SJMP TES REC:MOV @R0,SBUF INC R0

CJNE R0,#40H,TEC

SJMP $ END

;******************************接收中断斤方式**************************** ORG O000H

AJMP MAIN;转主程序 ORG 0023H;中断服务 CLR RI

MOV @RO,SBUF INC R0

CJNF R0,#40,RE CLR ES RE:RETI

MAlN:MOV TMOD,#20H;主程序 MOV TH1,#0B2H MOV TL1,#0B2H SETB TR1

MOV SCON,50H SETB EA SETB ES

SJMP$ ;等待中断 END

30

8.6 一个8XX511单片机的双机通信系统波特率为9600, fosc=12MHz,用中断方式编写程序,将甲机片外RAM 3400H~34AOH的数据块通过串行口传送到乙机的片外RAM 4400H~44AOH单元中去。 8.6

/********************************发送程序***************************/ #include

#define uchar unsigned char VOId int4(void) uchar xdata*P; {P=Ox3400 TMOD=0x20;

TL1=0xfd;TH1=0xfd; SCON=0x40:

TR1=1;EA=1;ES=1; SBUF=*P:

whaile(1);/*等待中断*/ }

void int4(void)interrupt 4 {TI=O: P++: SBUF=*P; if(P==0x34a0)EA=0; }

/***********************接收程序***************************/ #include

#define ucher Unsigeried char void int4(void) char xdata*P: void mian() {P=0x4400: TMOD=0x20; TL1=Oxfd: TH1=0xfd; SCON=0x50;

TR1=1;EA=1;ES=1; for(;;);/*等待中断*/ }

void int4(viod)interrupt 4 {RI=0; *P=SBUF; P++;

if(P==0x44a1)EA=O; }

8.7 数据传送要求同题8.6,要求每帧传送一个奇校验位,编出查询方式的通信程序。 8.7 利用串行通信方式2(波特率固定),采用奇校验方式,将校验位放在TB8中.乙机检验校验位,如正确,则存于片外4400H开始的RAM中,如错误,通知对方重发,R6存放数据

31

块长度。汇编语言程序如下: 发送方

ORG 0000H

MOV DPTR,#3400H MOV R6,#0A1H

MOV SCON,#90H MOV SBUF,R6 L2: JBC TI,L3

AJMP L2

L3: MOV A,@DPTR JB P,L4

SETB TB8 L4: MOV SBUF,A L5: JBC TI,L6

AJMP L5 L6: JBC RI,L7 AJMP L6

L7: MOV A,SBUF CJNE A,#0FFH,L8 AJMP L3 L8: INC DPL DJNZ R6,L4 SJMP $ 接收方

ORG 0000H

MOV DPTR,#4400H MOV SCON,#90H L1: JBC RI,L2 AJMP L1

L2: MOV A,SBUF MOV R6,A

L3: JBC RI,L4 AJMP L3

L4: MOV A,SBUF JB P,L5 JNB RB8,L8 sIMP $

L5: JB JB8,L8 L6:MOVX @DPTR,A INC DPL INC DPH DJNZ R6,L3

SJMP $ L8: MOV A,#0FFH MOV SBUF,A L9: JBC TI,L3

32