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

2018-11-07 18:38

既可以按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

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

绪论

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”口,又可作为外部扩展时的数据 及扩展

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处, 中断的主动权,,

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位,


《单片机原理及应用》思考题与习题参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:长沙麓谷分考场科目三必过攻略个人经验教训总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: