哈工大单片机习题及参考答案1-10 联系客服

发布时间 : 星期日 文章哈工大单片机习题及参考答案1-10更新完毕开始阅读70c56917cc7931b765ce15c7

ORG AJMP ORG AJMP

0000H MAIN 000BH ISER

;转主程序

;T0中断矢量地址 ;转中断服务程序 ;设堆栈指针 ;写控制字 ;置T0 初值 ;允许T0中断 ;CPU开中断 ;启动T0 ;等待中断

;T0中断服务子程序,重置T0 初值 ;

ORG MAIN: MOV

MOV MOV MOV SETB

100H SP,#60H

TMOD,#01H TL0,#0F0H TH0,#0D8H

ET0 TR0 $

SETB EA

SETB SJMP

ISER: MOV MOV

CPL RETI END

TL0,#0F0H TH0,#0D8H

P1.7 ;P1.7取反

6.9 每隔1s读一次P1.O,如果所读的状态为“1’,则将片内RAM 10H单元内

容加1;如果所读的状态为“O”,则将片内RAM llH单元内容加1。设单片机的晶振频率为12 MHz,试编制程序。

答:依据题意,每隔1s读一次P1.0引脚,再根据读出的状态分别计数。因此定是时间T=1s, 设T0工作在定时模式的方式1,以中断方式工作。 1,设定TMOD

TMOD的低4位控制T0,设定T0定时模式,即C/T=0;若工作在方式1,即 M1M0=01H;软件启动定时器,即GAME=0。TMOD的高4位与T0无关,一般取0,所以TMOD控制字为01H。 2,计算定时初值

晶振频率为12MHz,机器周期=1us

因定时时间1s已超出定时器的定时能力,可将定时时间设为50ms,在中断服务程序中对定时器溢出进行计数20次时,读一次P1.0引脚,根据读出的状态分别计数。

X?216?T/Tj=65536-50000=15536=3CB0H

ORG MOV MOV MOV MOV

100H

11H, #00H ; 清计数器 10H, #00H ; 清计数器 TMOD,#01H TL0,#0B0H

;写控制字,T1工作方式1 ;置T0初值

;置溢出次数 ;启动T1 ;

;重置T1 初值

START: MOV TH0,#3CH MOV A, #20

LOOP: SETB TR1

LOOP1: JNB TF1,LOOP1 MOV TL0,#0B0H

21

MOV TH0,#3CH

; ; ; ; ; ; ; ;

CLR TF1 DJNZ A, LOOP JNB P1.0, LOOP2 INC 11H SJMP INC SJMP

STRAT 10H STRAT

LOOP2:

6.10 简要说明若要扩展定时器/计数器的最大定时时间,可采用哪些方法?

答:1,降低晶体振荡器主频,

2,采用多次累计计数等方法,见例6-4.

22

习题 7

7.1 什么是串行异步通信,它有哪些特点?

答:串行异步通信的数据通常是以字符(或字节)为单位组成字符帧按顺序传送的。字符帧通过传输线由发送端一帧一帧地发送到接收端,接收端一帧一帧地接收。

特点:优点是不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单。缺点是因字符帧中包含有起始位和停止位而降低了有效数据的传输速率。

7.2 串行异步通信的字符格式由哪几个部分组成?某异步通信接口,其帧格式由

1个起始位(O),7个数据位,1个偶校验和1个停止位组成。用图示方法画出发送字符“5”(ASCII码为0110101B)时的帧结构示意图。

答:1,串行异步通信的字符格式由一个起始位表示字符的开始,一个停止位表示字符的结束。数据位在起始位之后,停止位之前,这样构成一帧数据。奇偶校验位位与数据位之后,停止位之前,用于表示串行通信中采用奇校验位还是偶校验位,由用户根据需要决定。

2,发送字符“5”(ASCII码为0110101B)时的帧结构示意图:

0 7.3 MCS-51单片机的串行口由哪些功能模块组成?各有什么作用?

答:MCS-51单片机的串行口主要由两个数据缓冲寄存器SBUF,一个输入移位寄存器以及两个控制寄存器SCON和PCON组成。其中,缓冲寄存器SBUF是两个在物理上独立的专用寄存器,一个作发送缓冲器,另一个作接收缓冲器。两个缓冲器共用一个地址99H,可通过指令对SBUF的读写来区别,CPU写SBUF就是修改发送缓冲器的内容;读SBUF就是读接收缓冲器的内容。

控制寄存器SCON和PCON用来设定串行口的工作方式并对接收和发送进行控制。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工通信。

011 0 1 0101

7.4 MCS-51单片机的串行口有哪几种工作方式?有几种帧格式?各工作方式的波

特率如何确定?

答:有4种工作方式。

工作方式0为同步移位寄存器方式,该方式以8位数据为一帧,没有起始位和停止位,先发送或接收最低位。

工作方式1为8位异步通信方式,适合于点对点的异步通信。这种方式规定发送或接收一帧信息为10位,即1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。数据传输率可以改变。

工作方式2和3为9位异步通信方式。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。

1. 方式0的波特率

串行口工作在方式0时, 波特率由振荡器的频率fosc所确定:

波特率=

fosc12

2. 方式2的波特率

串行口工作在方式2时,波特率由振荡器的频率fosc和SMOD所确定:

64 若SMOD=0,则所选波特率为fosc/64;若SMOD=1,则波特率为fosc/32。

3. 方式1或3的波特率

23

波特率=

2SMOD?fosc

串行口工作在方式1或方式3时,波特率由定时器T1的溢出率和SMOD所确定: 波特率=

2SMOD32?定时器T1的溢出率

7.5 MCS-51单片机的串行口控制寄存器SCON的SM2,TB8,RB8有何作用?

答:1,SM2主要用于方式2和方式3,因为多机通信是在方式2和方式3下进行的。 在方式2和方式3下,若SM2=1接收到第9位数据(RB8)为0时,则接收中断不被激活,将接收到的前8位数据丢弃。只有在接收到第9位数据(RB8)为1时才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。当SM2=0时,则不论接收到第9位数据是0还是1,都将接收到的前8位数据送入SBUF中,并产生中断请求。在方式1中,若SM2=1,只有接收到有效的停止位RI才被激活。在方式0中,SM2必须是0。

2,TB8发送数据的第9位

在方式2、方式3中,TB8作为第9位数据发送出去,根据需要用软件置位或清0。TB8可在双机通信中作为奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。一般约定,发送地址帧时设置 TB8=1;发送数据帧时设置TB8=0。在方式0和方式1中,该位未用。

3,RB8 接收数据的第9位

在方式2、方式3中,RB8是接收的第9位数据,在多机通信中为地址、数据标志位;方式0中RB8未用;在方式1中,若SM2=0,则接收的停止位自动存入RB8中。

设fosc=6 MHz,试编写一段对串行口初始化程序,使之工作在方式1,波特率为1200 b/s;并用查询串行口状态的方式,读出接收缓冲器的数据并回送到发送缓冲器。

答:串行方式1波特率取决于T1溢出率,若设SMOD=1,T1工作在方式2,则T1的计数初值为: X=256-(2/32)?6000000/12?1200=230=0E6H

ORG 0000H LJMP MAIN ORG 100H MAIN: MOV SP, #60H MOV TMOD, #20H

MOV TH1, #0E6H CLR ET1 SETB TR1 MOV SCON,#40H

MOV PCON,#00H CLR ES MOV A, SBUF MOV SBUF, A JNB TI, LP CLR TI SJMP $

;设T1工作方式2

MOV TL1, #0E6H ;置T1计数初值

;禁止T1中断 ;启动T1 ;置串口方式1 ;置SMOD=0 ;禁止串行中断 ;读接收缓冲器

;回送到发送缓冲器 ;等待一帧数据发送完 ;清发送标志位

LP:

7.7 设晶振频率为11.0592 MHz,串行口工作在方式1,波特率为4800 b/s。写

出用T1作为波特率发生器的方式字并计算T1的计数初值。

答:串行方式1波特率取决于T1溢出率,设SMOD=0, 即PCON=00H

24