《单片机原理及应用》思考题与习题参考答案

更新时间:2024-04-08 09:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理及应用》思考题与习题参考答案

绪论

0.1解:

单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。

单片机的主要特点有:(1)可靠性高(2)便于扩展(3)控制功能强(4)低电压、低功耗(5)片内存储容量较小,除此之外,单片机还具有集成度高、体积小、性价比高、应用广泛、易于产品化等特点 0.2 解:

当前单片机的主要产品有:Intel的8051系列、Motorola的M68HC系列、Philips(飞利浦)的80C51系列、台湾义隆公司(EMC)EM78系列单片机、美国Microchip公司的PIC单片机系列、Atmel公司的AT90系列单片机Ubicom公司的Scenix单片机、日本爱普生科技公司的Epson单片机、Zilog公司的Z86系列、美国国家半导体公司NSCOP8单片机、台湾Winbond(华邦)的W78系列等。

MCS-51为主流产品。 MSP430的功能较强。是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。 EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-OPTION功能、I/O唤醒功能、多功能I/O口等。具有优越的数据处理性能,采用RISC结构设计。

Microship单片机是市场份额增长较快的单片机。它的主要产品是PIC系列8位单片机。CPU采用RISC结构,运行速度快,价格低适于用量大、档次低、价格敏感的产品。

Motorola是世界上最大的单片机生产厂家之一,品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

AVR是增强RISC内载Flash的单片机,单片机内部32个寄存器全部与ALU直接连接,突破瓶颈限制,每1MHz可实现1MIPS的处理能力,为高速、低功耗产品。端口有较强的负载能力,可以直接驱动LED。支持ISP、IAP,I/O口驱动能力较强。

Scenix单片机除传统的I/O功能模块如并行I/O、UART、SPI、I2C、A/D、PWM、PLL、DTMF等,增加了新的I/O模块(如USB、CAN、J1850、虚拟I/O等)。其特点是双时钟设置,指令运行速度较快,具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定。

Epson单片机主要为日本爱普生科技公司生产的LCD配套。其单片机的特点是LCD驱动部分性能较好,低电压、低功耗。

Z8单片机是Zilog公司的主要产品,采用多累加器结构,有较强的中断处理能力。价格低。

COP8单片机片内集成了16位A/D,内部使用了抗电磁干扰EMI(Electro Magnetic Interference)电路,在看门狗电路及单片机的唤醒方式上都有独到之处。程序加密控制功能

也比较好。

W78系列与标准的8051兼容,W77系列为增强型51系列,对8051的时序作了改进,在同样时钟频率下,速度提高2.5倍。Flash ROM容量从4KB到64KB,有ISP功能。 0.3解:

(1)第一阶段(1974—1976年):制造工艺落后,集成度低,而且采用了双片形式。典型的代表产品有Fairchild公司的F8系列。其特点是:片内只包括了8位CPU,64B的RAM和两个并行口,需要外加一块3851芯片(内部具有1KB的ROM、定时器/计数器和两个并行口)才能组成一台完整的单片机。

(2)第二阶段(1977—1978年):在单片芯片内集成CPU、并行口、定时器/计数器、RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广。典型的产品有Intel公司的MCS-48系列。其特点是,片内集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,无串行接口,有1个8位的定时器/计数器,中断源有2个。片外寻址范围为4KB,芯片引脚为40个。

(3)第三阶段(1979—1982年): 8位单片机成熟的阶段。其存储容量和寻址范围增大,而且中断源、并行I/O口和定时器/计数器个数都有了不同程度的增加,并且集成有全双工串行通信接口。在指令系统方面增设了乘除法、位操作和比较指令。其特点是,片内包括了8位的CPU,4KB或8KB的ROM,128B或256B的RAM,具有串/并行接口,2个或3个16位的定时器/计数器,有5~7个中断源。片外寻址范围可达64KB,芯片引脚为40个。代表产品有Intel公司的MCS-51系列,Motorola公司的MC6805系列,TI公司的TMS7000系列,Zilog公司的Z8系列等。

(4)第四阶段(1983年至今): 16位单片机和8位高性能单片机并行发展的时代。16位机的工艺先进,集成度高,内部功能强,运算速度快,而且允许用户采用面向工业控制的专用语言,其特点是,片内包括了16位的CPU,8KB的ROM,232B 的RAM,具有串/并行接口,4个16位的定时器/计数器,有8个中断源,具有看门狗(Watchdog),总线控制部件,增加了D/A和A/D转换电路,片外寻址范围可达64KB。代表产品有Intel公司的MCS-96系列,Motorola公司的MC68HC16系列,TI公司的TMS9900系列,NEC公司的783××系列和NS公司的HPC16040等。然而,由于16位单片机价格比较贵,销售量不大,大量应用领域需要的是高性能、大容量和多功能的新型8位单片机。

近年来出现的32位单片机,是单片机的顶级产品,具有较高的运算速度。代表产品有Motorola公司的M68300系列和Hitachi(日立)公司的SH系列、ARM等。 0.4解:

面对工控领域对象,嵌入到工控应用系统中,实现嵌入式应用的计算机称之为嵌入式计算机系统,简称嵌入式系统。单片机从体系结构到指令系统都是按照嵌入式应用特点专门设计的,能最好的满足对控制对象、应用系统的嵌入、现场的可靠运行以及非凡的控制品质要求。 0.5解:

选择原则:主要从指令结构、运行速度、程序存储方式和功能等几个方面选择单片机。

MCS-51为主流产品。

Motorola是世界上最大的单片机厂商。品种全、选择余地大、新产品多。其特点是噪声

低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

Microship单片机是市场份额增长较快的单片机。它的主要产品是PIC系列8位单片机。其特点是运行速度快,低价位,适用于量大、档次低、价格敏感的产品。

美国德州仪器(TI)公司生产的MSP430系列单片机是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。

在嵌入式系统低端的单片机领域,Intel公司的MCS-51形成了既具有经典性又不乏生命力的一个单片机系列。许多半导体厂家、电器公司以MCS-51系列中的8051为基核,推出了许多兼容性的CHMOS单片机----80C51系列。

此外,还有Zilog、EM78、Senix、NEC、Epson、NS、三星、富士通、华邦、Philips、ARM等单片机。

第1章

1.1解:

MCS-51为主流产品。 MSP430的功能较强。是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。 EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-OPTION功能、I/O唤醒功能、多功能I/O口等。具有优越的数据处理性能,采用RISC结构设计。

PIC系列8位单片机是Microship公司的产品。CPU采用RISC结构,运行速度快,价格低适于用量大、档次低、价格敏感的产品。

Motorola是世界上最大的单片机生产厂家之一,品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

AVR是增强RISC内载Flash的单片机,单片机内部32个寄存器全部与ALU直接连接,突破瓶颈限制,每1MHz可实现1MIPS的处理能力,为高速、低功耗产品。端口有较强的负载能力,可以直接驱动LED。支持ISP、IAP,I/O口驱动能力较强。 1.2解:

MCS-51单片机在片内集成了中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。

CPU是整个单片机的核心部件,由运算器和控制器组成。运算器可以完成算术运算和逻辑运算,其操作顺序在控制器控制下进行。控制器是由程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)、定时控制逻辑和振荡器OSC等电路组成。CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。

程序存储器(ROM)用于存储程序、常数、表格等。 数据存储器(RAM)用于存储数据。

8051内部有两个16位可编程序的定时器/计数器T0和T1,均为二进制加1计数器。可用于定时和对外部输入脉冲的计数。

8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。可实现

对5个中断源的管理。8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。其中,IE用于控制5个中断源中哪些中断请求被允许向CPU提出,哪些中断源的中断请求被禁止;IP用于控制5个中断源的中断请求的优先权级别。

I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。可分为串行和并行I/O接口。 1.3解:

80C51单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3。在无片外扩展的存储器的系统中,端口使用。在具有片外扩展存储器的系统中,位地址线和双向数据总线。1.4解:

控制线一共有6条:(1)ALE/PROG:地址锁存允许器时,8051CPU在P0.7出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,自动在ALE/PROG上输出频率为时脉冲源使用。

(2)EA/Vpp:允许访问片外存储器/编程电源线,片外ROM。若EA=0,则允许使用片内ROM;若(3)PSEN:片外ROM选通线,上产生一个负脉冲,用于为片外ROM芯片的选通。其他情况下态。

(4)RST/VPD:复位/备用电源线,可以使8051处于复位工作状态。1.5解:

指令:人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。程序:一系列指令的有序集合称为程序。程序在计算机中是按序执行的,况下程序是按序执行的,当执行转移、调用、返回等指令时,程序转移到相应的目的地址处执行。CPU根据程序计数器中,ID对IR中的指令码进行译码,定时控制逻辑在时,产生执行本条指令所需的全部信号,完成本条指令的执行。1.6解:

(1)80C51在结构上的特点 /编程线,配合P0.0引脚上输出片外存储器低8位地址的同时在fosc/6的脉冲序列。在执行访问片外ROM的指令MOVC时,CPU通过程序计数器PC中的地址将欲执行指令的指令码从存储器中取出,存放在

这4个端口的每一位都可以作为双向通用I/OP2口作为高8位地址线,P0口分时作为低8P0口引脚的第二功能使用。在访问片外存储ALE/PROG上输8051该脉冲序列可用作外部时钟源或作为定可以控制8051使用片内ROM还是使用EA=1则允许使用片外ROM。

8051自动在PSENPSEN线均为高电平封锁状

PC控制程序的执行顺序,一般情IROSC配合下对ID译码后的信号进行分 ~80C51采用将程序存储器和数据存储器截然分开,分别寻址的结构,称为Harvard结构。

(2)在物理和逻辑上的地址空间

存储器上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。

在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 (3)访问格式

访问片内RAM采用MOV格式 访问片外RAM采用MOVX格式 1.7解:

堆栈是一个特殊的存储区。主要功能是暂时存放数据和地址,它的特点是按照“先进后出”的存取数据。堆栈指针栈的栈顶地址的寄存器,它决定了堆栈在内部1.8解:

8051有21个特殊功能寄存器(PCFFH地址单元中,共占据了128个存储单元,的分布和功能见教材P18表1.2.2。 1.9解:

8051单片机的4个I/O口在结构上是基本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入读数据。各自特点如下:

(1)P0口为双向8位三态I/O口,它既可作为通用总线及低8位地址总线的分时复用口。作为通用接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。负载。

(2)P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置TTL负载。

(3)P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高(4)P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。作为通用I/O口时,功能与使用时,各位的作用见教材P23表1.2.5所示。1.10解:

数据指针DPTR是16位的专用寄存器,它由两个(低8位)组成。专门用来寄存片外RAMSP是一个RAM中的物理位置。,它们被离散地分布在内部83位可以位寻址。,使输出驱动场效应管FET截止,I/OI/O口时,输出数据可以得到锁存,不需外P1口相同,常用第二功能。作为第二功能8位的寄存器I/O口进行数据存取时的地址。编程时,

通常用来保护断点和现场。8位寄存器,是用于指示堆 RAM的80H~特殊功能寄存器SFR以免误每个引脚可驱动8个TTLI/O口使用,它的每一1。每个引脚可驱动4个I/O设备。它与地8位地址总线使用。

DPH(高8位)和DPL除外)其中有“1”口,又可作为外部扩展时的数据 及扩展

既可以按16位寄存器来使用,也可以按两个8位寄存器来使用(即高位字节寄存器DPH和低位字节寄存器DPL)。

DPTR主要是用来保存16位地址,当对64KB外部数据存储器寻址时,可作为间址寄存器使用, 1.11解:

程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加

以改变。各个标志位的意义如下:

PSW.7(Cy):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。PSW.5(F0):用户标志位。 PSW.4、PSW.3(RS1和 RS0):寄存器组选择位。PSW.2(OV):溢出标志位。 PSW.1(空缺位):此位未定义。 PSW.0(P):奇偶校验位。 1.12解:

开机复位后,CPU使用的是第0组工作寄存器。它们的地址是00H-07H。CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组。1.13解:

8051片内数据存储器有256B寻址空间。存储器空间的地址范围为:在这个存储器空间又可分为:

基本的数据存储区:00H—-7FH,可划分为工作寄存器、位寻址区、堆栈与数据缓冲区。

SFR空间:80H——FFH 1.14解:

片内RAM低128单元划分及主要功能如下:(1)工作寄存器组(00H——1FH)这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。(2)位寻址区(20H——2FH)16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位寻址。

(3)堆栈与数据缓冲区(30H——7FH)用于设置堆栈、存储数据。 1.15解:

程序存储器通过EA/Vpp引脚选择。允许使用片外ROM。

数据存储器通过指令区分:访问片内RAM采用MOV指令,访问片外RAM采用MOVX指令。

EA=0, 00H—-FFH

若EA=1则

若则允许使用片内ROM;1.16解:

时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。时钟周期又称为节拍(用P表示)。时钟周期是时序中的最小单位。一个状态有两个节拍,

机器周期定义为实现特定功能所需的时间。MCS-51的机器周期由12个时钟周期构成。 执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。MCS-51的指令可能包括1~4个不等的机器周期。

当MCS-51的主频为12MHz时,一个机器周期为1?s。执行一条指令需要的最长时间为4?s。 1.17解:

8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态如下:

寄存器 复位时内容 寄存器 复位时内容 PC 0000H TCON 0×000000B ACC 00H TL0 00H B 00H TH0 00H PSW 00H TH1 00H SP 07H TH1 00H DPTR 0000H SCON 00H P0—P3 FFH SBUF 不确定 TMOD ××000000B PCON 0×××0000B 单片机复位方法有:上电自动复位,按键电平复位和外部脉冲三种方式。

第2章

2.1解:

8051的指令系统由111条指令组成。如果按字节数分类,有49条单字节指令节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有期指令、45条双周期指令和2条四周期指令,以单周期指令为主。

8051的指令系统具有以下特点:

(1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。这样可以大大提高传送速度和缓解累加器A的瓶颈效应。 (2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编成翻译算法提供了方便。 (3)在算术运算指令中设有乘法和除法指令

(4)指令系统中一些对I/O口进行操作的指令具有“读——修改——写”的功能。这一功能指:在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2度入内部,行修改、改变,然后重新写到锁存器中去。这种类型指令包含所有的逻辑操作和位操作指令。46条双字64条单周进

(5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。 2.2解:

MCS-51单片机指令系统按功能可分为5类: (1)数据传送指令 (2)算术运算指令

(3)逻辑运算和移位指令 (4)控制转移指令 (5)位操作指令

MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:

寻址方式 使用的变量 寻址范围 立即寻址 程序存储器 内部RAM低128个字节; 直接寻址 特殊功能寄存器SFR 寄存器寻址 R0~R7;A、B、DPTR、C @R0、@R1、SP 内部RAM、堆栈指针SP 寄存器间接寻址 @R0、@R1、@DPTR 外部RAM 变址寻址 @A+PC、@A+DPTR 程序存储器 相对寻址 PC+偏移量 程序存储器 内部RAM低128B位寻址区 位寻址 可位寻址的特殊功能寄存器位 2.3解:

访问特殊功能寄存器,应采用直接寻址、位寻址方式。 访问外部数据存储器,应采用寄存器间接寻址方式。 在0~255B范围内,可用寄存器R0、R1间接寻址:

MOVX A,@R0 或 MOVX A,@R1 MOVX @R0,A 或 MOVX @R1,A

在0~64KB范围内,可用16位寄存器DPTR间接寻址:

MOVX A,@DPTR MOVX @DPTR,A

2.4解:

这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。 2.5解:

虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。

位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。

CLR bit MOV C,bit MOV bit,C

SETB bit ANLC,/bit JNB bit,rel CPL bit JB bit,rel ANL C,bit 2.6解:

在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。

长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。 2.7解:

指令的转移范围不同。

SJMP是256B范围内的相对转移指令,是64KB范围内的无条件长跳转指令。2.8解:

MOVC A , @A+DPTR:访问外部程序存储器指令,功能为程序存储器内容送累加器。

MOVX A , @DPTR:访问外部数据存储器指令,功能为外部数据存储器内容送累加器指令. 2.9解:

使用@A+DPTR基址变址寻址时,被访问字节地址的偏移量。

使用@A+PC基址变址寻址时,常数表格中的被访问字节的偏移量。2.10解:

结果为:(A)=30H (R02.11解:

结果为: (61H)=24H (31H)=0FFH 2.12解:

指令 MOV A,40H MOV R0,A MOV P1,#80H MOV @R0,20H MOV DPTR,#2000H MOV 40H,30H MOV R0,30H MOV D0H,R0 MOV 10H,#10H MOV A,@R0 MOV P2,P1 2.13解:

AJMP是2KB范围内的无条件短跳转指令, DPTR为常数且是表格的首地址,PC仍是下条指令首地址,而A则是从下条指令首地址到 =50H (50H)=00H (51H)= (62H)=10H (30H)=00H DPTR=2410H SP=60H 源操作数的寻址方式 直接寻址 寄存器寻址 立即寻址 寄存器间接寻址 立即寻址 直接寻址 直接寻址 直接寻址 立即寻址 寄存器间接寻址 寄存器寻址 LJMPA为从表格首址到30H 执行指令后的结果

(A)=50H (R0)=50H (P1)=80H (50H)=30H (DPTR)=2000H (40H)=40H (R0)=40H (D0H)=40H (10H)=10H (A)=50H (P2)=80H

) (1)R1的内容传送到R0 ; MOV A, R1 MOV R0, A

(2)片外RAM 20H单元内容送R0 ; MOV DPTR, #0020H MOVX A, @DPTR MOV R0, A

(3)片外 RAM 20H单元的内容送片内RAM 20H单元; MOV DPTR, #0020H MOVX A, @DPTR MOV 20H, A

(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元; MOV DPTR, #1000H MOVX A, @DPTR MOV 20H, A (5)ROM 2000H单元的内容送R0单元; MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV R0H, A

(6)ROM 2000H 单元的内容送片内RAM 20H单元; MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR

MOV 20H, A

(7)ROM 2000H单元的内容送片外RAM 20H单元。 MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV DPTR, #0020H MOVX @DPTR, A

2.14解:

ORG 0000H LJMP START ORG 0030H START: MOV A,22H ADD A,32H DA A MOV 42H,A MOV A,23H

2.15解:

ADDC A,33H DA A

MOV 43H,A

SJMP $ END

ORG 0000H

LJMP MAIN ORG 0030H MAIN: MOV R7,#20H

MOVX @DPTR,A INC R1 INC DPTR

DJNZ R7,LOOP 2.16解:

MAIN: LP2: LP1:

2.17解: START: 2.18解: ORG LJMP ORG MAIN: MOV MOV R1,#40H MOV DPTR,#3000H LOOP:MOV A,@R1

ORG 0000H LJMP MAIN ORG 0030H MOV R0,#30H MOV R1,#00H MOV R2,#00H MOV R3,#07H MOV A,@R0 ADD A,R2 MOV R2,A JNC LP1 INC R1 INC R0

ORG 0000H LJMP START ORG 0030H

MOV DPTR,#2001H MOVX A,@DPTR MOV 30H,A MOV DPTR,#2002H MOVX A,@DPTR ADD A,30H MOV B,A MUL AB MOV R1,A CJNE A,#10,NET1 MOV DPTR,#2000H MOVX @DPTR,A

0000H MAIN 0030h DPTR,#2000H

SJMP $ END

DJNZ R3,LP2

MOV R3,#03H LP3: CLR C

MOV A,R1 RRC A

MOV R1,A MOV A,R2 RRC A

MOV R2,A DJNZ R3,LP3 MOV 3AH,R2 SJMP $

END

SJMP NET3 NET1: JNC NET2 CLR C

MOV A,R1 SUBB A,#10

MOV DPTR,#2000H MOVX @DPTR,A

SJMP NET3 NET2: MOV A,R1 ADD A,#10

MOV DPTR,#2000H

MOVX @DPTR,A NET3: SJMP $ END

MOV A,#OFFH MOVX @DPTR,A MOV DPTR,#2100H MOV A,#34H

MOVX @DPTR,A MOV DPTR,#2008H MOV A,#33H MOVX @DPTR,A MOV DPTR,#2108H MOV A,#44H MOVX @DPTR,A MOV DPTR,#200EH MOV A,#0EEH MOVX @DPTR,A MOV DPTR,#210EH MOV A,#32H MOVX @DPTR,A MOV DPTR,#2000H MOV R1,#30H MOV R2,#15 LOOP: MOVX A,@DPTR

MOV @R1,A INC DPTR INC R1 DJNZ R2,LOOP MOV R1,#30H MOV DPTR,#2100H MOV R2,#15 MOV R0,#40H LOOP2:

2.19解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#100 MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV DPTR,#2000H LOOP: MOVX A,@DPTR CJNE A,#00H,NET1 INC R3 INC DPTR

2.20解:

MOVX A,@DPTR CLR C ADDC A,@R1 INC LOOP1 MOV @R0,@01 SJMP LOOP4 LOOP1: MOV @R0,#00 LOOP4: INC R0 MOV @R0,A INC R1 INC DPTR INC R0 DJNZ R2,LOOP2 MOV R0,#40H MOV DPTR,#2200H MOV R2,#30 LOOP3: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LOOP3 SJMP $ END

DJNZ R2,LOOP

SJMP NET3 NET1: JC NET2 INC R4 INC DPTR

DJNZ R2,LOOP

SJMP NET3 NET2: INC R5 INC DPTR

DJNZ R2,LOOP NET3: SJMP $

END

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV DPTR,#1000H MOV A,#22H MOVX @DPTR,A MOV DPTR,#1030H MOV A,#33H MOVX @DPTR,A MOV DPTR,#1000H MOV R2,#31H MOV R0,#30H LOOP: 2.21解:

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV DPTR,#2040H MOV R2,#50 CLR 7FH DEC R2 LS: MOVX A,@DPTR MOV 20H,A INC DPTR MOVX A,@DPTR MOV 21H,A MOV A,20H

2.22解: ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL SUBONE AJMP $

; SUBONE use dptr,a,30h,31h SUBONE: MOV DPTR,#2000H LOOP: MOVX A,@DPTR XRL A,#41H

MOVX

A,@DPTR

MOV @R0,A INC DPTR INC R0

DJNZ R2,LOOP MOV DPTR,#1000H MOV A,#00 MOV R2,#31H LOOP1: MOVX @DPTR,A INC DPTR DJNZ R2,LOOP1 SJMP $

END

CJNE A,21H,LOOP LOOP: JNC LOOP1 MOV A,20H MOVX @DPTR,A DEC DPTR MOV A,21H MOVX @DPTR,A INC DPTR SETB 7FH LOOP1: DJNZ R2,LS JB 7FH,MAIN SJMP $ END

JNZ TT MOV A,30H MOV DPTR,#20A0H MOVX @DPTR,A MOV DPTR,#20A1H MOV A,31H MOVX @DPTR,A RET TT: INC DPTR MOV 30H,DPH

MOV

31H,DPL

MOV A,31H CJNE A,@00H,LOOP 2.23解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#20 MOV R1,#30H MOV DPTR,#2000H TT: MOVX A,@DPTR CLR C SUBB A,#30H SWAP A MOV 41H,A INC DPTR MOVX A,@DPTR CLR C SUBB A,#30H MOV @R1,A 2.24解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV DPTR,#2400H MOV A,#07H MOVX @DPTR,A MOV DPTR,@2450H MOV A,#06H MOVX @DPTR,A MOV 30H,#24H MOV 31H,#00H MOV 32H,#25H MOV 33H,#00H

2.25解:

ORG 0000H LJMP MAIN ORG 0030H

MAIN: MOV DPTR,#2030H MOV A,#03H MOVX @DPTR,A MOV DPTR,#2031H

RET END

MOV A,41H XCHD A,@R1 MOV @R1,A INC R1 INC DPTR DJNZ R2,TT

MOV DPTR,#3000H MOV R1,#30H

MOV R2,#0AH TT1: MOV A,@R1

MOVX @DPTR,A INC R1 INC DPTR

DJNZ R2,TT1 SJMP $ END

MOV R2,#51H LOOP: MOV DPH,30H MOV DPL,31H MOVX A,@DPTR MOV DPH,32H MOV DPL,33H MOVX @DPTR,A INC 31H INC 33H DJNZ R2,LOOP AJMP $ END

MOV A,#05H

MOVX @DPTR,A MOV DPTR,#2030H MOVX A,@DPTR LCALL SQR MOV R1,A

MOV DPTR,#2031H

SQR:

TAB: MOVX A,@DPTR LCALL SQR ADD A,R1

MOV DPTR,#2040H MOVX @DPTR,A AJMP $ INC A

MOVC A,@A+PC RET

DB 0,1,4,9,16,25 DB 36,49,64,81,100 DB 121,144,169,196,225 END

第3章

3.1解:

当CPU正在处理某件事情的时候,外部发生的某一事件请求CPU迅速去处理, CPU暂时中止当前的工作,转去处理所发生的事件,处理完该事件以后,再回到原来被中止的地方,继续原来的工作。这种过程为中断,实现这种服务的部件称为中断系统。

功能:①实时处理,能对外界异步发生的事件作出及时的处理。②完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。③实现实时控制。 3.2解:

中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是: (1)先响应优先级高的中断请求,再响应优先级低的中断请求。

(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。(3)如果同级的多个中断请求同时出现,中断请求。

单片机内部自然优先级顺序(由高到低)为外部中断0→定时器3.3解:

(1)80C51有以下中断源:① ① 外部中断② ② 外部中断③ ③ T0:定时器④ ④ T1:定时器⑤ ⑤ TI/RI:串行接口中断请求。(2)通过对特殊功能寄存器各种中断的控制功能。3.4解:

中断系统的初始化步骤如下:(1)开相应中断源的中断允许;(2)设定所用中断源的中断优先级;(3)若为外部中断,则应规定中断触发方式(低电平或负边沿触发)3.5解:

单片机一旦响应中断请求 (1) 根据响应的中断源的中断优先级(2) 执行硬件中断服务子程序调用断点,寻找中断源; (3) 清除相应的中断请求标志位(串行口中断请求标志(4) 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入而转入相应的中断服务程序。(5)中断返回,程序返回断点处继续执行。3.6解:

(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。部的自然优先级顺序(外部中断中断)响应中断。

CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。(2)由中断允许寄存器许(EA置1),然后开放相应中断的中断允许(相应位置

CPU则按单片机内部的自然优先级顺序响应各:

中断→外部中断l→定时器1中断→串行接口中断。

INT0)请求,低电平有效。

INT1)请求,低电平有效。 0溢出中断请求。 1溢出中断请求。

TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现对

。 , 就由硬件完成以下功能:

, 使相应的优先级状态触发器置1;

, 并把当前程序计数器PC的内容压入堆栈,保护RI和TI除外); 

PC, 从

如果是同一优先级的中断,则按单片机内0→定时器0中断→外部中断l→定时器1中断→串行接口

控制开放和禁止中断。欲开放某一中断,则应先开放总中断允1);若要要禁止中断,则EA置O

00(1(/计数器/计数器

IE即可。

(3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0则为低级。其中:PS为串行中断优先级,PTl(0)为定时中断1(0)优先级,PXl(0)外部中断1(0)优先级。 3.7解:

(1)有中断源发出中断请求。

(2)中断总允许控制位EA=l, CPU开放总中断。

(3)申请中断的中断源的中断允许位为1,即该中断没有被屏蔽。 (4)无同级或更高级中断正在服务。 (5)当前指令周期已经结束。

(6)若现行指令为RETI或访问IE或IP指令时,读指令以及紧接着的另一条指令已执行完毕。

满足以上条件,则CPU响应响应中断元的中断请求。 3.8解:

INT1为低电平触发的中断系统初始化程序如下:

ORG 0000H LJMP MAIN ORG 0013H LJMP INTN1 ORG 0100H MAIN: SETB EA SETB EX1 ; 开INT1中断 CLR PX1 ; 令INT1为低优先级 CLR IT1 ; 令INT1为电平触发 SJMP $ END

3.9解:

中断服务程序的入口地址如下表: 中断源 外部中断0(INT0) 定时器T0中断 外部中断1(INT1) 定时器T1中断 串行口中断 中断矢量 0003H 000BH 0013H 001BH 0023H 3.10解: (1)符合以下6个条件可响应新的中断请求:

① 有中断源发出中断请求。

② 中断总允许控制位EA=l, CPU开放总中断。

③ 申请中断的中断源的中断允许位为1,即中断没有被屏蔽。 ④ 无同级或更高级中断正在被服务。 ⑤ 当前的指令周期已结束。

⑥ 若现行指令为RETI或访问IE或lP指令时,该指令以及紧接着的另一条指令已

执行完。

(2)如果新的中断请求\优先级\低于正在执行的中断请求或与其同级,则不能被响应。 3.11解:

有两种方式:电平触发和边沿触发。

(1)电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输人电平。若为低电平,便置IEl(IEO)为“1” ,申请中断;若外部中断引脚为高电平,则IEl(IEO)清零。

(2)边沿触发方式:CPU在每个机器周期的S5P2期间采样外部中断请求引脚的输人电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使IEl(IEO)置1,申请中断;否则,IEl(1E0)置0。 3.12解:

可以。在相应的中断源的中断程序入口地址处,用一条长跳转指令(LJMP Add16),转到相应64K程序存储器的任意地址(Add16)处,执行相应的中断程序。 3.13 解:

将3个中断源的中断请求经过与门连接到MCS-51的外部中断0的输入引脚INT0上。3、2、1中断源的输入引脚分别接到P1.0、P1.1、P1.2引脚上,以备查询。程序如下:

X1 EQU 2000H ;定义中断源1的入口地址 X2 EQU 2100HH ;定义中断源2的入口地址 X3 EQU 2200H ;定义中断源3的入口地址 ORG 0000H

LJMP START ORG 0003H LJMP INT00 START: ?? ??

INT00: JB P1.0, LP1 ;查询中断源,若此中断源无中断则转LJMP 2200H ;转入相应的中断服务 LP1: JB P1.1, LP2 ;查询中断源,若此中断源无中断则转LJMP 2100H ;转入相应的中断服务 LP3: LJMP 2000H ;转入相应的中断服务

?? X1: ?? RETI

X2: ?? RETI

X3: ?? RETI

3.14解:

80C51单片机片内设有2个定时器/计数器:定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器控制。 3.15解:

作定时器用时,计数脉冲来自单片机内部,其频率为振荡频率的计数脉冲来自单片机的外部,即P3.4(T0)和P3.5(T1)两个引脚的输入脉冲。3.16解:

作定时器用时,其定时时间与定时器的工作模式、定时器的定时初值以及单片机的晶振频率有关。作计数器用时,外界计数脉冲的频率不能高于振荡脉冲频率的3.17解:

(1) 工作方式O: 13位定时器/计数器工作方式。

工作方式0由TH0的全部8位和TL0的低5位构成高3位未用。在计数过程中,当TL0的低5位溢出时,都会向数器溢出时,则计数器溢出标志位TF0置位。 (2) 工作方式l: 16位的定时器/计数器方式。

工作方式1由TH0作为高8位,TL0为低8位,在计数过程中,当全部出时,则计数器溢出标志位TF0置位。

(3) 工作方式2: 自动重新装入计数初值的8位定时器/计数器工作方式。工作方式2的16位定时器/计数器被拆成两个8位寄存器初始化时必须装入相同的定时器/计数器初值。定时器/计数器启动后,LP1

LP2

T0和定时器/计数器TMOD、TCON1/12。作计数器用时, 1/24。 位加1计数器,此时TL0的TH0进位,而全部13位计16位计数器溢

TH0和TL0,CPU在对它们TL0按8位加1计数

13器计数,当TL0计数溢出时,置位TF0的同时又从预置寄存器TH0中重新获得计数初值并启动计数。如此反复。适合于需要重复计数的应用场合,也可以当做串行数据通信的波特率发生器使用。

(4) 工作方式3: 两个8位定时器/计数器(仅适用于T0)。

在工作方式3时,定时器/计数器0被拆成两个独立的8位计数器TL0和TH0。其中,TL0既可以作计数器使用,也可以作为定时器使用,定时器/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0只能作为简单的定时器使用,只能借用定时器/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。

一般情况下,只有在T1以工作方式2运行(当波特率发生器用)时,才允许T0工作于方式3。

TMOD用于控制定时器/计数器T0和T1的工作方式,M1M0为工作方式选择位。M1M0=00 方式0,13位定时器/计数器; M1M0=01 方式1,16位定时器/计数器;

M1M0=10 方式2,自动重新装入计数初值的8位定时器/计数器;M1M0=11 方式3,两个8位定时器/计数器(仅适用于T0)。

C/T为定时方式/计数方式选择位。若设定C/T=0,则选择定时器工作方式;若设定C/T=1,则选择计数器工作方式。一个定时器/计数器同一时刻或者作定时用,或者作计数用,不能同时既作定时又作计数用。

GATE:门控位。它的状态决定了定时器/计数器启/停控制取决于TR0和INT0引脚两个条件的组合。若GATE=0,则只由TCON中的启/停控制位器/计数器的启/停。此时,只要TR0=1,则接通模拟开关,使计数器进行加法计数,定时器/计数器启动工作。而如果TR0=0,则断开模拟开关,定时器/计数器停止工作。由外部中断请求信号INT0和TCON中的启/停控制位TR0组合状态控制定时器/停。只有TR0=1,且INT0引脚也是高电平,才能启动定时器/计数器工作,否则,定时器计数器停止工作。

定时器/计数器的定时器/计数器范围为:

工作方式0:13位定时器/计数器方式,因此,最多可以计到213,也就是工作方式1:16位定时器/计数器方式,因此,最多可以计到216,也就是工作方式2和工作方式3:都是8位的定时器/计数器方式,因此,最多可以计到也说是256次。 3.18解:

设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,而得到较长的时间。

3.19解:

选用定时器/计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由电平相间隔而成, 因而只要每隔1 ms对 P1.0 取反一次即可得到这个方波。程序如下: ORG 0000H 

LJMP START  ORG 000BH

LJMP T0INT ; T0中断入口

ORG 0030H

START: MOV SP, #60H ; 初始化程序 MOV TH0, #0FEH ; T0赋初值 MOV TL0, #0BH

MOV TMOD, #01H ;定时器/计数器0工作于方式1 SETB TR0 ;启动T0 SETB ET0 ; 开T0中断

SETB EA

; 开总允许中断

TR0

TR0控制定时若GATE=1,/计数器的启/8 192次。 65 536次。 28,从 1 ms的高低

还是取决于 SJMP $  T0INT: CPL P1.0 MOV TL0, #0BH MOV TH0, #0FE0H RETI END

3.20 解:

程序如下:

ORG 0000H

LJMP START ORG 0100H

START: MOV SP,#60H

MOV TMOD,#02H MOV TH0,#0E7H MOV TL0,#0E7H CLR P1.2 SETB TR0

HIGH0: SETB P1.2

HIGH1: JBC TF0,LOW0 ;50μs到清TF0,转LOW0

AJMP HIGH1 ;50μs未到,转HIGH1等待

LOW0: MOV R7,#7 ;350μs=7×50μs

CLR P1.2 ;P1.2=0输出350μs低电平

LOW1:JBC TF0,LOW2 ;50μs到清TF0,LOW2

AJMP LOW1

LOW2:DJNZ R7,LOW1 ;7次未到转LOW1

AJMP HIGH0 ;7次到转HIGH0 END

3.21解:

选择T0工作于方式1定时500μs

fosc=12MHz16

(2-X)×1μS=500μs X=65036=0FE0CH 程序如下:

ORG 1000H

MOV TMOD,#01H MOV TH0,#0FEH MOV TL0,#0CH SETB TR0

DEL:MOV R7,#4 ;2ms=4×500μs D500: JBC TF0,D2 ;500μs到清TF0,转移 AJMP D500 ;50μs未到,等待

D2: CPL P1.0

MOV TH0,#0FEH ;重装初值 MOV TL0,#0CH DJNZ R7,D500 ;4次未到,转D500

CPL P1.1 AJMP DEL ;4次到,转DEL SJMP $

END

机器周期T?1212??1?10?6s?1?s6fosc12?10

3.22解:

程序如下:

START:

ORG 0000H LJMP START ORG 0030H

MOV TMOD,#09H MOV TL0,#00H MOV TH0,#00H

;设T0为方式1,GATE=1

MOV R0,#4EH JB P3.2,$ SETB TR0 JNB P3.2,$ JB P3.2,$ CLR TR9

MOV @R0,TL0 INC R0

MOV @R0,TH0 MOV R1,#50H MOV R5,#3 ;等待P3.2变低 ;启动T0工作 ;等待P3.2变高 ;等待P3.2再次变低 ;停止计数

;存放计数的二进制数低字节入4EH ;存放计数的二进制数高字节入4EH ;BCD码首址 ;BCD码字节数 3.23解::

为了衡量串行通信的速度,方式有3传送二进制数的信号数(或每秒传送二进制码元的个数),单位是写成b/s(位内平均数据传移速率,单位是字符在串行通信中,进制信号时,描述载波信号每秒钟变化为信号的数量(又称为调制速率)率在数值上可能不相等。3.24解: 异步通信中,一帧来表示一个字符,其字符帧的数据格式为:在一帧格式中,先是一个起始位“平),然后是略),最后是异步通信的优点是不需要传送同步脉冲,包含有起始位和停止位而降低了有效数据的传输速率。3.25解:

CLR A

LOOP1: MOV @R1,A INC R1

DJNZ R5,LOOP1

MOV R7,#10H LOOP2: MOV R0,#4EH MOV R6,#2

CLR C

LOOP3: MOV A,@R0 RLC A

MOV @R0,A INC R0

DJNZ R6,LOOP3 MOV R5,#3

MOV R1,#50H LOOP4: MOV A,@R1 ADDC A,@R1 DA A

MOV @R1,A INC R1

DJNZ R5,LOOP4 DJNZ R7,LOOP2 SJMP $ END

应该有一个测量单位,: 波特率定义为每秒传送信号的数量,单位为波特(/秒)。数据传送速率(或字符传送速率/秒。

传送的信号可能是二进制、八进制或十进制等。波特率才与比特率数值上相等。而在采用调制技术进行串行通信时,

接收器和发送器有各自的时钟,5~8个数据位,规定低位在前,高位在后,接下来是1~2位的停止位“1”(高电平)。 可靠性高,BCD码单元

2字节二进制数左移1位 BCD码字节数

BCD码乘2加C运算

在数据通信中,描述数据传送速度的Baud)。比特率定义为每秒bps(bit per second(或单位时间只有在传送的信号是二波特率是。在这种情况下,波特率与比特0”(低电1位奇偶校验位(可以省所需设备简单;缺点是字符帧中因 ;清存;二进制数位数;二进制数首址;二进制数字节数;;;种)或)定义为每秒传送多少个字符

数据常以字符为单位组成字符帧传送,用 MCS-51单片机的串行接口由发送缓冲器SBUF、发送控制器、接收缓冲器SBUF、输入移位寄存器、接收控制器、波特率发生器等部件组成。

发送缓冲器SBUF用于存放将要发送的数据,接收缓冲器SBUF用于存放接收的数据,输入位移寄存器用于接收缓冲并实现串/并转换,发送/接收控制寄存器用于控制串行口的工作,波特率发生器用于控制串行口发送/接收数据的速度。 3.26解:

随着传输距离的增加,误码率增加,出现重传增加,数据传输速率降低。 3.27解:

串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发\写\命令时(执行\,A\指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完使发送中断标志位中断标志位RI(SCON.O)=0的条件下,置允许接收位REN(SCON.4)=1入移位寄存器,并装载到接收SBUF中,同时使R1=1。当发读指令),便从接收缓冲器SBUF读取信息通过80C5l内部总线送3.28解:

串行口有四种工作方式:方式0(8位同步移位寄存器2(11位异步收发),方式3(11位异步收发)。

字符帧的数据格式为:在一帧格式中,先是一个起始位“个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略)位的停止位“1”。两个字符帧之间可以有空闲位,也可以无空闲位。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率如下:

① 方式0的波特率固定为系统晶振频率的1/12,其值为其中:fosc——系统主机晶振频率

② 方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示: 波特率=(2SMOD/64)×fosc 即:当SMOD=1时,波特率为fosc/32,当SMOD=0时,波特率为③ 方式1和方式3的波特率由定时器T1的溢出率控制。因而波特率是可变的。定时器T1作为波特率发生器,相应公式如下:

波特率=(2SMOD/32)×定时器T1溢出率=T1计数率/产生溢出所需的周期数 =(fosc/12)/(2K?TC)式中:K——定时器T1的位数

TC——定时器T1的预置初值 3.29解:

当一片80C51(主机)与多片80C51(从机)通信时,

① 主机的SM2位置0,所有从机的SM2位置1,处于接收地址帧状态。② 主机发送一地址帧,其中,8位是地址,第9位为地址表示该帧为地址帧。

③ 所有从机收到地址帧后,都将接收的地址与本机的地址比较。使自己的SM2位置0(以接收主机随后发来的数据帧)对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。④ 从机发送数据结束后,要发送一帧校验和,并置第传送结束的标志。

⑤ 主机接收数据时先判断数据接收标志(RB8),冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧)送0FFH,命令该从机重发数据。

TI=1。在满足串行接口接收,就会接收一帧数据进SBUF命令时(执行CPU。 ),方式1(10位异步收发0”(低电平)

fosc/12。 fosc/64

T1溢出率

/数据的区分标志,该位置对于地址相符的从机,9位(TB8)为1RB8=0,则存储数据到缓;若校验和出错,则发A,SBUF\),方式5~81~21和3的波

1\,然后是,最后是

,并把本站地址发回主机作为应答;

,作为从机数据若接收帧的⑥ 主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。

⑦ 从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。 3.30解:

在微机与单片机构成的测控网络信中,对于串行口数据传输接口的抗干扰能力,在不超过接口标准指定的适用范围时,都具有一定的抗干扰能力,以保证信号传输的可靠性。但在一些工业测控系统中,通信环境往往十分恶劣,就必须充分考虑通信的抗干扰能力,以保证通信的可靠性。

(1)选择合适的通信标准。例如:长距离传输采用RS-485标准能有效抑制功模干扰,采用20Ma电流环可以降低信号对各种电器噪声的敏感程度。

(2)在高噪声环境下使用光纤传输介质在高噪声环境下可以有效减少噪声干扰。(3)采用光电隔离技术可以提高系统的安全性和可靠性

(4)在发送器输出接口采用限流电路或在发送器输出端外接电容器,可以有效抑制数据传输过程中的串扰。

(5)采取降低发送端数据速率的方法可以减少接收端接收数据益处的错误。3.31解:11(位)×3600(字符/分钟)=39600b/分钟=660b/s 3.32解:

主程序框图如下: 串口初始化

FFH送SBUF

设 标 志

调延时程序 标志位取反 标志为1 标志为零 FF送SBUF

程序如下: 标志为零 ORG 0040H

MOV SCON,#00H OOH送SBUF MOV SBUF,#0FFH

SETB C MOV 00H,C

AA:ACALL DELAY

CPL 00H MOV C,00H JC BB

MOV SBUF,#00H SJMP CC

BB:MOV SBUF,#0FFH CC:AJMP AA DELAY: MOV R7,#8

D1:MOV R6,#250 D2:MOV R5,#250

3为每个字符11位)。 (方式D3:DJNZ R5,D3

DJNZ R6,D2 DJNZ R7,D1

RET

END

3.33 解:

采用查询方式编写发送程序如下:

ORG 0000H

LJMP START ORG 0030H

START: MOV SCON,#80H

MOV PCON,#80H MOV R0,#20H MOV R7,#16 LS: MOV A,@R0

MOV C,P MOV TB8,C MOV SBUF,A JNB TI,$

CLR TI ;清TI标志位 DJNZ R7,LS

RET

END

3.34 解:

程序如下:

ORG 0000H LJMP START

ORG 0100H

START: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1

MOV SCON,#0D0H MOV R0,#30H MOV R7,#16 JNB RI,$ CLR RI

MOV A,SUBF

JN BP,PN 错

JNB RB8,PER

LJMP RIG PN: JB RB8,PER RIG: MOV @R0,A INC R0

DJNZ R7,LOOP CLR 7F

SJMP $ PER: SETB 7F SJMP $

END

第4.1解:

MCS-51系列单片机具有很强的外部扩展功能。其外部引脚可构成三总线结构,即地址总线、数据总线和控制总线。单片机所有的外部扩展都是通过三总线进行的。(1)地址总线(AB)

;设定方式2发送

;给待发送数据块地址指针R0置初值;给数据块长度计数器R7置初值 ;取一字节数据送A

;P随A变,P→TB8 ;启动发送

;查询发送标志,等待一字节发送完

;设定T1为模式2定时 ;送时间常数

;启动定时器T1

;串行接口设定为方式3,并允许接收

;查询等待接收

;从串行接口中读取数据

;对该字节进行查错处理若P=RB8;若P=1,RB8=0,有错,转出错处理;若P=1,RB8=1,无错,转保存数据;若P=0,RB8=1,有错,转出错处理;若P=0,RB8=0,无错,保存接收到的数据

;16字节未接收完,则继续

;正确接收完16位数据,清出错标志位;校验有错,置位7F

4章

7F

无错,否则有

地址总线用于传送单片机输出的地址信号,宽度为16位,可寻址的地址范围为216=64KB。地址总线是单向的,只能由单片机向外发出。P0口提供低8位地址,P2口提供高8位地址。由于P0口既做地址线又做数据线,分时复用,所以,P0口提供的低8位地址是由P0口经锁存器提供的。锁存信号是由CPU的ALE引脚提供的。

(2)数据总线(DB)

数据总线是由P0口提供的,宽度为8位。P0口是双向三态口,是单片机应用系统中使用最频繁的通道。P0口提供的数据总线上要连接多个扩展的外围芯片,而某一时刻只能有一个有效的数据传输通道。具体哪一个芯片的数据通道有效,是由各个芯片的片选信号控制选择的。欲使CPU与某个外部芯片交换数据,则CPU必须先通过地址总线发出该芯片的地址,使该芯片的片选信号有效,则此时P0口数据总线上的数据只能在CPU和该芯片之间进行传送。

(3)控制总线(CB)

控制总线实际上是CPU输出的一组控制信号。每条控制信号都是单向的,但是由多条不同的控制信号组合而成的控制总线则是双向的。制信号有RD,WR,PSEN, ALE和EA。

4.2解:

接口(也称为I/O接口)是指连接CPU与外部输入CPU与外设之间进行信息传送的媒介。

I/O接口芯片都有一个或几个端口,一个端口对应于接口芯片内部的一个寄存器或一组寄存器,计算机系统要为每个端口分配一个地址,信息传送过程中,接口起着数据锁存、数据缓冲、输入时序控制、可编程、电器特征匹配等作用。 4.3解:

CPU与外设之间传输数据的控制方式通常有三种:程序方式、中断方式和程序方式:指用输入/输出指令,来控制信息传输的方式,是一种软件控制方式,根据程序控制的方法不同,又可以分为无条件传送方式和条件传送方式。无条件传送方式接口简单,适用于那些能随时读写的设备。条件传送方式(查询方式)的特点是接口电路简单,CPU利用率低(程序循环等待)适用于CPU不太忙,传送速度要求不高的场合。要求各种外设不能同时工作,外设处于被动状态。

中断方式:当外设准备好时,由外设通过接口电路向允许的情况下,暂停执行当前正在执行的程序,响应外设中断,程序,与外设进行一次数据传送,数据传送结束后,其特点是CPU的利用率高,外设具有申请CPU工作状态。但中断服务需要保护断点和恢复断点(占用存储空间,降低速度)设之间需要中断控制器。适用于CPU的任务较忙、传送速度要求不高的场合,尤其适合实时控制中的紧急事件处理。

存储器直接存取方式(DMA):外设利用专用的接口(行高速数据传送,并不经过CPU(CPU不参与数据传送工作)而由DMA 控制器控制。其特点是接口电路复杂,硬件开销大。大批量数据传送速度极快。适用于存储器与存储器之间、存储器与外设之间的大批量数据传送的场合。4.4解:

在计算机系统中,凡需要进行读写操作的部件都存在编址的问题。有自己的地址,对于I/O接口,则需要对接口中的每个端口进行编址。通常采取两种编址方法:一种是独立编址,另一种是统一编址。

统一编址又称“存储器映射方式”。在这种编址方式下在整个存储空间中划出一部分空间给外设端口 ,端口和存储单元统一编址。其优点是无需专门的I/O指令,对端口操作的指令类型多,从而简化了指令系统的设计。缺点是端口占用存储器的地址空间,使存储器容量更加紧张,同时端口指令的长度增加,执行时间较长,端

MCS-51系列单片机中用于系统扩展的控/输出设备之间的部件,这些部件是各个端口的地址是唯一的,不能重复。在/输出、联络、数据转换、中断管理、

,接口需向CPU提供查询状态。CPU发出中断请求信号,转入执行相应的中断服务子CPU返回继续执行原来被中断的程序。 CPU和外设之间处于并行DMA控制器)直接与存储器进,总线控制权不在 存储器的每个单元均 ,I/O端口地址置于存储器空间中,DMA方式。 CPU在 CPU和外CPU处, 中断的主动权,,

口地址译码器较复杂。

独立编址又称“I/O映射方式”。这种方式的端口单独编址构成一个I/O空间,不占用存储器地址空间。其优点是端口所需的地址线较少,地址译码器较简单,采用专用的I/O指令,端口操作指令执行时间少,指令长度短。缺点是输入输出指令类别少,一般只能进行传送操作。

MCS-51单片机采用了统一编址方式,即I/O端口地址与外部数据存储单元地址共同使用0000H~FFFFH(64KB)。因此,MCS-51单片机应用系统扩展较多外部设备和I/O接口时,要占去大量的数据存储器的地址。 4.5解:

所谓的全地址译码法是利用译码器对系统地址总线中未被外扩芯片用到的高位地址线进行译码,以译码器的输出作为外围芯片的片选信号。全地址译码法芯片的地址范围确定方法是:以外部扩展的全部芯片未用到的地址线作为地址译码器的输入,译码器的输出作为片选信号接到外部扩展芯片上。

全地址译码法优点是存储器的每个存储单元只有惟一的一个系统空间地址,不存在地址重叠现象;对存储空间的使用是连续的,能有效地利用系统的存储空间;利用同样的高位地址线,全地址译码法编址产生的选片线比线选法多,为系统扩展提供了更多的冗余条件。其缺点是所需地址译码电路较多,尤其在单片机寻址能力较大和所采用的存储器容量较小时更为严重。全地址译码法是单片机应用系统设计中经常采用的方法。

部分地址译码法是指单片机的未被外扩芯片用到的高位地址线中,只有一部分参与地址译码,其余部分是悬空的。在部分地址译码方式下,无论CPU使悬空的高位地址线上的电平如何变化,都不会影响它对外部存储单元的选址,故存储器每个存储单元的地址不是惟一的,存在地址重叠现象。因此,采用部分地址译码法时必须把程序和数据存放在基本地址范围内(即悬空的高位地址线全为低电平时存储芯片的地址范围),以避免因地址重叠引起程序运行的错误。部分地址译码法的优点是可以减少所用地址译码器的数量。 4.6解:

P2口用作扩展存储器的高8位地址总线以后,即使没有全部占用,空余的几根也不宜用作I/O口,否则会给软件编写及使用带来不必要的麻烦。主要是时序上处理比较困难。 4.7解:

程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的读和写由RD和WR信号控制,而程序存储器由读选通信号PSEN控制,这些信号在逻辑上时序上不会产生冲突,因此,两者虽然共处于同一地址空间,但由于控制信号不同,所以不会发生总线冲突。 4.8 解:

硬件连接图如下图所示。

图 4.8题硬件连接电路图 各芯片的地址范围为:

2732:E000H~EFFFH 6116:D800H~DFFFH 8255:BFFCH~BFFFH 4.9 解:

硬件连接电路图如图4.9所示。各芯片的地址范围为: 2764(1#):0000H~1FFFH 2764(2#):2000H~3FFFH 6264(1#):4000H~5FFFH 6264(2#):6000H~7FFFH

图4.9 4.9题硬件连接电路图

4.10解:

(1)并行总线扩展的方法 (2)串行口扩展方法

(3)I/O端口模拟串行方法

(4)通过单片机内I/O的扩展方法 4.11解:

8255A有3种工作方式:方式0、方式1和方式2。 ① 方式0(基本输入/输出方式)。这种方式不需要任何选通信号,适合于无条件传输数据的设备,数据输出有锁存功能,数据输入有缓冲(无锁存)功能。

② 方式(1选通输入/输出方式)。这种工作方式下,A组包括A口和C口的高四位(PC7~PC4),A口可由程序设定为输入口或输出口,C口的高四位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低四位(PC3~PC0),功能和A组相同。

③ 方式2(双向I/O口方式)。仅A口有这种工作方式,B口无此工作方式。此方式下,A口为8位双向I/O口,C口的PC7~PC3用来作为输入输出的控制和同步信号。此时,B口可以工作在方式0或方式1。 4.12解:

程序如下:

MOV DPTR,#7F03H MOV A,#10010100B MOV @DPTR,A

4.13解:

写入控制端口的控制字的最高位为1则为方式控制字,否则为C口置位/复位控制字。 4.14 解:

8155输入时钟的周期=1/500×103=2×10-6 (s),8155定时器/计数器的初值=20×10-3/2×10-6=10000=2170H。由于定时器/计数器按方式1工作,所以写入定时器/计数器的初值为6170H。程序如下:

ORG 0000H LJMP START ORG 0100H

START: MOV DPTR,#7F04H ;写定时器/计数器的初值

MOV A,#70H MOVX @DPTR,A INC DPTR MOV A,#61H MOVX @DPTR,A MOV DPTR,#7F00H ;写命令字,启动定时器/计数器工作 MOV A,#0C5H

MOVX @DPTR,A

SJMP $ END

4.15解:

设8155有关寄存器端口地址为: 20H 命令寄存器 24H 定时器低字节 25H 定时器高字节

在8155的TIMEROUT引脚上输出10mS方波的程序如下:

ORG 1000H

MOV R0,#25H MOV A,#58H MOVX @R0,A DEC R0

MOV A,#0F0H MOVX @R0,A MOV R0,#20H MOVX @R0,A SJMP $

4.16解:

电路连接图如图4.16所示。

图4.16 4.16题硬件连接电路图

其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。设机主频为1MHz。

程序如下:

ORG 1000H

START:MOV DPTR, #7FFFH ; 数据指针指向8255A控制口 MOV A, #80H MOVX @DPTR, A ; 工作方式字送8255A控制口 MOV DPTR, #7FFDH ; 数据指针指向8255A 的BLP1:MOV A, #0FH ; 置红色发光二极管亮 MOVX @DPTR, A ; 置红色发光二极管亮 LCALL DELAY ; 调用1S延时子程序 MOV A, #0F0H MOVX @DPTR, A ; 置绿色发光二极管亮

LCALL DELAY LJMP LP1 ; 循环执行

DELAY: MOV R7,#8 ; 1S延时子程序

D1:MOV R6,#250 D2:MOV R5,#250

MCS-51

单片

口 D3:DJNZ R5,D3

DJNZ R6,D2 DJNZ R7,D1 RET SJMP $ END

4.17解:

RS-232C采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的,采用负逻辑,其驱动器负载为3k?~7k?。由于RS-232C发送电平与接收电平的差仅为2~3V,所以其共模抑制能力差,再加上双绞线上的分布电容,因此,RS-232C适用于传送距离不大于15m,速度不高于20kb/s的本地设备之间通信的场合。

RS-422由RS-232发展而来,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到1220m(速率低于100kb/s时),并允许在一条平衡总线上最多连接10个接收器。RS-422是一种单机发送、多机接收的单向、平衡的通信总线标准。

RS-485是在RS-422的基础上制定的标准,增加了多点、双向通信能力,通常在要求通信距离为几十米至上千米时,广泛采用RS-485总线标准。它采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平。具有较高的灵敏度,能检测低至200mV的电压,具有抑制共模干扰的能力,数据传输可达千米以上。

RS-232的双机通信接口电路如图4.17-1所示。

图4.17-1 4.17-1题硬件连接电路图

RS-422和RS-485的双机通信接口电路如图4.17-2所示。

图4.17-2 4.17-2题硬件连接电路图 4.18解:

DS12C887是美国Dallas公司生产的实时日历时钟芯片,采用CMOS技术,与

MC146818B和DS1287管脚兼容,可直接替换。内含一个锂电池,在断电情况下运行十年以上不丢失数据。具有秒、分、时、星期、日、月、年计数功能,对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分上午和下午,可实现闰年调整。时间的表示方法有两种,二进制数和BCD码表示方法。内部有128字节RAM,其数据具有掉电保护功能。可以选择Motorola和Intel总线时序。用户可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。工作电压为4.5~5.5V,工作电流为7~15mA。DS12C887具有功耗低、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟场合中。

DS12C887内部有128B的存储器,系统占用15B,用户可用113B,具体分布情况如下表

所示。

取 值 范 围 地 址 功 能 二进制 十进制 00H 秒 00~3BH 00~59 01H 秒报警 00~3BH 00~59 02H 分 00~3BH 00~59 03H 分报警 00~3BH 00~59 时,12小时模式 0~0CH AM,81~8CH PM 04H 01-12 AM, 81-92 PM 时,24小时模式 00~17H 00~23 时报警,12小时模式 0~0CH AM,81~8CH PM 05H 01-12 AM, 81-92 PM 时报警,24小时模式 00~17H 00~23 06H 星期,星期日=1 01~07H 01~07 07H 日 01~1FH 01~31 08H 月 01~0CH 1~12 09H 年 00~63H 00~99 0AH 控制寄存器A 0BH 控制寄存器B 0CH 控制寄存器C 0DH 控制寄存器D 32H 世纪 13H,14H 19, 20 0EH~31H, 33H~7FH 用户数据区 4.19解:

MAX692A是美国Maxim公司的系统监控芯片产品,具有后备电池切换、电压监视器、 “看门狗”监控等功能。 4.20解:

“看门狗(WDT)”,也称为程序监视定时器。WDT的作用是通过不断监视程序每周期的运行事件是否超过正常状态下所需要的时间,从而判断程序是否进入了“死循环”,并对进入“死循环”的程序作出系统复位处理。

在程序中设置适当的指令,清WDT,就可监视微处理器的工作。例如在主程序开始时,将WDT置位,如果主程序执行过程中产生死循环,就无法清WDT,超过WDT的定时时间时,WDT就会对微处理器发出复位信号。从而实现对系统程序的监控。 4.21解:

I2C总线是由串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据。它允许若干兼容器件共享总线。所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,且所有的SDA/SCL同名端相连。总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选线。

I2C总线最主要的优点是其简单性和有效性。占用的空间小,降低了互连成本。总线的长度可高达7.6m,并且能够以10kbps的最大传输速率支持40个组件。支持多主控器件,其中,任何能够进行发送和接收的设备都可以成为主器件。主控能够控制信号的传输和时钟频率。当然,在某时刻只能有一个主控器件。

在单片机控制系统中,广泛使用I2C器件。如果单片机自带I2C总线接口,则所有I2C器件对应连接到该总线上即可;若无I2C总线接口,则可以使用I/O口模拟I2C总线。

使用单片机I/O口模拟I2C总线时,硬件连接非常简单,只需两条I/O口线即可,在软件中分别定义成SCL和SDA。MCS-51单片机实现I2C总线接口电路如图4.21所示。

4.21 4.21

电路中单片机的P1.0引脚作为串行时钟线SCL,P1.1引脚作为串行数据线SDA,通过程序模拟I2C串行总线的通信方式。I2C总线适用于通信速度要求不高而体积要求较高的应用系统。

第5章

5.1 解:

传感器是将电量或非电量转换为可测量的电量的检测装置,是由敏感元件和转换元件组成的。国际电工委员会IEC将传感器定义为:传感器是测量系统中的一种前端部件,它将各种输入变量转换成可供测量的信号。 5.2 解:

(1)输入通道的特点:① 输入通道要靠近拾取对象采集信息,以减少传输损耗,防止干扰;② 输入通道工作环境因素严重影响通道的方案设计,没有选择的余地;③ 传感器的输出往往是模拟信号、微弱信号输出,转换成计算机要求的信号电平时,需要使用一些模拟电路技术,因此输入通道通常是模拟、数字等混杂电路;④ 传感器、变送器的选择和环境因素决定了输入通道电路设计的繁简,道中必须将传感器、变送器的输出信号转换成能满足计算机输入要求的道中传感器、变送器输出信号与计算机逻辑电平的相近程度影响着输入通道的繁简程度;⑤ 传感器输出信号一般比较微弱,为便于计算机拾取,常需要放大电路,这也是计算机系统中最容易引入干扰的渠道,所以输入通道中的抗干扰设计是非常重要的。(2)输出通道的特点:① 小信号输出,大功率控制;② 输出伺服驱动控制信号,在伺服驱动系统中的状态反馈信号,作为检测信号输入至输入通道;

③ 输出通道接近被控对象,环境复杂恶劣,电磁和机械干扰较为严重。5.3解:

D/A转换器(表示,它将数字量转换成与之成正比的电量,广泛应用于过程控制中。5.4 解:

D/A转换器的主要性能指标有:(1)分辨率:单位数字量所对应模拟量增量,即相邻两个二进制码对应的输出电压之差称为D/A转换器的分辨率。它确定了表示。

(2)精度:精度是指百分数或最低有效位((3)线性误差:的连线)与理想的转换特性(始、终点连线)之间是有偏差的,这个偏差就是差。即两个相邻的数字码所对应的模拟输出值以LSB的分数形式表示。(4)转换时间拟量达到相应的稳定值所需要的时间称为转换时间。5.5解:

D/A转换芯片的主要结构特性为:(1)数字输入特性数字输入特性包括接收数的码制、数据格式以及逻辑电平等。目前批量生产的换芯片一般都只能接收自然二进制数字代码。(2)模拟输出特性

Digit to Analog Converter)是将数字量转换成模拟量的器件,通常用

D/A产生的最小模拟量变化,也可用最低位(D/A转换器的实际输出与理论值之间的误差,它是以满量程LSB)的分数形式表示。

D/A转换器的实际转换特性(各数字输入值所对应的各模拟输出值之间(之差)与一个LSB

TS(建立时间):从D/A转换器输入的数字量发生变化开始,到其输出模

因为在输入通TTL电平,输入通

DACLSB)VFS的D/A的线性误D/A转 所对应的模拟值之差。常目前多数D/A转换器件均属电流输出器件,手册上通常给出的输入参考电压及参考电阻之下的满码(全l)输出电流I0。另外还给出最大输出短路电流以及输出电压允许范围。 (3)锁存特性及转换控制

D/A转换器对数字量输出是否具有锁存功能将直接影响与CPU的接口设计。如果D/A转换器没有输入锁存器,通过CPU数据总线传送数字量时,必须外加锁存器,否则只能通过具有输出锁存功能的I/O给D/A送入数字量

(4)参考电源

D/A转换中,参考电压源是唯一影响输出结果的模拟参量,是D/A转换接口中的重要电路,对接口电路的工作性能、电路的结构有很大影响。5.6解:

① 8位并行D/A转换;② 片内二级数据锁存,提供数据输入双缓冲、单缓冲、直通三种工作方式;③ 电流输出型芯片,电流稳定时间供电压输出;

④ DIP20封装、单电源(⑤ 只需在满量程下调整其线性度;⑥ 单一电源供电(十5V⑦ 低功耗,200mW。

⑧ 与MCS-51连接方便。

5.7解:

CS:片选输入线,低电平有效。ILE:数据锁存允许输入,高电平有效。WR1:写1信号输入,低电平有效。当的第一级锁存。

WR2:写2信号输入,低电平有效。XFER:数据传输信号输入,当存,并开始进行D/A转换。5.8解:

(1)D/A转换器的数字输入是由数据线引入的,而数据线上的数据是变动的,为了保持D/A转换器输出的稳定,就必须在微处理器与即必须有锁存器。

(2)有锁存器和无锁存器的① 内部无锁存器的D/A位)。它们的结构简单,内部不带锁存器。对于这一类D/A转换器,最适合与单片机口直接接口。但是当它们与② 内部有锁存器的D/A些包含双重,甚至多重的数据缓冲结构,如这种类型的D/A转换器以高位的居多。它们以与般只是是需要占用多根口线。5.9解:

1us。通过外接一个运算放大器,可以很方便地提+5 V~+15 V,典型值+5 V); 15V),

CS,ILE,WR1=010时,数据写入

WR2,XFER=00时,数据由第一级锁存进入第二级锁

D/A转换器输入口之间增加锁存数据的功能,D/A转换器与80C51接口的电路有显著不同。转换器,如DAC80(8位)、AD7520(10位)、

80C51的P1、P2等具有输出锁存功能的口相接口时,则需在器输入端增加锁存器。

DAC0832、DAC1230、AD7542以及80C51中的P0口相接口较为合适,一

DAC0832

(12I/O等。

~+ AD7521P0转换器,不仅具有数据锁存器,而且还提供地址译码电路,有AD7549逐次逼近式A/D转换器的转换原理即“逐位比较”,如图5.9所市,它由N位寄存器、D/A转换器、比较器和控制逻辑等部分组成,N位寄存器代表N位二进制数码。

VN 模拟量输入 VX 时钟 时序与控制 N位寄存器 比较器 D/A转换器 N位数字量输出 输出缓冲器 启动

当模拟量Vx送入比较器后,启动信号通过控制逻辑电路启动N位寄存器最高位(Dn-1)为“整个量程一半的模拟电压VN,是,则Dn-1位清“0”。然后,控制逻辑使寄存器下一位(一起经D/A转换后与Vx比较,重复上述过程,直至判别出此时控制逻辑电路发出转换结束信号换后的数字量数据,整个转换过程就是这样一个逐次比较逼近的过程。5.10解:

将模拟量变换成计算机能够直接处理的数字量,测的模拟量。 5.11解:

逐次逼近型的A/D转换器双积分型A/D转换器 MC14433 5.12解:

A/D转换器位数的确定与整个测量控制系统所要测量控制的范围和精度有关,比总精度要求的最低分辨率高一位。精度相适应。只要不低于它们就行,选得太高既没有意义,而且价格还要高得多。5.13解:

(1)积分型、电荷平衡型和跟踪比较型到几十毫秒不等,只能构成低速检测和控制。

(2)逐次比较型的A/D换器,常用于工业多通道单片机控制系统和声频数字转换系统等。(3)高速A/D转换器适用于雷达、数字通讯、实时光谱分析、实时瞬态记录、视频数字转换系统等。 5.14解:

逻辑电路 DONE 5.9 逐次逼近式A/D转换器原理图1”,其余位清“0”;与输入电压Vx比较。若VxDONE。这样经过N便于与计算机连接,DAC0809 、DAC0816 、ICL7035 实际选取的A/D转换器的位数应与其它环节所能达到的A/D转换器转换速度较慢,转换时间从几毫秒A/D转换器,一般运用于对温度、转换器的转换时间可从几μOE

A/D开始转换。首先,置D/A转换后得到时,则保留Dn-1=1;若Vx

图N位寄存器的内容经≥VNDn-2D0次比较后,S到100在软件编写时,应根据硬件连接电路计算被选择的模拟通道的地址;执行一条输出指令,启动A/D转换;转换结束后,执行一条输入指令,读取A/D转换结果。

可以采用延时、查询和中断的方法判别A/D转换结束 。 5.15解:

(1)应设置D/A转换器的双缓冲方式的情况

有些D/A转换器(如DAC0832)的内部具有两极缓冲结构,即芯片内有一个8位输入寄存器和一个8位DAC寄存器。

这样的双缓冲结构,可以使DAC转换输出前一个数据的同时,将下一个数据传送到8位输入寄存器,以提高D/A转换的速度。更重要的是,能够使多个D/A转换器在分时输入数据后,同时输出模拟电压。

(2)D/A转换器DAC0832的双缓冲方式的接口电路如图5.15所示。

图5.15 DAC0832双缓冲连接电路图

5.16解:

单片机只能处理数字形式的信息,但是在实际工程中大量遇到的是连续变化的物理量,如温度、压力、流量、光通量、位移量以及连续变化的电压、电流等。对于非电信号的物理量,必须先由传感器进行检测,并且转换为电信号,然后经过放大器放大为OV~5V电平的模拟量。所以必须加接模拟通道接口,以实现模拟量和数字量之间的转换。A/D(模/数)转换就是把输入的模拟量变为数字量,供单片机处理;而D/A(数/模)转换就是将单片机处理后的数字量转换为模拟量输出。 5.17解:

A/D转换芯片中采样保持电路的作用是把一个时间连续的信号变换为时间离散的信号,并将采样信号保持一段时间。当外接模拟信号的变化速度相对于A/D转换速度来说足够慢,在转换期间内可视为直流信号的情况下,可以省略采样保持电路。 5.18解:

对于8位A/D转换器,实际满量程电压为5V,则其量化单位1LSB=5V/256=0.0196V,考虑到A/D转换时会进行四舍五入处理,所以最大量化误差为(1/2)LSB,即0.0098V。 5.19解:

硬件电路连接图如图5.19所示。

图5.19 5.19题逻辑电路图

当VO=2.5V时,D=80H;VO=1.25V时,D=40H。 程序如下:

ORG

LJMP MAIN ORG MAIN: MOV NEXT: MOV MOVX ACALL MOV MOV MOVX LOOP: ACALL DJNZ AJMP DELAY: ?? RET END

0100H DPTR,#7FFFH A,#80H @DPTR,A DELAY R4,#04H A,#40H @DPTR,A DELAY R4,LOOP NEXT 0000H

5.20 解:硬件电路连接图如图5.20所示。

图5.20 5.20题逻辑电路图

设80C51的时钟频率为12MHz,程序如下:

ORG 0000H

MAIN:

LJMP ORG LJMP ORG MOV MOV MOV MOV MOV MOV

MAIN 001BH T1_1 0100H SP,#60H R7,#100 R1,#30H R0,#00H R2,#20 R3,#60

;设堆栈指针 ;置采集次数

;片外RAM地址高位 ;片外RAM地址低位 ;置入初值20(计1 s) ;置入初值60(计1 min)

LOOP:

T1_1: MOV TOMD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET1 SETB TR1 SJMP LOOP DJNZ R7,LOOP SJMP $ ORG 0200H MOV TH1,#3CH ;定时器T1工作于模式1 ;计数器初值

;开中断

;定时器T1允许中断 ;启动定时器T1 ;等待中断

;是否到100次?

;中断服务程序,重新赋计数器初值

LOOP1:

RETI_0:6.1解:

具有人机对话功能。行和运行结果。 6.2解:

发光二极管显示器液晶显示器,简称荧光管显示器,简称6.3解:

要使LED显示器显示出字符,必须提供段码和位选码。段码(即字码):可以用硬件译码的方法获得,也可以用软件的方法获得。位选码:静态显示和动态显示。6.4解:

(1)建立显示数据缓冲区:存放待显示数字、字符在字型编码表中的序号; (2)软件译码:利用查表方法获得字型编码MOV TL1,#0B0H

DJNZ R2,RETI_0 ;1 s未到,返回

MOV R2,#20 ;重新置“100 s”计数器初值DJNZ R3,RETI_0 ;1 min未到,返回MOV R6,#8 ;8个通道计数器初值MOV DPTR,#7FF8H ;IN0地址

MOVX @DPTR,A ;启动A/D转换 JB P1.0,$ ;判转换是否结束MOVX A,@DPTR ;读取转换结果

PUSH DPH ;将通道地址压入堆栈PUSH DPL

MOV DPH,R1 ;将片外RAM地址送MOV DPL,R0

MOVX @DPTR,A ;将转换结果存入片外INC DPTR ;片外RAM地址增MOV R1,DPH ;保存片外RAMMOV R0,DPL

POP DPL ;恢复通道地址

POP DPH INC DPTR DJNZ R6,LOOP1 ;8个通道是否采集结束RETI ;中断返回

END

第6章

实现人对应用系统的状态干预和数据输入以及应用系统向人报告运,简称LED(Light Emitting Diode); LCD(Liquid Crystal Display); CRT。

(段码);

DPTR RAM

1 地址 (3)位扫描输出:采用移位方法逐位点亮LED显示器; (4)延时子程序:控制点亮时间和时间间隔。 6.5解:

(1)静态显示方式:静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。由于单片机本身提供的I/O口有限,实际使用中,通常通过扩展I/O口的形式解决输出口数量不足的问题。

静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。随着显示器位数的增加,需要的I/O口线也将增加。(2)动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描)即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。 6.6解:

通常的按键所用开关为机械弹性开关。由于机械触电的弹性作用,按键在闭合及断开的瞬间均伴随有一连串的抖动。键抖动会引起一次按键被误读多次。为了确保CPU次闭合仅作一次处理,必须去除抖动。 消除抖动的方法有硬件和软件两种方法。硬件方法常用RS触发器电路。软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。 6.7解:

液晶显示器简称LCD(Liquid Crystal Diodes),是一种被动式的显示器,即液晶本身并不发光,利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。LCD显示器有笔段式和点阵式两种,点阵式又可分为字符型和图像型。笔段式示器类似于LED数码管显示器。每个显示器的段电极包括七个笔划(段)和一个背电极(或COM)。可以显示数字和简单的字符,每个数字和字符与其字形码(段码)对应。点阵式LCD显示器的段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式LCD的控制一般采用行扫描方式,通过两个移位寄存器控制所扫描的点。80C51与液晶显示模块LCM的基本接口电路如图6.7所示。

图6.7 80C51与液晶显示模块LCM的基本接口电路

液晶显示模块初始化子程序(将系统设置成显示2行字符,5×7点阵,开显示,显示光标,字符闪烁,清屏,光标为移动方式,自动地址为增量方式。):

电源打开后,在电源上升到4.5V并维持15ms后,写入功能设置控制字,选择数据接口位数等;等待5ms后,检查忙标志,在不忙的情况下,再进行其他的功能设置;检查忙

,又保证(称LCD显BP

对键的一

标志,在不忙的情况下,关显示;检查忙标志,在不忙的情况下,清屏;检查忙标志,在不忙的情况下,设定输入方式,初始化结束。程序如下:

LCD: MOV A, #38H MOV DPTR, #8000H MOVX @DPTR, A LCALL BUSY

MOV A, #01H MOV DPTR, #8000H MOVX @DPTR, A LCALL BUSY

MOV A, #07H ; 8位数据,2行显示,5×7点阵 ; LCD 的口地址

; 清屏

; AC自动加1,整体显示移动

BUSY:

LOOP:

6.8 解:

(1)判断键盘上有无键按下:列输出全0,读行输入状态,若状态为全1,则说明键盘无键按下;若不全为1,则说明键盘有按下。 (2)消除按键抖动的影响:在判断有键按下后,用软件延时的方法,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键按下,否则当作按键抖动处理。(3)求按键位置,计算键号:用扫描的方法识别闭合键根据:以下公式计算闭合键的键号(4)键闭合一次仅进行一次按键处理:方法是等待按键释放之后,再进行按键功能的处理操作。 6.9解:

硬件电路连接图如图MOV DPTR, #8000H MOVX @DPTR, A LCALL BUSY

MOV A, #0FH MOV DPTR, #8000H MOVX @DPTR, A RET

PUSH DPH PUSH DPL PUSH PSW PUSH ACC

MOV DPTR, #8001H MOVX A, @DPTR

JB ACC.7, LOOP POP ACC POP PSW POP DPL POP DPH RET

N =X行首键号6.9所示。

; 开显示,开光标,字符闪烁; 保护现场

; 读BH及AC ; 忙,继续等待

; 不忙,恢复现场返回

N所在的行号+列号Y。

X和列号Y,并

图6.9 6.9题LED显示器/键盘电路图

6.10解:

硬件连接电路图如图6.10所示。

图6.10 6.10题扩展键盘电路图 程序如下:

ORG 1000H

START:MOV DPTR, #7FFFH ; 8255初始化

MOV A, #81H

MOVX @DPTR, A KEY: ACALL KEY1 ; 检查有键闭合否 JNZ LKEY1 ; A非0说明有键按下 ACALL DELAY1 ; 执行一次延时子程序(延时6 ms) AJMP KEY

LKEY1: ACALL DELAY1 ACALL DELAY1 ; 有键闭合延时2×6ms=12ms以去抖动 ACALL KEY1 ; 延时以后再检查是否有键闭合 JNZ LKEY2 ; 有键闭合,转LKEY2 ACALL DELAY1 ; 无键闭合,说明是干扰信号,不作处理 AJMP KEY ; 延时6ms后转KEY继续等待键入 LKEY2: MOV R2, #0EFH ; 扫描初值送R2,设定PC4为当前扫描线 MOV R4, #00H ; 回送初值送R4 LKEY4: MOV DPTR, #7FFEH ; 指向PC口

MOV MOVX MOV JB MOV

A, R2 @DPTR, A ; 扫描初值送PC口 A, @DPTR ; 取回送线状态

ACC.0, LONE ; ACC.0=1,第0行无键闭合,转LONE A, #00H ; 装第0行行值

LONE: LTWO: LTHR:

LKEYP: LKEY3: NEXT:

AJMP LKEYP JB ACC.1, LTWO MOV A, #08H AJMP LKEYP JB ACC.2, LTHR MOV A, #10H AJMP LKEYP JB ACC.3, NEXT MOV A, #18H ADD A, R4 PUSH ACC ACALL DELAY1 ACALL KEY1 JNZ LKEY3 POP ACC RET

INC R4 MOV A, R2 JNB ACC.7, KND RL A

; 转计算键码

; ACC.1=1,第1行无键闭合,转LTWO ; 装第1行行值 ; 转计算键码

; ACC.2=1,第2行无键闭合,转LTHR ; 装第2行行值

; ACC.3=1,第3行无键闭合,转NEXT ; 装第3行行值 ; 计算键码 ; 保存键码 ; 延时6ms

; 判断键是否继续闭合,若闭合再延时 ; 若键释放,则键码送A ; 列号加1

; 第7位为0,以扫描到最高列,转KND ; 循环左移一位

MOV R2, A AJMP LKEY4 ; 进行下一列扫描 KND: AJMP KEY ; 扫描完毕,开始新的一轮 KEY1: MOV DPTR, #7FFEH ; 将PC口地址送DPTR,PC口高四位作为扫描线 MOV A, #00H ; 所有扫描线均为低电平 MOVX @DPTR, A ; PC口向列线输出00H MOVX A, @DPTR ; 取回送线状态 CPLA ; 行线状态取反 ANL A, #0F0H ; 屏蔽A的高四位 RET ; 返回

DELAY1: MOV R7,#4 ; 延时6mS延时子程序

D1:MOV R6,#220 D2: DJNZ R6,D2

DJNZ R6,D2 DJNZ R7,D1 RET END

6.11解:

硬件连接电路图如图6.11所示。

图6.11 6.11题扩展键盘电路图 程序如下:

ORG 1000H

SERKEY: MOV SCON, #00H MOV A, #00H LCALL VARTO

; 设置串行口

; 键盘初始化,送00H到列线上 ; 发送数据

CHK: JNB P1.0, CHK0 ; 检查是否有键按下 JNB P1.1, CHK0 ; 检查是否有键按下 JNB P1.2, CHK0 ; 检查是否有键按下

AJMP CHK ; 无键按下,继续查找 CHK0: LCALL DLY1 ; 调用10ms延时子程序,去抖

JNB P1.0, CHEN ; 确实有键按下,转CHEN JNB P1.1, CHEN JNB P12, CHEN AJMP CHK ; 无键按下,继续查找 CHEN: MOV R2, #0FEH ; 首列扫描字送R2,查键号,最低位为0

MOV R4, #00H ; 首列偏移值送R4 CHKN: MOV A, R2 ; 发送列扫描字 LCALL VARTO JB P1.0, CH1 ; 检查 MOV A, #0 ; 第一行首列值送 AJMP CKEY ; 转求键号CH1: JB P1.1, CH2 ; 检查 MOV A, #8 ; 第二行首列值送CH2: JB P1.1, NEXT ; 检查 MOV A, #16 ; 第三行首列值送 AJMP CKEY ; 转求键号CKEY: ADD A, R4 ; 求键号,并入栈保护 RET

NEXT: INC R4 ; 指向下一列 MOV A, R2 ; 取出原扫描字 JNB ACC.7,KEND ; 是否已检查完 RL A ; 8 MOV R2, A ; 列扫描字送 AJMP CHKN ; 8KEND: AJMP SERKEY ; 8VARTO: MOV SBUF, A ; 发送 JNB TI, $ ; 发送等待 CLR TI ; 清除 RET DLY1: ?? ; 延时

END

; 结束

6.12解:

硬件连接电路图如图6.12所示。

P1.0有无键按下;若无,转A,00H+(R4 P1.1有无键按下;若无,转A P1.1有无键按下;若无,转A

8列? R2 A中数据

10ms子程序(略) CH1 NEXT

NEXT

)列未完,指向下一列列未完,检查下一列列查完,未查到有键按下,等待

图6.12 6.12题扩展键盘显示器电路图

程序如下:

KD1:

KEY1:

LK1:

LK2:

LK3:

LONE:

LKP:

ORG MOV MOV MOVX ACALL JNZ ACALL

1000H

A, #0000 0011B ; 8155初始化,PA,PB基本输出方式,PC输入方式 DPTR, #7F00H @DPTR, A KS1 ; 调用判断是否有键闭合子程序 LK1 ; 有键闭合转LK1 DSP8155 ; 调用8155动态显示子程序,延时6ms

AJMP KEY1

ACALL DSP8155 ACALL DSP8155 ACALL KS1 JNZ LK2

ACALL DSP8155 AJMP MOV MOV MOV MOV MOVX INC INC MOVX JB MOV AJMP JB MOV AJMP ADD

KEY1 R2, #0FEH R4, #00H DPTR, #7F01H A, R2 @DPTR, A DPTR DPTR A, @DPTR ACC.0, LONE A, #00H LKP

ACC.1, LTWO A, #08H LKP A, R4

; 调用两次显示,延时12ms

; 调用8155动态显示子程序,延时6ms

PUSH ACC LK4: ACALL DSP8155

ACALL KS1 JNZ LK4 POP ACC NEXT: INC R4

MOV A, R2 JNB ACC.7, KND RL A MOV R2, A AJMP LK3 KND: AJMP KEY1 KS1: MOV DPTR, #7F01H

MOV A, #00H MOVX @DPTR, A INC DPTR INC DPTR MOVX A, @DPTR CPL A ANL A, #0FH RET

DSP8155: MOV DPTR, #7F00H ; 指向8155命令寄存器 MOV A, #00000011B ; 设定PA口、PB口为基本输出方式

MOVX @DPTR, A ; 输出命令字 DISP1: MOV R0, #7EH ; 指向缓冲区末地址 MOV A, #80H ; 扫描字,PA7为1,从左至右扫描 LOOP: MOV R2, A ; 暂存扫描字

MOV DPTR, #7F01H ; 指向8155的PA MOVX @DPTR, A ; 输出位选码 MOV A, @R0 ; 读显示缓冲区一字符 MOV DPTR, #PTRN ; 指向段数据表首地址 MOVC A, @A+DPTR ; 查表,得段数据 MOV DPTR, #7F02H ; 指向8155的PB MOVX @DPTR, A ; 输出段数据 CALL D1MS ; 延时1ms DEC R0 ; 调整指针 MOV A, R2 ; 读回扫描 CLR C ; 清进位标志 RRC A ; 扫描字右移 JC PASS ; 结束 AJMP LOOP ; 继续显示 PASS: RET ; 返回 D1MS: MOV R7, #02H ; 延时1ms子程序 DMS: MOV R6, #0FFH

DJNZ R6, $ DJNZ R7, DMS RET PTRN: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 段数据表

DB ?? DB ?? ??

END

6.13解:

硬件连接电路如图6.13所示。8155控制口的口地址为:7F00H;PA口地址:7F01H;PB口地址:7F02H;PC口地址:7F03H。片内RAM地址:7E00H~7EFFH。定时器低位地址:7F04H;定时器高位地址:7F05H。

图6.13 6.13题扩展键盘电路图

程序如下:

ORG 0000H LJMP MAIN ORG 0013H LJMP IEX1 ORG 0030H

MAIN: MOV SP,#60H

MOV R5,#200

MOV DPTR,#7FF8H MOV A,#11000001 MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#52H MOVX @DPTR,A INC DPTR MOV A,#27H MOVX @DPTR,A MOV DPTR,#7E40H SETB EX1 SETB EA SJMP $ ORG 0200H

IEX1: DJNZ R5,RETI_0

LCALL KEY1

MOVX @DPTR,A INC DPTR

RETI_0: RETI ;中断返回

ORG 0100H

KEY1: ACALL KS1

JNZ LK1 AJMP KEY1

LK1: ACALL T12MS

ACALL KS1 JNZ LK2 AJMP KEY1

LK2: MOV R4,#00H

MOV R2,#0FEH

LK3: MOV A,R2

MOV DPTR,#7FF9H MOVX @DPTR,A

;中断次数计数值

;8155初始化 ;写定时器初值

;8155片内RAM地址

;调用键盘扫描及求键值子程序 ;存键值 ;修改地址

;调用判断有无键按下子程序 ;有键按下时,(A)≠0,转消抖动延;无键按下返回

;调延时12 ms子程序

;查有无键按下,若有则为键确实按下 ;键按下,(A)≠0,转逐列扫描 ;不是键按下返回 ;首列号入R4 ;首列扫描字送R2 ;第一次列扫描

;列扫描字送至8155PA口 ;使第0列线为0

INC DPTR ;指向8155PC口 INC DPTR MOVX A,@DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP LONE: JB ACC.1,LTWO MOV A,#08H AJMP LKP LTWO: JB ACC.2,LTHR MOV A,#10H A LJMP LKP

LTHR: JB ACC.3,LOOP

MOV A,#18H A LKP: ADD A,R4

PUSH ACC

LK4: ACALL KS1

JNZ LK4 POP ACC RET

LOOP: INC R4

MOV A,R2 JNB ACC.7,KND RL A

字 MOV R2,A

AJMP LK3 KND: AJMP KEY1 KS1: MOV DPTR,#7FF9H MOV A,#00H MOVX @DPTR,A INC DPTR INC DPTR

MOVX A,@DPTR CPL A

ANL A,#0FH RET T12MS: MOV R7,#18H T12MS1: MOV R6,#0FFH

DJNZ R6,$ DJNZ R7,T12MS1 RET END

6.14解:打印机接口电路如图6.14所示。

程序如下:

ORG

START:

LOOP: 图6.14 打印机接口电路

;8155PC口读入行状态 ;第0行无键按下,转查第1行 ;第0行有键按下,该行首键号#00→A ;转求键号

;第1行无键按下,转查第2行

;第1行有键按下,该行首键号#08→A

;第2行无键按下,转查第3行

;第2行有键按下,该行首键号#10H→

;第3行无键按下,转查下一列

;第3行有键按下,该行首键号#18H→;键号=行首建号+列号 ;键号进栈保护 ;等待键释放 ;未释放,等待 ;键释放,键号→A

;键扫描结束,出口状态:(A)=键号 ;指向下一列,列号加1 ;判断8列扫描完没有 ;8列扫描完,返回

;扫描字左移一位,转变为下一列扫描

;扫描字入R2 ;转下一列扫描

;指向PA口

;全扫描字#00H=00000000B ;全扫描字入PA口 ;指向PC口 ;读入PC口行状态

;出口状态:(A)≠0时有键按下

0000H

LJMP START ORG 0100H MOV R0,#30H MOV R6,#10

MOV DPTR,#7FFFH MOVX A,@DPTR JB ACC.7,LOOP MOV A,@R0 MOVX @DPTR,A

INC DJNZ RET END R0

R6,LOOP

第7章

7.1解:

单片机应用系统设计的一般方法及步骤如图7.1所示。 (1)明确设计任务 (2)器件选择 (3)总体设计

图7.1 单片机应用系统设计过程流程图

7.2解:

(1)硬件电路设计

在硬件设计时,要尽量应用最新单片机,采用新技术。要注意通用性的问题,尽可能选择典型电路,并符合单片机常规用法,为硬件系统的标准化、模块化打下良好的基础。系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。硬件系统设计应尽量朝“单片”(片上系统SOC)方向发展,以提高系统的稳定性。

工艺设计时要考虑安装、调试、维修的方便。扩展接口的开发尽可能采用PSD等器件开发。

(2)软件设计

软件设计随单片机应用系统的不同而不同。图7.2给出了单片机软件设计的流程图。一般可分为以下几个方面。

① 总体规划

② 程序设计技术: 模块程序设计、自顶向下的程序设计。

③ 程序设计:建立数学模型、绘制程序流程图、程序的编制。

④ 软件装配。 图7.2 软件设计的流程图 应根据外部需要扩展电路的数量和所选单片机的内部资源地址译码方法。

(3)输入通道的设计:输入通道设计包括开关量和模拟输入通道的设计。开关量要考虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信号检测环节(传感器、信号处理电路等)结合起来,应根据系统对速度、精度和价格等要求来选择,同时还需要和传感器等设备的性能相匹配,线性化、补偿、光电隔离、信号处理方式等,还应考虑换速度、结构、功耗等)及相关电路、扩展接口,有时还涉及软件的设计。高精度的模数转换器价格十分昂贵,因而应尽量降低对件来实现。

(4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。开关量要考虑功率、控制方式(继电器、可控硅、三极管等)(转换精度、转换速度、结构、功耗等)展接口等。

(5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启位、显示器、打印、指示、报警等。输入键盘、开关、拨码盘应考虑类型、个数、参数及相关处理(如按键的去抖处理)。启器要考虑类型(LED,LCD)、显示信息的种类、倍数等。此外还要考虑各种人机界面的扩展接口。

(6)通信电路的设计:单片机应用系统往往作为现场测控设备,常与上位机或同位机构成测控网络,需要其有数据通信的能力,标准。

(7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件进行设计,如Protel,OrCAD 7.3解:

硬件设计:(1)存储器扩展:容量需求,在选择单片机时就考虑到单片机的内部存储器资源,如能满足要求就不需要进行扩展,在必须扩展时注意存储器的类型、容量和接口,一般尽量留有余地,并且尽可能减少芯片的数量。选择合适的方法、行掉电保护等。(2)I/O口时应从体积、价格、负载能力、功能等几个方面考虑。

要考虑传感器类型、A/D转换器的要求,能用软件实现的功能尽量用软、输出信号的形式(电流还是电压)/停、复位操作要考虑方式(自动、手动)及其切换。显示通常设计为ROM和RAM的形式,RAM是否要进(空闲地址线的数量)选择合适的传输信号的形式(电流还是电压)A/D转换器的选择(转换精度、转D/A转换器的选择、隔离方式、扩/停操作、复RS-232C、RS-485、红外收发等通信I/O接

接口的扩展:单片机应用系统在扩展。模拟量输出要考虑等。设计印刷电路板需要有很多的技巧和经验,设计好印刷

电路板图后应送到专业化制作厂家生产,在生产出来的印刷电路板上安装好元件,则完成硬件设计和制作。

(8)负载容限的考虑:单片机总线的负载能力是有限的。如MCS-51的P0口的负载能力为4mA,最多驱动8个TTL电路,P1~P3口的负载能力为2mA,最多驱动4个TTL电路。若外接负载较多,则应采取总线驱动的方法提高系统的负载容限。常用驱动器有:单向驱动器74LS244,双向驱动器74LS245等。

(9)信号逻辑电平兼容性的考虑:在所设计的电路中,可能兼有TTL和CMOS器件,也有非标准的信号电平,要设计相应的电平兼容和转换电路。当有RS-232,RS-485接口时,还要实现电平兼容和转换。常用的集成电路有MAX232,MAX485等。

(10)电源系统的配置:抗干扰。要熟悉常用三端稳压器(CJ313/336/385(11)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。软件设计:(1)总体规划:软件所要完成的任务已在总体设计时规定,在具体软件设计时,要结合硬件结构,进一步明确软件所承担的一个个任务细节,源。

(2)程序设计技术:合理的软件结构是设计一个性能优良的单片机应用系统软件的基础。在程序设计中,应培养结构化程序设计风格,各功能程序实行模块化、子程序化。一般有以下两种设计方法:(a)模块程序设计:模块程序设计是单片机应用中常用的一种程序设计技术。它是把一个较长的程序分解为若干个功能相对独立的较小的程序模块,程和调试,最后由各个调试好的模块组成一个大的程序。其优点是单个功能明确的程序模块的设计和调试比较方便,容易完成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。(b)自顶向下的程序设计:自顶向下程序设计时,先从主程序开始设计,从属程序或子程序用符号来代替。设计。其优点是比较符合于人们的日常思维,错误可以较早的发现。对整个程序的全面修改。(3)程序设计:在选择好软件结构和所采用的程序设计技术后,便可着手进行程序设计,将设计任务转化为具体的程序。(a)建立数学模型:根据设计任务,描述出各输入变量和各输出变量之间的数学关系,此过程即为建立数学模型。决定性因素之一。(b)绘制程序流程图:通常在编写程序之前先绘制程序流程图,以提高软件设计的总体效率。程序流程图以简明直观的方式对任务进行描述,学者来说尤为适用。在设计过程中,先画出简单的功能性流程图(粗框图)化,对存储器、框的操作转变为具体的存储器单元、图(细框图)。(c)程序的编制:在完成程序流程图设计以后,便可以编写程序。程序设计语言对程序设计的影响较大。单片机应用系统一定需要电源,78хх系列、W431)的应用。

主程序编好后再编制各从属程序和子程序,设计、调试和连接同时按一个线索进行,缺点是上一级的程序错误将对整个程序产生影响,

数学模型随系统任务的不同而不同,

工作寄存器或汇编语言是最为常用的单片机程序语言,要考虑电源的组数、系列)、精密电源(确定具体实施的方法,各个程序模块分别设计、最后完成整个系统软件的其正确度是系统性能好坏的并很容易由此编写出程序,,然后对功能流程图进行细化和具体I/O口的操作,从而给出详细的程序流程用汇编语言编写程序代码精简,

输出功率、AD580,MC1403,合理分配资编程序一处修改可能引起故对初79хх,

寄存器、标志位等工作单元作具体的分配和说明,将功能流程图中每一个粗

直接面向硬件电路进行设计,速度快,但进行大量数据运算时,编写难度将大大增加,不易阅读和调试。在有大量数据运算时可采用C语言(如MCS-51的C51)或PL/M语言。 编写程序时,应注意系统硬件资源的合理分配与使用,子程序的入/出口参数的设置与传递。采用合理的数据结构、控制算法,以满足系统要求的精度。在存储空间分配时,应将使用频率最高的数据缓冲器设在内部RAM;标志应设置在片内RAM位操作区(20H~2FH)中;指定用户堆栈区,栈区的大小应留有余量;余下部分作为数据缓冲区。 在编写程序过程中,根据流程图逐条用符号指令来描述,即得汇编语言源程序。应按MCS-51汇编语言的标准符号和格式书写,在完成系统功能的同时应注意保证设计的可靠性,如数字滤波、软件陷阱、保护等。必要时可作若干功能性注释,提高程序的可读性。

(4)软件装配:各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设计的要求连接起来,件装配时,应注意软件接口。

7.4解:

一个单片机应用系统的硬件设计包含两部分内容:能单元不能满足应用系统的要求时必须进行片外扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,A/D、D/A转换器等,要设计合理的接口电路。7.5解:

(1)静态检查

根据硬件电路图核对元器件的型号、辑笔、万用表等工具检查硬件电路连线是否与电路图一致,有无短路、源短路和极性接反。检查数据总线、地址线和控制总线是否存在短路的故障。(2)通电检查

通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,况,查看电路板上有无元件过热、冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。

7.6解:

可靠性通常是指在规定的条件下,在规定的时间内完成规定功能的能力。可采用以下的方法提高系统的可靠性。

(1)隔离技术。 (2)屏蔽措施。 (3)双绞线传输。

(4)长线传输的阻抗匹配。

单片机的空闲端要接地或接电源,或者定义成输出;室外使用的单片机系统或从室外架空引入室内的电源线、信号线,要防止雷击等。7.7分为以下几个方面(图程图)

图7.7 软件设计的流程图

即为软件装配,一是系统扩展,如通信接口、 规格、极性、集成芯片的插接方向是否正确。用逻5)对信号整形。6)抑制机械触点,接触器、可控硅的噪声。7)提高印刷电路板(8)合理设计地线。9)注意各电路之间的电平匹配,总线驱动能力;

从而完成软件设计。在软即当单片机内部的功键盘、显示器、打印机、虚焊等现象。严防电

观察I/O口的动作情

PCB)设计中的抗干扰能力。 画出了单片机软件设计的流(

(((

( 解:软件设计随单片机应用系统的不同而不同,一般可7.7。(1)总体规划 (2)程序设计技术

① 模块程序设计

② 自顶向下的程序设计 (3)程序设计

① 建立数学模型 ② 绘制程序流程图 ③ 程序的编制 (4)软件装配 7.8解:

硬件和软件调试完成之后,应用程序模块、子程序也都组合好,进行全系统软、硬件调试,系统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。在进行系统调试时,对于有电气控制负载的系统,载情况。要试验系统的各项功能,避免遗漏。系统调试成功之后,就可以将程序固化到行,最好用专用程序固化器进行固化操作,因为它的功能完善,使用方便、可靠。将固化好程序的ROM插回到应用系统电路板的相应位置,即可脱机运行。要连续运行相当长的时间,以考验其稳定性。并要进一步进行修改和完善处理。一般地,经开发装置调试合格的软、应用系统的实际运行环境不尽相同,故障时,应考虑程序固化有无错误;驱动能力);在联机仿真调试时,未涉及的电路部分有无错误。7.9解:

设计提示:利用单片机控制函数发生器功能智能函数发生器,要求此函数发生器既能产生各种波形,形的频率和幅值。

函数发生器一般由以下几部分组成:单片机最小系统,函数发生器转换电路,A/D和D/A转换电路,显示、键盘及控制电路等。ICL8038是大规模单片函数发生器,只要外接少量元件,就能产生方波、三角波、正弦波等各种波形。

为减少误差,提高函数发生器的准确度,采用真有效值转换电路,以改善生的波形畸变。一般采用真有效值转换器芯片8.1解:

MCS-96单片机有以下几种形式:8096:16位单片机。由寄存器、算术逻辑单元(高速输入/输出单元、串/并行接口、定时器控制单元、中断系统、可动态配置的总线、地址译码寄存器等部分组成。8096BH:与8096相比,增加了带有采样和保持电路的20个,有专用的波特率发生器,可以动态地重新组合运行时编程并带有各种安全措施,具有灵活可变的80C196:功能和指令系统与部I/O功能和指令功能,具备8098:它类似于8088微处理器,这样更便于应用和推广。

80C198:在8098基础上,功能与8.2解:

应进行系统调试。在系统调试时,应将全部硬件电路都接上,

应先试验空载,空载正常后再试验负

ROM中,程序固化可以在有些仿真系统中进

系统试运行

硬件,脱机后应正常运行。但由于开发调试环境与也会出现脱机后不能正常运行的情况。当出现脱机运行仿真系统与实际系统在运行时,有无某些方面的区别(如 ICL8038芯片,外接少量元器件,制作一台多又能以数字形式显示新产生波ICL8038,真有效值

ICL8038AD636或AD537来实现。

第8章

RALU)、寄存器阵列、指令寄存器、/计数器、PWM输出、监视定时器、A/D转换器、

10位A/D转换器,中断源增至8位或16位数据总线,EPROM可在READY控制等功能。

8096BH基本相同,其速度是8096的两倍,增加了许多内位数据总线和8位数据总线等功能。

内部的CPU寄存器都为16位,对外数据通路为880C196相似。 产16位,

本文来源:https://www.bwwdw.com/article/kspr.html

Top