单片机课后习题答案2_第1页
单片机课后习题答案2_第2页
单片机课后习题答案2_第3页
单片机课后习题答案2_第4页
单片机课后习题答案2_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1单项选择题

(1)A(2)C(3)A(4)A(5)A

(6)A(7)C(8)C(9)D(10)C

1.2填空题

(1)硬件系统、软件系统

(2)时钟、复位

(3)XTALKXTAL2、RST、

(4)片内数据存储器、片内程序存储器、片外数据存储器、片外程序存储器

(5)时钟电路

(6)程序存储器

(7)工作寄存器组、位寻址区、用户RAM区

(8)lus、2us

(9)上电复位电路、按键复位电路

(10)2、高

1.3

答:

单片微型计算机是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central

ProcessingUnit)、随机存取存储器RAM(RandomAccessMemory)、只读存储器ROM

(Read-onlyMemory)>基本输入/输出(Input/Output,简称I/O)接口电路、定时器/计数器等

都制作在一块集成芯片匕构成一个完整的微型计算机,可以实现微型计算机的基本功能。

单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实

现•种或多种功能的实用系统。

单片机应用系统是山硬件和软件组成的,硬件是应用系统的基础,软件则是在硬件的基础上

对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。

1.4

答:

P3口各引脚与第二功能表

引脚

第二功能

信号名称

P3.0

RXD

串行数据接收

P3.1

TXD

串行数据发送

P3.2

外部中断0申请

P3.3

外部中断1申请

P3.4

T0

定时/计数器0的外部输入

P3.5

T1

定时/计数器1的外部输入

P3.6

外部RAM写选通

P3.7

外部RAM读选通

1.5

答:片内RAM低128单元的配置如下:

地址

功能

30H〜7FH

数据缓冲区

20H〜2FH

位寻址区(00H〜7FH)

18H-1FH

第3组工作寄存器(R7-R0)

10H〜17H

第2组工作寄存器(R7-R0)

08H〜0FH

第1组工作寄存器(R7-R0)

OOHY)7H

第0组工作寄存器(R7-R0)

寄存器常用于存放操作数及中间结果等;内部RAM的20H-2FH单元,既可作为一般RAM

单元使用,进行字节操作,也可以对单元中每一位进行位操作;在内部RAM低128单元中,

通用寄存器占去了32个单元,位寻址区占去了16个单元,剩下80个单元,这就是供用户

使用的一般RAM区,其单元地址为30H〜7FH。

片内RAM高128单元安排有21个特殊功能寄存器,其他空闲单元用户不能使用。

1.6

答:有21个可寻址的特殊功能寄存器,它们不连续地分布在片内RAM的高128单元中,

尽管其中还有许多空闲地址,但用户不能使用。另外还有一个不可寻址的特殊功能寄存器,

即程序计数器PC,它不占据RAM单元,在物理上是独立的。

在可寻址的21个特殊功能寄存器中,有11个寄存器不仅可以字节寻址,也可以进行位寻址。

1.7

答:

程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是

根据程序执行结果,由硬件自动设置的,而有些位的状态则由软件方法设定。PSW的位状

态可以用专门指令进行测试,也可以用指令读出。PSW的各位定义下表所示。

PSW位定义

位地址

D7H

D6H

D5H

D4H

D3H

D2H

D1H

DOH

位名称

CY

AC

FO

RSI

RSO

OV

Fl

P

•CY(PSW.7):进位标志位。CY是PWS中最常用的标志位,其功能有两个:一是存放算

术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位,则CY由硬

件置“1”,否则被清“0”;二是在位操作中,作累加位使用。位传送、位与位或等位操作,操

作位之一固定是进位标志位。

•AC(PSW.6):辅助进位标志位。在进行加或减运算中,若低4位向高4位进位或借位,

AC由硬件置“1”,否则被清“0”。在BCD码调整中也要用到AC位状态。

■F0(PSW.5):用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,

用来控制程序的转向。

・RS1和RSO(PSW.4,PSW,3):工作寄存器组选择位。它们被用于选择CPU当前使用的通

用寄存器组。通用寄存器共有4组,其对应关系如下表所示。

工作寄存器组选择

RSIRSO

寄存器组

片内RAM地址

00

第0组

00H-07H

01

第1组

08H-0FH

10

第2组

10H-17H

11

第3组

18H-1FH

这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。但当单片

机上电或复位后,RSIRSO=OO»

•OV(PSW.2):溢出标志位。在带符号数加减运算中,OV=1表示加减运算超出了累加器A

所能表示的符号数有效范围(-128〜+127),即产生了溢出,因此运算结果是错误的;OV=0

表示运算正确,即无溢出产生。

在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘

积只在A中。

在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正

常进行。

•Fl(PSW.1):保留未使用。

•P(PSW.O):奇偶标志位。P标志位表明累加器A中内容的奇偶性,如果A中有奇数个“1”,

则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。

此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校

验数据传输的可靠性。

1.8

答:

0003H〜002AH这40个单元被均匀地分为5段,作为5个中断源的中断地址区。其中:

0003H-000AH外部中断0中断地址区

OOOBH〜0012H定时器/计数器0中断地址区

0013H-001AH外部中断1中断地址区

001BH〜0022H定时器/计数器1中断地址区

0023H-002AH串行中断地址区

中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。因此在中断地址区中理

应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通

常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址

区,再转到中断服务程序的实际入口地址。

1.9

答:

当需要扩展存储器时,低8位地址A7〜A0和8位数据D7〜D0由P0口分时传送,高8位

地址A15-A8由P2口传送。

因此,只有在没有扩展片外存储器的系统中,P0口和P2口的每一位才可作为双向I/O端口

使用。

1.10

答:

单片机晶振电路

一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2MHz〜12MHz。如果晶体

振荡频率高,则系统的时钟频率也高,单片机运行速度也就越快。MCS-51在通常应用情况

下,使用振荡频率为的6MHz或12MHz的晶振,如果系统中使用了单片机的串行口通信,

则一般采用振荡频率为11.059MHz的晶振。

1.11

答:

规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。

当振荡脉冲频率为12MHz时,一个机器周期为1s;当振荡脉冲频率为6MHz时,一个机器

周期为2So

1.12

答:

(a)上电复位电路(b)按键复位电路

单片机常见的复位电路

图(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RST端的电位与VCC

相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两

个机器周期,便能正常复位。

图(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按图(b)中的

RESET键,此时电源VCC经电阻RI、R2分压,在RST端产生一个复位高电平。

习题2答案

2.1单项选择题

(DC(2)A(3)B(4)A(5)D

2.2

答:

单片机开发过程所用的设备与软件称为单片机开发系统或开发工具。

单片机开发系统包括计算机、单片机在线仿真器、开发工具软件、编程器等。连接方法如下

图所示。

单片机开发系统连接方法示意图

2.3

答:单片机应用系统的开发过程如下:

设计电路图-制作电路板-程序设计一硬软件联调一程序下载—产品测试

2.4

答:

1.在线仿真功能

在线仿真器(InCircuitEmulator,简称ICE)是由系列硬件构成的设备,它能仿真用户系

统中的单片机,并能模拟用户系统的ROM、RAM和I/O口。因此,在线仿真状态下,用户

系统的运行环境和脱机运行的环境完全“逼真

2.调试功能

1)运行控制功能

开发系统应能使用户有效地控制目标程序的运行,以便检查程序运行的结果,对存在的硬件

故障和软件错误进行定位。

2)单片机状态查看修改功能

当CPU停止执行程序运行后,开发系统允许用户方便地读出或修改目标系统资源的状态,

以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。任务2中图2.13给出

了在Mcdwin调试环境下查看单片机内部资源的菜单。

3.程序编译功能

1)程序设计语言

单片机程序设计语言包括机器语言、汇编语言和高级语言。

机器语言是单片机唯一能够识别的语言。

汇编语言具有使用灵活、实时性好的特点。目前,在实际项目开发中较少使用汇编语言。

高级语言通用性好,且具有较好的可读性和可移植性,是目前单片机编程语言的主流。

2)程序编译

单片机开发系统能够提供源程序的编辑、编译和卜载功能以及工程管理功能。

4.程序固化功能

编程器是完成这种任务的专用设备,它也是单片机开发系统的重要组成部分。

习题3答案

3.1单项选择题

(1)A(2)A(3)C(4)C(5)A

(6)B(7)D(8)D(9)A(10)A

(11)B(12)C(13)D(14)D(15)C

3.2填空题

(1)P3口

(2)字节,位

(3)主函数main。

(4)sbitFLAG=P3A1;

(5)sfr

(6)顺序结构、选择结构和循环结构

(7)表达式加上分号“;”

(8)if,switch

(9)do-while,while

(10)无限次

(11)10000

(12)unsignedchar

(13)变量在MCS-51硬件系统中所使用的存储区域

(14),0,

(15)程序存储器ROM中

3.3上机操作题

(1)

//xiti3_3_l.c——第三章习题3.3上机操作题(1)

#include<reg5l.h>

voiddelay(unsignedchari);〃延时函数声明

voidmain()〃主函数

(

while(l){

Pl=0x55;//按状态1的方式点亮8个LED

delay(200);〃延时

Pl=0xaa;〃按状态2的方式点亮8个LED

delay(200);〃延时

}

f

voiddelay(unsignedchari)〃延时函数参见任务1程序exl」.c

(2)

//xiti3_3_2.c——第三章习题3.3上机操作题(2)

#include<reg5l.h>〃包含头文件REG51.H

voiddelay(unsignedchari);〃延时函数声明

voidmain()//主函数

unsignedchari,l,r;

while(l){

1=0x10;〃高4位灯的位置初值为00010000B

r=0x08;//低4位灯的位置初值为00001000B

fbr(i=0;i<4;i-H-){

Pl-(l|r);〃循环点亮灯

1«=1;〃高4位灯的位置移动

r»=l;〃低4位灯的位置移动

delay(200);〃延时

voiddelay(unsignedchari)〃延时函数参见任务1程序exl_l.c

(3)

//xiti3_3_3.c——第三章习题3.3上机操作题(3)

include<reg5l.h>〃包含头文件REG51.H

voiddelay(unsignedchari);//延时函数声明

voidmain()〃主函数

{

unsignedchari;

unsignedchardisplay[]={0x89,0xff,0x86,0xfT,0xc7,0xff,0xc7,OxfT.OxcO,Oxff};

while(l){

fbr(i=0;i<10;i++){

Pl=display;〃显示字送PAn

delay(200);“延时

)

}

}

voiddelay(unsignedchari)〃延时函数参见任务1程序ex1_1.c

习题4答案

4.1单项选择题

(1)B(2)A(3)C(4)A(5)A

(6)B(7)A(8)A(9)D(10)A

(11)C(12)C(13)A(14)D

4.2填空题

(1)①定时器TO②定时器T1③定时器方式寄存器TMOD④定时器控制寄存器TCON

(2)GATE=0

(3)TMOD=0x05

(4)选择定时器T0"1的工作方式

(5)控制定时器的启动、停止,标志定时器的溢出和中断情况。

(6)定时控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE、中断优先权寄存

器IP

(7)外部中断0、定时器0、外部中断1、定时器1、串行口

(8)电平触发方式

(9)硬件自动清除、软件清除、硬件配合软件共同清除

(10)0

4.3

答:

当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过•个机器周期,计数

器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,如果单片机系统采用12M

晶振,则计数周期为:,这是最短的定时周期,适当选择定时器的初值可获取各种定时时间。

当定时/计数器设置为计数工作方式时,计数器对来自输入引脚TO(P3.4)和T1(P3.5)的外部

信号计数,外部脉冲的下降沿将触发计数,检测•个由1到0的负跳变需要两个机器周期,所以,

最高检测频率为振荡频率的1/24。计数器对外部输入信号的占空比没有特别的限制,但必须保

证输入信号的高电平与低电平的持续时间在一个机器周期以上。

当需要准确计算时间时往往采用定时器的定时方式,而当要对一些外部事件计数时则采用定时

器的计数方式。

4.4

答:

软件定时是通过编写一段延时程序来实现定时,这段延时程序不完成任何操作,只是通过一些

空操作浪费掉•段时间。这样的软件定时往往浪费CPU的工作效率,并且定时不够准确,前面

三章的各个任务中均采用了这种方法。

硬件定时是通过单片机的定时器来实现时间的计算,用户只需要对定时器的工作方式、初始值

赋予合适的数值,启动定时器后,定时器将自动按照机器周期定时。这种由定时器实现的定时

方式,定时时间准确、CPU的工作效率高。

4.5

答:

MCS-51系列单片机的定时/计数器是增1计数器。

对于增1计数器,计数初值应等于最大计数值减去所需要的计数值。

而减1计数器,计数初值就等于所需要的计数值。

例如:假设需要计数50000次。对于增1计数器的单片机,若采用方式1的定时器,最大计数值

为65536,则初值应为:65536-50000=15536«

而对于减1计数器,则计数初值将为50000。

4.6

答:

在定时/计数器工作于方式1下,最大计数值为65536。

若晶振频率为6MHz,贝ij•个机器周期为2|iS,所以最短定时时间为2Hs(计数初值为65535),

最长定时时间为2>6><65536=131072Hs(计数初值为0)

4.7

答:

定时/计数器的4种工作方式由方式寄存器TMOD中的M1、M0来进行选择,具体如下:

MlM0

工作方式

功能说明

00

方式0

13位计数器

01

方式1

16位计数器

10

方式2

自动再装入8位计数器

11

方式3

定时器0:分成两个8位计数器

定时器I:停止计数

4.8

答:

中断是通过硬件来改变CPU的运行方向。计算机在执行程序的过程中,当出现CPU以外的某

种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执

行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行

过程中由于外界的原因而被中间打断的情况称为“中断

调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的:

而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无

法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。

中断的特点:分时操作、实时处理、故障处理

4.9

答:

MCS-51系列单片机有5个中断源,分别是外部中断0、定时器0、外部中断1、定时器1、串行口。

它们的优先级别通过寄存器IP实现。

4.10

答:

外部中断有低电平触发和卜降沿触发两种方式。通过定时器控制寄存器TCON中的ITO、IT1

来选择和设定。

m为中断触发方式控制位,当m=o,外部中断1控制为电平触发方式。当m=i,外部中断

1控制为下降沿触发方式。

4.11

答:

常用的中断函数定义语法如下:

void函数名()interruptn

其中n为中断类型号,C51编译器允许0〜31个中断,n取值范围0—31。

习题5答案

5.1单项选择题

(I)C(2)A(3)C(4)B⑸B

(6)D(7)B(8)C⑼A

5.2

(1)led[k]

(2)delay()

5.3

答:

不能,因为共阴极和共阳极数码管com段接的电平不一样,点亮段码所需的电平也不同。应该

将共阴极数码管的com端接至GND匕P1口和8个段之间接上非门。

5.4

答:

LED静态显示时各位数码管相对独立,公共端恒定接地(共阴极)或正电源(共阳极),每个

数码管的8个字段分别与•个8位I/O口地址相连,适合于2个及其以下的数码管显示。动态显示

时各位数码管的段选线相应并联在一起,由一个8位的I/O口控制,各位的段选线由另外的I/O

口控制。

5.5

答:

每次只能点亮一行。其采用的为动态显示,具体原理为:从第一行开始点亮,每行点亮之间延

时1ms,第八行结束后再从第一行开始循环显示。利用人体的视觉驻留现象,所以看到的是—个

稳定的图形,好像8行同时点亮。

5.6

答:

可以采用硬件和软件两种方式,硬件匕可在键输出端加RS触发器或单稳态触发器构成去抖电

路,软件上可以在检测到有按键按下时.,执行一个10ms左右的延时程序,然后确认该键是否仍

保持闭合状态的电平。

5.7

答:

独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,

适合于八键以下使用;矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点匕在按键

数量较多时.,矩阵式键盘较之独立式按键键盘要节省很多I/OU,适合于八个键以上使用。

习题6答案

6.1单项选择题

(1)D(2)C(3)A(4)A(5)B(6)D

6.2填空题

(1)分辨率和建立时间

(2)ILE、、、、

(3)模拟,数字;数字,模拟

6.3

答:

DAC0832与8051单片机接口时,主要有如卜控制信号:ILE、/CS、/WR1、/WR2、/XFER,

作用分别是:

(1):转入寄存器片选信号,低电平有效。

(2)ILE:输入寄存器的数据锁存允许信号,高电平有效。

(3):输入寄存器的数据写信号,低电平有效。

(4):DAC寄存器写信号,并启动转换。低电平有效。

(5):数据向DAC寄存器传送控制信号,传送后即启动转换,低电平有效。

ADC0809叮8051单片机接口时,控制信号主要有:ALE、START.EOC、OE„作用分别是:

(1)ALE:地址锁存允许信号在ALE上.升沿,ADDA、ADDB、ADDC地址状态被送入地址

锁存器中。

(2)START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始

进行A/D转换;在A/D转换期间,START应保持低电平。

(3)OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输

出数据线呈高电阻;OE=I,输出转换得到的数据。

(4)EOC——转换结束状态信号。启动转换后,系统自动设置EOC=0,转换完成后,EOC=lo

该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。

6.4

答:

所谓单缓冲方式就是使0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控的锁

存方式,或者两个输入寄存器同时受相同的信号控制的方式。在实际应用中,如果只有一路模

拟量输出,或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。

所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。

6.5

答:

判断A/D转换是否结束一般可采用3种方式,即EOC信号和单片机相连可有3种方式:

①延时方式:EOC悬空,启动转换后,延时100陷后读入转换结果。

②查询方式:EOC接单片机端口线,查得EOC变高,读入转换结果,作为查询信号。

③中断方式:ROC经非门接单片机的中断请求端,转换结束作为中断请求信号向单片

机提出中断申请,在中断服务中读入转换结果。

其中延时方式和查询方式均占用单片机CPU,即在这段时间,CPU只能做延时或查询的工作,

而采用中断方式时,CPU可先执行主程序,一旦产生中断,才去处理数据接收的工作,使得CPU

利用率较前面两种要高。

6.6

答:

(1)周期为25ms的锯齿波发生器C语言源程序如下:

#include<absacc.h>

#include<reg51.h>

#defineDA0832XBYTE[0x7fff]

#defineucharunsignedchar

#defineuintunsignedint

uchari;

voiddelay_100us()

{TH1=0xff;〃置定时器初值0xff9c,BP65436,定时0.1ms

TL1=0x9c;

TR1=1;//启动定时器1

while(!TF1);〃查询计数是否溢出,即定时0.1ms时间到,TF1=1

TF1=0;〃0.1ms时间到,将定时器溢出标志位TF清零

voidmain(void)

{TMOD=0x10;〃置定时器1为方式1

while(1)

{for(i=0;i<=255;i++)〃形成锯齿波输出值,最大255

{DA0832=i;//D/A转换输出

delay_100us();

)

)

(2)周期为50ms的三角波C语言源程序如下:

#include<absacc.h>

#include<reg51.h>

#defineDA0832XBYTE[0x7fff]

#defineucharunsignedchar

#defineuintunsignedint

uchari,j;

voiddelay_100us()

{TH1=0xff;〃置定时器初值0xff9c,BP65436,定时0.1ms

TL1=0x9c;

TR1=1;//启动定时器1

while(!TF1);〃查询计数是否溢出,即定时0.1ms时间至U,TF1=1

TF1=0;〃0.1ms时间到,将定时器溢出标志位TF清零

}

voidmain(void)

{TMOD=0x10;〃置定时器1为方式1

while(1)

{for(i=0;i<=255;i++)〃形成三角波输出值,最大255

{DA0832=i;//D/A转换输出

delay_100us();

)

for(j=255;j>=0;H〃形成三角波输出值,最大255

{DA0832=j;〃D/A转换输出

delay_100us();

(3)周期为50ms的方波C语言源程序如下:

#include<absacc.h>

#include<reg51.h>

#defineDA0832XBYTE[0x7fff]

#defineucharunsignedchar

#defineuintunsignedint

uchari,j;

voiddelay_25ms()

{TH1=0x9e;//置定时器初值

TL1=0x58;

TR1=1;//启动定时器1

while(!TF1);〃查询计数是否溢出,即定时25ms时间到,TF1=1

TF1=0;〃25ms时间到,将定时器溢出标志位TF清零

)

voidmain(void)

{TMOD=0x10;//置定时器1为方式1

while(1)

{DA0832=255;〃形成方波输出值,最大255,D/A转换输出

delay_25ms();

DA0832=0;//D/A转换输Hl

delay_25ms();

)

)

6.7

答:

在选定转换通道后,ADC0809工作的主要有以下儿个步骤:

1.启动A/D转换,给START引脚一个下降沿;

2.ALE信号与START信号一般连接在一起,这样使得在ALE信号的前沿写入地址信号,紧

接着在其后沿就启动转换;

3.查询EOC引脚状态,EOC引脚由0变1,表示A/D转换过程结束;

4.允许读数,将0E引脚设置为1状态。

5.读取A/D转换结果,从ADC0809的外部地址读取其转换结果。

习题7答案

7.1单项选择题

⑴A(2)B⑶D(4)C(5)B

(6)C(7)B(8)C(9)C(10)A

(H)C(12)D(13)A

7.2

答:

在异步通信中,数据是不连续传送的,数据通常是以字符为单位组成字符帧传送的。字符帧山

发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地

接收。发送端和接收端可以山各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,

互不同步。

异步通信的字符帧格式分为无空闲位帧格式和有空闲位帧格式。

7.3

答:

T1的溢出率取决于单片机定时器T1的计数速率和定时器的预置值。当定时器T1做波特率发生

器使用时.,通常是工作在模式2,即自动重装载的8位定时器,此时TL1作计数用,自动重装载

的值在TH1内。设计数的预置值(初始值)为X,那么每过256-X个机器周期,定时器溢出一

次。为了避免溢出而产生不必要的中断,此时应禁止T1中断。

7.4

答:

参考程序如下:

#include<reg51.h>

#defineucharunsignedchar

codeuchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f};

ucharsend0={OxO4,0x03,0x02,0x01,0x08,0x07,0x06,0x05};

inti,t;

〃延时函数,当t取值12000时,若晶振fosc=12MHz,大约延时1s

voiddelay(t)

{for(i=0;i<t;i++)

{;}

)

main()

(

unsignedchari,j,k,m;

SCON=OxOO;〃串行口工作方式

while(1)

{for(i=0;i<6;i++)

{SBUF=(tab[send;;;〃发送第i个数据

while(TI==0);//等待发送是否完成

TI=0;//TlfffO

}

delay(12000);

for(m=6;m<12;m++)

{SBUF=(tab[send[m]]);//发送第i个数据

while(TI==0);//等待发送是否完成

TI=0;//Tl清0

}

delay(12000);

}

}

7.5

参考程序如卜.:

甲机发送

发送子程序参考如下:

#include<reg51.h>

#include<absacc.h>

^include<stdio.h>

#includevmath.h>

includevstdlib.h>

#defineucharunsignedchar

ucharFREQ;/*定时器计数变量*/

voidmain(void)

II以下是设置中断和定时器

EA=1;PT0=1;

ET0=1;

TCON=0x08;

TMOD=Ox21;

//定时器Q为产生10ms的中断,定时器1为9600bit/s的波特率发生器

TH0=-10000/256;

TL0=-10000%256;

TL1=0xfd;

TH1=0xfd;

SCON=Oxd8;1/串行口方式3发送

PCON=OxOO;

TR1=1;//开定时器

TR0=1;

77=7;

while(1){}

}

//定时器。的中断服务程序,向串口发送“A”数据

voidintsvrl(void)interrupt1

//重新装入定时器0的初值;

TH0=-10000/256;

TL0=-10000%256;

FREQ=FREQ+1;//定时器TO的低四位赋值

if(FREQ==100)秒判断

FREQ=O;

printf("A");//发送字符

}

乙机接收子程序参考如下:

#include<reg51.h>

#defineucharunsignedchar

voidmain(void)

{ucharastring;

〃在11.059MHz晶振下,设置串行口波特率为9600bit/s,用串行口方式3接收

TMOD=0x20;

TH1=0xfd;TL1=0xfd;

TR1=1;

SCON=Oxdb;

PCON=OxOO;

while(1)

{

while(RI==O);

RI=O;

astring=SBUF;

lcd_display();〃液晶显示参考前面章节程序

7.6

答:

参考程序如下:

#indude<reg51.h>

^define1NBUF_LEN4〃数据长度

unsignedc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论