单片机课后习题答案

章1 绪 论

1.第一台计算机的问世有何意义?

答:

第一台电子数字计算机ENIAC问世,标志着计算机时代的到来。与现代的计算机相比,ENIAC有许多不足,但它的问世开创了计算机科学技术的新纪元,对人类的生产和生活方式产生了巨大的影响。

2.计算机由哪几部分组成?

答:

由运算器、控制器、存储器、输入设备和输出设备组成,运算器与控制器合称为CPU。

3.微型计算机由哪几部分构成?

答:

微型计算机由微处理器、存储器和I/O接口电路构成。各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。

4.微处理器与微型计算机有何区别?

答:

微处理器集成了运算器和控制器(即CPU);而微型计算机包含微处理器、存储器和I/O接口电路等。

5.什么叫单片机?其主要特点有哪些?

答:

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。单片机主要特点有:控制性能和可靠性高;体积小、价格低、易于产品化;具有良好的性能价格比。。

6.微型计算机有哪些应用形式?各适于什么场合?

答:

微型计算机有三种应用形式:多板机(系统机)、单板机和单片机。

多板机,通常作为办公或家庭的事务处理及科学计算,属于通用计算机。

单板机,I/O设备简单,软件资源少,使用不方便。早期主要用于微型计算机原理的教学及简单的测控系统,现在已很少使用。

单片机,单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势。目前,单片机应用技术已经成为电子应用系统设计的最为常用技术手段。

7.当前单片机的主要产品有哪些?各有何特点?

答:

多年来的应用实践已经证明,80C51的系统结构合理、技术成熟。因此,许多单片机芯片生产厂商倾力于提高80C51单片机产品的综合功能,从而形成了80C51的主流产品地位,近年来推出的与80C51兼容的主要产品有:

 ATMEL公司融入Flash存储器技术推出的AT89系列单片机;

 Philips公司推出的80C51、80C552系列高性能单片机;

 华邦公司推出的 W78C51、W77C51系列高速低价单片机;

 ADI公司推出的ADμC8xx系列高精度ADC单片机;

 LG公司推出的GMS90/97系列低压高速单片机;

 Maxim公司推出的DS89C420高速(50MIPS)单片机;

 Cygnal公司推出的C8051F系列高速SOC单片机等。

8.简述单片机的开发过程。

答:

系统需求分析,硬件方案设计,软件编程,仿真调试,实际运行。

9.单片机应用系统开发方法有哪些新方法?

答:

在系统编程(ISP)技术,在应用编程(IAP)技术。

章2 80C51的结构和原理

1.80C51单片机在功能上、工艺上、程序存储器的配置上有哪些种类?

答:

功能上分为基本型和增强型;

工艺上分为HMOS工艺和CHMOS工艺;

在片内程序存储器的配置上有掩膜ROM、EPROM和Flash、无片内程序存储器形式。

2. 80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?

答:

采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51基本型单片机片内程序存储器为4KB,地址范围是0000H-0FFFH,用于存放程序或常数;片内数据存储器为128字节RAM,地址范围是00H-7FH,用于存放运算的中间结果、暂存数据和数据缓冲;另外在80H-FFH还配有21个SFR。

3.80C51单片机的P0~P3口在结构上有何不同?在使用上有何特点?

答:

作为通用I/O口时,P0、P1、P2和P3都是准双向口。

P0可以作为地址/数据总线,此时是一个真正的双向口;P2口可以作为地址线的高8位;P3口是双功能口,每条口线还具有不同的第二功能。

另外,P0口的驱动能力为8个TTL负载,而其它口仅可驱动4个TTL负载。

4.如果80C51单片机晶振频率分别为6 MHz、11.0592 MHz、12MHz时,机器周期分别为多少? 答:

机器周期分别为2μs,1.085μs,1μs。

5.80C51单片机复位后的状态如何?复位方法有几种?

答:

复位后,PC内容为0000H,P0口~P3口内容为FFH,SP内容为07H,SBUF内容不定,IP、IE和PCON

的有效位为0,其余的特殊功能寄存器的状态均为00H。复位方法一种是上电复位,另一种是上电与按键均有效的复位。

6.80C51单片机的片内、片外存储器如何选择?

答:

80C51的EA引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存储器需要采用不同的指令加以区分。

7.80C51单片机的PSW寄存器各位标志的意义如何?

答:

CY:进位、借位标志。有进位、借位时 CY=1,否则CY=0;

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位);

F0:用户标志位,由用户自己定义;

RS1、RS0:当前工作寄存器组选择位;

OV:溢出标志位。有溢出时OV=1,否则OV=0;

P:奇偶标志位。存于ACC中的运算结果有奇数个1时P=1,否则P=0。

8. 80C51单片机的当前工作寄存器组如何选择?

答:

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RS1、RS0 来决定。

9.80C51单片机的控制总线信号有哪些?各信号的作用如何?

答: RST/VPD:复位信号输入引脚/备用电源输入引脚;ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚;EA/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。

10.80C51单片机的程序存储器低端的几个特殊单元的用途如何?

答:

0000H:单片机复位入口地址;0003H:外部中断0的中断服务程序入口地址;000BH:定时/计数器0溢出中断服务程序入口地址;0013H:外部中断1的中断服务程序入口地址;001BH:定时/计数器1溢出中断服务程序入口地址;0023H:串行口的中断服务程序入口地址。

章3 80C51的指令系统

1.80C51系列单片机的指令系统有何特点?

答:

执行时间短。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅有2条(即乘法和除法指令);

指令编码字节少。单字节的指令有49条,双字节的指令有45条,三字节的指令仅有17条;

位操作指令丰富。这是80C51单片机面向控制特点的重要保证。

2.80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?

答:

80C51单片机的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。

这些寻址方式所对应的寄存器和存储空间如下表所示。

3.访问特殊功能寄存器SFR可以采用哪些寻址方式?

答:

直接寻址和位寻址方式。

4.访问内部RAM单元可以采用哪些寻址方式?

答:

直接寻址、寄存器间接寻址和位寻址方式。

5.访问外部RAM单元可以采用哪些寻址方式?

答:

寄存器间接寻址。

6.访问外部程序存储器可以采用哪些寻址方式?

答:

立即寻址、变址寻址和相对寻址方式。

7.为什么说布尔处理功能是80C51单片机的重要特点?

答:

单片机指令系统中的布尔指令集、存储器中的位地址空间与CPU中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志器(PSW)中的进位标志Cy作为位操作的“累加器”。

8.对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问?

答:

寄存器间接寻址方式。

9.试根据指令编码表写出下列指令的机器码。

(1)MOV A,#88H----------------74H, 88H

(2)MOV R3,50H----------------ABH,50H

(3)MOV P1,#55H----------75H,90H,55H

(4)ADD A,@R1---------------------27H

(5)SETB 12H----------------------D2H,12H

10.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。

(1)将R0的内容传送到R1;

(2)内部RAM单元60H的内容传送到寄存器R2;

(3)外部RAM单元1000H的内容传送到内部RAM单元60H;

(4)外部RAM单元1000H的内容传送到寄存器R2;

(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。

答:

(1)MOV A,R0

MOV R1,A

(2)MOV R2,60H

(3)MOV DPTR,#1000H

MOVX A,@DPTR

MOV 60H,A

(4)MOV DPTR,#1000H

MOVX A,@DPTR

MOV R2,A

(5)MOV DPTR,#1000H

MOVX A,@DPTR

MOV DPTR,#2000H

MOVX @DPTR, A

11.若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。

MOV A,@R1

MOV @R1,40H

MOV 40H,A

MOV R1,#7FH

答:

(R1)=7FH

(A)=60H

(30H)=08H

(40H)=60H

12.若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。

(1)MOV A,@R0

(2)ANL 40H,#0FH

(3)ADD A,R4

(4)SWAP A

(5)DEC @R1

(6)XCHD A,@R1

答:

(1)(A)=2CH

(2)(40H)=0CH

(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0

(4)(A)=8EH

(5)(20H)=0EH,P=1

(6)(A)=EFH,(20)=08H

13.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?

MOV A,50H

MOV R0,A

MOV A,#00H

MOV @R0,A

MOV A,#3BH

MOV 41H,A

MOV 42H,41H

答:

(A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。

14.试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

(1)使ACC.0置位;

(2)清除累加器高4位;

(3)清除ACC.3,ACC.4,ACC.5,ACC.6。

答:

(1)SETB ACC.0

(2)ANL A,#0FH

(3)ANL A,#87H

15.试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。 答:

MOV 2FH,20H

MOV 2EH,21H

MOV 2DH,22H

16.试编写程序,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,30H单元存差的高8位,31H单元存差的低8位。(注意:此题与书上的题要求不一样,书中要求31H单元存差的高8位,30H单元存差的低8位)

答:

CLR CY

MOV 30H,#7FH

MOV 31H,#4DH

MOV R0, #31H

MOV A,@R0

SUBB A ,#4E

MOV @R0,A ;保存低字节相减结果

DEC R0

MOV A, @R0

SUBB A,#2BH

MOV @R0,A ;保存高字节相减结果

17.试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。 答:

MOV A,R2

ANL A,#0F0H

ORL R1,A

18.试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。

答:

MOV A,20H

MOV B,21H

MUL AB

MOV R3,A

MOV R2,B

19.若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。

MOV P1.3,C

MOV P1.4,C

MOV C,P1.6

MOV P3.6,C

MOV C,P1.0

MOV P3.4,C

(CY)=1, (P1)=10111011B, (P3)=00111100B

章4 80C51的汇编语言程序设计

1.80C51单片机汇编语言有何特点?

答:

汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。

但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。

2.利用80C51单片机汇编语言进行程序设计的步骤如何?

答:

一、任务分析

首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。

二、算法设计

经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。

三、流程描述

程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。

流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。

3.常用的程序结构有哪几种?特点如何?

答:

顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的;

分支程序:可以改变程序的执行顺序;

循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。

4.子程序调用时,参数的传递方法有哪几种?

答:

利用累加器或寄存器;

利用存储器;

利用堆栈。

5.什么是伪指令?常用的伪指令功能如何?

伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括:

ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;

END,功能是结束汇编;

DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;

DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间;

EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名;

BIT,功能是将位地址赋给指定的符号名。

6.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位无符号数相加的程序(采用大端模式存储)。

答:程序如下:

ORG 0000H

MOV R0,#21H

MOV R1,#23H

MOV A,@R0

ADD A,@R1

MOV 25H,A

DEC R0

DEC R1

MOV A,@R0

ADDC A,@R1

MOV 24H,A

SJMP $

END

7.编写程序,把外部RAM中1000H~101FH的内容传送到内部RAM的30H~4FH中。

答:

ORG 0000H

MOV DPTR,#1000H

MOV R0,#30H

MOV R7,#32

LOOP:MOVX A,@DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,LOOP

RET

8.编写程序,实现双字节无符号数加法运算,要求 (R0R1)+(R6R7)→(60H61H)。

ORG 0000H

MOV A,R1

ADD A,R7

MOV 61H,A

MOV A,R0

ADDC A,R6

MOV 60H,A

SJMP $

END

9.若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:MOV R7,#0F6H

LP:MOV R6,#0FAH

DJNZ R6,$

DJNZ R7,LP

RET

答:延时时间: 2µs*{[1+((1+2*250+2)*246)+2]+2}=0.247486秒(含调用指令2个机器周期)

10.在内部RAM 的30H~37H单元存有一组单字节无符号数。要求找出最大数存入BIG单元。试编写程序实现。

答:

ORG 0000H

BIG DATA 2FH

ONE DATA 2AH

TWO DATA 2BH

START:MOV R7,#7 ;比较次数

MOV R0,#30H

LOOP:MOV A,@R0

MOV ONE,A

INC R0

MOV TWO,@R0

CLR C

SUBB A,@R0

JC NEXT ;ONE小,TWO大继续比下一对数

MOV @R0,ONE ;ONE大放后面(交换)

DEC R0

MOV @R0,TWO ;TWO小放前面

INC R0 ;

NEXT:DJNZ R7,LOOP

MOV BIG,37H

SJMP $

END

11.编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。

答:单字节二进制数转换为压缩的BCD码仅需要2个字节;在将压缩的BCD码拆分存于3个单元。

DCDTH:MOV R7,#8

MOV R0,A ;暂存于R0

LOOP:CLR C

MOV A,R0

RLC A

MOV R0,A

MOV R1,#51H;

MOV A,@R1 ;

ADDC A,@R1 ;

DA A ;

MOV @R1,A ;

DEC R1

MOV A,@R1

ADDC A,@R1

DA A

MOV @R1,A

DJNZ R7,LOOP INC R1 ;50H已是结果,R1指向51H,51H单元需拆分 MOV A,#00H org 0 MOV 52H,#0 MOV 51H,#0 MOV 50H,#0 MOV A,#0FDh LCALL DCDTH SJMP $

XCHD A,@R1 MOV 52H,A MOV A,@R1 SWAP A MOV @R1,A RET END

12.编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。

答:

ORG 0

MOV R1,#5BH

MOV A,R1

ANL A,#0F0H

SWAP A

ACALL ASCII

MOV R3,A

MOV A,R1

ANL A, #0FH

ACALL ASCII

MOV R4, A

SJMP $

ASCII:PUSH ACC

CLR C

SUBB A, #0AH

POP ACC

JC LOOP

ADD A, #07H

LOOP: ADD A, #30H

RET

END

13.编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。

答:

ORG 0000H

MOV R7,#10

MOV R0,#50H

MOV B,#10

CLR C

CLR A

LOOP:ADDC A,@R0

INC R0

DJNZ R7,LOOP

DIV AB

MOV 5AH,A

SJMP $

END

14.如图4.10所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键号“0”~“7”。

答:

实现程序如下:

TEMP EQU 30H

ORG 0000H

JMP START

ORG 0100H

START:MOV SP,#5FH

MOV P0,#8CH ;

MOV P3,#0FFH ;

CLR CY

NOKEY:MOV A,P3

CPL A

JZ NOKEY ;

MOV TEMP,P3 ;

CALL D10ms

MOV A,P3

CJNE A,TEMP,NOKEY

MOV R2,#0 ;

MOV A,TEMP

LP:RRC A

JNC DONE

INC R2

SJMP LP

DONE:MOV A,R2

MOV DPTR,#CODE_P0

MOVC A,@A+DPTR

MOV P0,A

JMP NOKEY

正序显示"P" 输入方式 无键按下 有键按下 去抖动 键号计数器复位 ;

D10ms:MOV R5,#10 ;10MS

D1ms:MOV R4,#249

DL:NOP

NOP

DJNZ R4,DL

DJNZ R5,D1ms

RET

CODE_P0:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH

END

章5 80C51的中断系统及定时/计数器

1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?

答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。

电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。

RI和TI,由硬件置位。必须由软件复位。

另外,所有能产生中断的标志位均可由软件置位或复位。 各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。 2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。

答:将3个中断信号经电阻线或,接INT1。

ORG 0000H

LJMP MAIN

ORG 00013H

LJMP ZDFZ

ORG 0040H

MAIN:SETB EA

SETB EX1

SJMP $

0RG 0200H

ZDFZ:PUSH PSW

PUSH ACC

JB P1.0,DV0

JB P1.1,DV1

JB P1.2,DV2

INRET:POP ACC

POP PSW

RETI

ORG 2000H

DV0:------------

JMP INRET

ORG 2100H

DV1:------------

JMP INRET

ORG 2200H

DV2:------------

JMP INRET

3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?

答:

当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。

电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。

当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。

边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。

4.定时/计数器工作于定时和计数方式时有何异同点?

答:

定时/计数器实质是加1计数器。

不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即

方式0:13位计数器;

方式1:16位计数器;

方式2:具有自动重装初值功能的8位计数器;

方式3:T0分为两个独立的8位计数器,T1停止工作。

5.定时/计数器的4种工作方式各有何特点?

答:

方式0位13位计数器,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

计数初值计算的公式为:

X=2-N

方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。计数个数与计数初值的关系为:

X=2-N

方式2为自动重装初值的8位计数方式。TH0为8位初值寄存器。当TL0计满溢出时,由硬件使TF0置1,向CPU发出中断请求,并将TH0中的计数初值自动送入TL0。TL0从初值重新进行加1计数。周而复始,直至TR0=0才会停止。计数个数与计数初值的关系为: 8X=2-N

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。方式3时,T0分成为两个独立的8位计数器TL0和TH0,TL0使用T0的所有控制位。当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求。而TH0固定为定时方式(不能进行外部计数),并且借用了T1的控制位TR1、TF1。因此,TH0的启、停受TR1控制,TH0的溢出将置位TF1。

6.要求定时/计数器的运行控制完全由TR1、TR0确定和完全由INT0、INT1高低电平控制时,其初始化编程应作何处理?

答:TMOD中GATE的值不同:完全由TR1、TR0确定时GATE为0;完全由INT0、INT1高低电平控制时GATE为1。

7.当定时/计数器T0用作方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?

答:T0用作方式3时,T1可以工作在方式0、1和2。T1的开启由TR1控制,即TR1=1时,T1开始工作;TR1=0时或者定时/计数器工作在方式3时,T1停止工作。

1613

8.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHz。试设计程序。

答:

采用定时20ms,然后再计数1、49次的方法实现。

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =20×10/1×10=20000

X=216-N=65536-20000=45536=4E20H -3-6

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:MOV TMOD,#01H ;设T1工作于方式2

MOV TH0,# 4EH ;装入循环计数初值

MOV TL0,#20H ;首次计数值

LP0:SETB P1.0

ACALL NT0

CLR P1.0

MOV R7,#49 ;计数49次

LP1:ACALL NT0

DJNZ R7,LP1

AJMP LP0

NT0:MOV TH0,# 4EH

MOV TL0,#20H

SETB TR0

JNB TF0,$ CLR TR0 CLR TF0

RET

END

9.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。

答:采用T0实现

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

3晶振为12 MHz,所以机器周期Tcy为1μs。1/1000=1×10-

N=t/ Tcy =0.5×10-3/1×10-6=500

X=216-N=65536-500=65036=FE0CH

即应将FEH送入TH0中,0CH送入TL0中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 000BH ;T0的中断入口地址

LJMP DVT0

ORG 0030H

MAIN:MOV TMOD,#01H ;设T0工作于方式2

MOV TH0,# 0FEH ;装入循环计数初值

MOV TL0,#0CH ;首次计数值

SETB ET0 ;T0开中断

SETB EA ;CPU开中断

SETB TR0 ;启动T0

SJMP $ ;等待中断

DVT0:CPL P1.1

MOV TH0,# 0FEH

MOV TL0,# 0CH

SETB TR0

RETI

END

10.试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。

答:

a、T1工作在计数方式2时,控制字TMOD配置:

M1M0=10,GATE=0,C/T=1,可取方式控制字为60H;

T1工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为10H;

b、计算初值X:

定时10ms时:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =10×10/1×10=10000

X=216-N=65536-10000=55536=D8F0H -3-6

即应将D8H送入TH1中,F0H送入TL1中。

计数100时:

N=100

X=28-N=256-100=156=9CH

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 001BH ;T1的中断入口地址

LJMP DVT1

ORG 0030H

MAIN:MOV TMOD,#60H ;T1

MOV TH1,#9CH ;

MOV TL1,#9CH ;

CLR P1.7

SETB ET1 ;T1

SETB EA ;CPU

SETB TR1 ;

SJMP $ ;

DVT1:SETB P1.7

CLR ET1

CLR TR1

MOV TMOD,#10H ;T1

MOV TH1,#0D8H ;

MOV TL1,#0F0H

SETB TR1

JNB TF1,$ ;

CLR TF1

CLR TR1

CLR P1.7

MOV TMOD,#60H ;T1

MOV TH1,#9CH ;

MOV TL1,#9CH ;

SETB ET1 ;T1

SETB TR1 ;

RETI

END

工作于计数方式2 装入计数初值 开中断 开中断 启动T1 等待中断 工作于定时方式1 装初值 查询等待10ms 工作于计数方式2 装初值 开中断 启动T1

11.利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次闪动,闪动频率为1次/秒(即,亮1秒后熄灭并点亮下一个,-----)。

答:采用定时20ms,计数50次实现1秒定时。编制1秒延时子程序,由主程序调用。

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =20×10/1×10=20000

X=216-N=65536-20000=45536=4E20H -3-6

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:CLR CY

MOV A,#01H

LP0:MOV P1,A

CALL D1SEC

RL A

AJMP LP0

D1SEC:MOV R7,#50 ;计数50次

MOV TMOD,#01H

DL:MOV TH0,#4EH

MOV TL0,#20H

SETB TR0

JNB TF0,$ CLR TR0 CLR TF0

DJNZ R7,DL

RET

END

章6 80C51的串行口

1.80C51单片机串行口有几种工作方式?如何选择?简述其特点?

答:

四种工作方式,由SCON中的SM0、SM1进行定义:

方式0:同步移位寄存器的输入输出方式,主要用于扩展并行输入或输出口,波特率固定。 方式1:10位数据的异步通信口,波特率可变。 方式2:11位数据的异步通信口,波特率固定。 方式3:11位数据的异步通信口,波特率可变。 2.串行通信的接口标准有那几种? 答:

RS-232C接口、RS-422A接口、RS-485接口

3.在串行通信中通信速率与传输距离之间的关系如何? 答:

最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1 ft)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当波特率超过1000 bps 时,最大传输距离将迅速下降。

4.在利用RS-422/RS-485通信的过程如果通信距离(波特率固定)过长,应如何处理? 答:

在波特率一定的情况下,带负载数的多少,与信号能传输的最大距离是直接相关的。在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数越少,信号能传输的距离就越远。故应减小通信距离或减少负载数量。

5.利用单片机串行口扩展并行输入接口电路如图所示。试编写程序完成将SW1~SW8的状态反应在P0口所接的LED上(如SW1闭合时L7应点亮)。

答:电路图如下:

ORG 0000H

MOV SCON,#10H LOOP:CLR P1.7 NOP NOP NOP

SETB P1.7

CLR RI JNB RI,$ MOV A,SUBF SJMP LOOP

END

6.利用单片机串行口扩展并行输出接口电路如图所示。试编写程序完成将SW1~SW8的状态反应在移位寄存器74LS164所接的LED上(如SW1闭合时L0应点亮)。

答:电路图如下:

ORG 0000H MOV SCON,#00H MOV P1,#0FFH LOOP:MOV A,P1 MOV SUBF,A JNB TI,$ CLR TI SJMP LOOP END

章7 80C51单片机的系统扩展

1.以80C31为主机,用2片27C256扩展64K EPROM,试画出接口电路。 答:

2.以80C31为主机,用1片27C512扩展64K EPROM,试画出接口电路。 答:

3.以80C31为主机,用1片27C256扩展32K RAM,同时要扩展8K的RAM,试画出接口电路。 答:

4.当单片机应用系统中数据存储器RAM地址和程序存储器EPROM地址重叠时,它们内容的读取是否会发生冲突,为什么?

答:

不会。由于80C51对ROM的读操作由PSEN控制,指令用MOVC类;对RAM读操作用RD控制,指令用MOVX。所以,尽管ROM与RAM的逻辑地址是重叠的,它们内容的读取也不会发生冲突。

5.根据图7.14电路,编程完成对81C55的操作:a、读81C55的80H单元。b、将立即数88H写入81C55

的30H单元。

答:a、

MOV DPTR,#7E80H MOVX A,@DPTR b、

MOV A,#88H MOV DPTR,#7E30H MOVX A,@DPTR 6. I2C总线的特点是什么?

答:a、二线制传输。器件引脚少,器件间连接简单,电路板体积减小,可靠性提高。 b、传输速率高

标准模式传输速率为100Kb/s,快速模式为400Kb/s,高速模式为3.4Mb/s。 c、支持主/从和多主两种工作方式

7、I2C总线的起始信号和终止信号是如何定义的?

答:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号如图所示。

起始信号 S终止信号 P

8、I2C总线的数据传送方向如何控制? 答:

在主机发出起始信号后要再传输1个控制字节:7位从器件地址,1位传输方向控制位(用“0”表示主机发送数据,“1”表示主机接收数据)。

9、具备I2C总线接口的E2PROM芯片有哪几种型号?容量如何? 答:

典型产品如ATMEL公司的AT24C系列: 型号 容量 AT24C01A

128

AT24C02 256 AT24C04 512 AT24C08A AT24C16A AT24C32A 1K 2K 4K

AT24C64A AT24C128B AT24C256B AT24C512B 答:

a、写操作过程

8K 16K 32K 64K

10、AT24C系列芯片的读写格式如何?

对AT24C02写入时,单片机发出起始信号之后再发送的是控制字节,然后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号,单片机收到应答后就可以传送数据了。

传送数据时,单片机首先发送一个字节的预写入存储单元的首地址,收到正确的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。单片机发出停止信号P后,启动AT24C02的内部写周期,完成数据写入工作(约10ms内结束)。

AT24C02片内地址指针在接收到每一个数据字节后自动加1,在芯片的“一次装载字节数”(页面字节数)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。

要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入n个字节数据格式如下:

b、读操作过程

对AT24C02读出时,单片机也要发送该器件的控制字节(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号,被选中的存储器在确认是自己的地址后,在SDA线上产生一个应答信号作为响应。

然后,单片机再发送一个字节的要读出器件的存储区的首地址,收到器件的应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。

读出n个字节的数据格式如下图所示:

章8 80C51单片机的模拟量接口

1. D/A与A/D转换器的主要功能是什么? 答:

D/A转换器:将数字量转换为模拟量。 A/D转换器:将模拟量转换为数字量。

2. DAC0832采用输入寄存器和DAC寄存器二级缓冲有何优点? 答:

可以使多路通道同步输出。

3.试根据图8.3的接口电路编制程序,实现产生正向的锯齿波。 答:设DATA1和DATA2为锯齿波的最低和最高值,有: START :MOV DPTR,#7FFFH

MOV R7,#DATA1

STEP1: MOV A,R7

MOVX @DPTR,A INC R7

CJNE R7,# DATA2,STEP1 JMP START

4.根据图8.6所示的接口电路,若要从该A/D转换器的通道1采集数据,每隔10ms读入4个数据,并将数据存入地址为30H~33H的内部数据存储器中。试设计该程序。

答:

ORG 0 JMP MAIN ORG 0013H JMP INT1 ORG 0040H MAIN:MOV SP,#5FH MOV DPTR,#7FF9H SETB IT1 SETB EX1 SETB EA

LP1:MOV R0,#30H MOV R7,#4 LP2:MOVX @DPTR,A SJMP $ DJNZ R7,LP2 CALL D10ms SJMP LP1 D10ms:MOV R5,#10 D1ms:MOV R4,#249 DL:NOP NOP

DJNZ R4,DL

DJNZ R5,D1ms RET

ORG 0300H INT1:MOVX A,@DPTR MOV @R0,A RETI

章9 80C51单片机C语言程序设计

1.C51应用程序具有怎样的结构? 答:

C51程序由一个或多个函数构成,其中至少应包含一个主函数main。程序从主函数开始执行,调用其它函数后又返回主函数,被调用函数如果位于主调函数前面,可以直接调用,否则应先说明后调用。被调用函数可以是用户自编的函数,或是C51编译器提供的库函数。

2. C51支持的数据类型有哪些? 答:

字符型、整型、长整型、浮点型、位型、访问SFR。

3. C51支持的存储器类型有哪些?与单片机存储器有何对应关系? 答:

见表9.2所示。

4.C51有哪几种编译模式?每种编译模式的特点如何? 答:

SMALL:小模式。变量默认在片内RAM。空间小,速度块;

COMPACT:紧凑模式。变量默认在片外RAM的页(256字节,页号由P2口决定); LARGE:大模式。 变量默认在片外RAM的64KB范围。空间大,速度慢。 5、中断函数是如何定义的?各种选项的意义如何? 答:

interrupt n 用于定义中断函数,n为中断号,可以为0~31,通过中断号可以决定中断服务程序的入口地址。

常用的中断源对应的中断号

6、C51应用程序的参数传递有哪些方式?特点如何? 答:

参数传递可以采用寄存器、固定存储器位置方式。寄存器传递方式最多可以传递3个参数。这种参数传递可以产生高效的代码。当无寄存器可用时,参数可以采用固定的存储器位置传递。在SMALL模式下,参数传递在内部RAM中完成。在COMPACT和LARGER模式下,参数的传递要在外部RAM中完成。

7、一般指针与基于存储器的指针有何区别? 答:

定义时未指定它所指向的对象的存储器类型时,该指针变量就被认为是一般指针。一般指针占用3个字节:第一个字节存放该指针的存储器类型编码(由编译模式的默认值确定),第二和第三个字节分别存放该指针的高位和低位地址偏移量。

定义时就指定了它所指向的对象的存储类型时,该指针变量就属于基于存储器的指针。基于存储器的指针可以高效访问对象,类型由C51源代码中存储器类型决定,且在编译时确定。

8、关键字bit与sbit的意义有何不同? 答:

Bit用于定义位变量的名字,编译器会对其分配地址。位变量分配在内部RAM的20H~2FH单元相应的位区域,位地址范围是00~7FH,共128个;

sbit用于定义位变量的名字和地址,地址是确定的且不用编译器分配。它是SFR中的可以进行位寻址的确定位,也可以是内部RAM的20H~2FH单元中确定的位。

9、单片机汇编程序与C51程序在应用系统开发上有何特点? 答:

采用C51进行程序设计,对系统硬件资源的分配比用汇编语言简单,且程序的阅读和修改比较容易,适于编写较大一点的程序。汇编语言生成的目标程序占存储空间少、运行速度快,具有效率高、实时性强的优点,适于编写短小高效的程序。

章10 80C51应用系统设计方法

1.单片机应用系统的设计有那些要求? 答: a、可靠性要高 b、使用和维修要方便 c、性能价格比要高

2.单片机应用系统的设计有那些步骤? 答:

a、确定任务。 b、方案设计 c、硬件设计 d、软件设计

3.提高单片机应用系统的可靠性有那些措施? 答:

a、电源干扰:交流电源干扰及其抑制、直流电源抗干扰措施。

b、地线干扰及其抑制:接地问题,频率小于1MHz时,采用一点接地;频率高于10MHz时,采用多点接地;频率处于1至10MHz时,若采用一点接地,其地线长度不应超过波长的二十分之一。否则,应采用多点接地。数字地和模拟地应分别接地。印刷电路板的地线分布原则:TTL、CMOS器件的接地线要呈辐射网状,避免环形;板上地线的宽度要根据通过的电流大小而定,最好不小于3mm。在可能的情况下,地线尽量加宽;旁路电容的地线不要太长;功率地通过电流信号较大,地线应较宽,必须与小信号地分开。信号电缆屏蔽层的接地:信号电缆可以采用双绞线和多芯线,又有屏蔽和无屏蔽两种情况。双绞线具有抑制电磁干扰的作用,屏蔽线具有抑制静电感应干扰的作用。

c、其它提高系统可靠性的方法。

4.数据采集系统的模拟通道有那些环节,各环节的功能是什么? 答:

a、传感器:把被测的物理量(如温度、压力等)作为输入参数转换为电量(电流、电压、电阻等)输出。 b、多路开关:多路开关的作用是可以利用一个A/D转换器进行多路模拟量的转换。

c、放大器:放大器通常采用集成运算放大器。在环境条件较差时,可以采用数据放大器(也称为精密测量放大器)或传感器接口专用模块。

d、采样保持器:采样保持器具有采样和保持两个状态。在采样状态时,电路的输出跟随输入模拟信号变化;在保持状态时,电路的输出保持着前一次采样结束前瞬间的模拟量值。使用采样保持器的目的是使A/D转换器转换期间输入的模拟量数值不变,从而提高A/D转换的精度。

e、A/D转换器:A/D转换器的主要指标是分辨率。A/D转换器的位数与其分辨率有直接的关系。A/D转换器的另一重要指标是转换时间。选择A/D转换器时必须满足采样分辨率和速度的要求。

5.什么情况下可以不用采样保持器? 答:

当输入信号的变化与A/D转换器的转换时间慢得多时,可以不用采样保持器。 6、模拟信号的放大应注意哪些问题?

答:当信号的数值符合A/D转换器的输入等级时,可以不用放大器放大;当信号的数值不符合A/D转换器的输入等级时,就需要放大器放大。

7、多路模拟开关的选择要注意什么?

答:正确选择多路开关的种类,注意多路开关与相关电路的合理搭配与协调,保证各电路单元有合适的工作状态;选择合适的通断切换方式;择合适的传输信号输入方式;减小导通电阻的影响。

8、与80C51兼容的单片机主流产品有哪些?各有何特点? 答:与80C51兼容的主要产品有:

 ATMEL公司融入Flash存储器技术推出的AT89系列单片机;  Philips公司推出的80C51、80C552系列高性能单片机;  华邦公司推出的

W78C51、W77C51系列高速低价单片机;

 ADI公司推出的ADμC8xx系列高精度ADC单片机;  LG公司推出的GMS90/97系列低压高速单片机;  Maxim公司推出的DS89C420高速(50MIPS)单片机;

 Cygnal公司推出的C8051F系列高速SOC单片机等。

章1 绪 论

1.第一台计算机的问世有何意义?

答:

第一台电子数字计算机ENIAC问世,标志着计算机时代的到来。与现代的计算机相比,ENIAC有许多不足,但它的问世开创了计算机科学技术的新纪元,对人类的生产和生活方式产生了巨大的影响。

2.计算机由哪几部分组成?

答:

由运算器、控制器、存储器、输入设备和输出设备组成,运算器与控制器合称为CPU。

3.微型计算机由哪几部分构成?

答:

微型计算机由微处理器、存储器和I/O接口电路构成。各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。

4.微处理器与微型计算机有何区别?

答:

微处理器集成了运算器和控制器(即CPU);而微型计算机包含微处理器、存储器和I/O接口电路等。

5.什么叫单片机?其主要特点有哪些?

答:

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。单片机主要特点有:控制性能和可靠性高;体积小、价格低、易于产品化;具有良好的性能价格比。。

6.微型计算机有哪些应用形式?各适于什么场合?

答:

微型计算机有三种应用形式:多板机(系统机)、单板机和单片机。

多板机,通常作为办公或家庭的事务处理及科学计算,属于通用计算机。

单板机,I/O设备简单,软件资源少,使用不方便。早期主要用于微型计算机原理的教学及简单的测控系统,现在已很少使用。

单片机,单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势。目前,单片机应用技术已经成为电子应用系统设计的最为常用技术手段。

7.当前单片机的主要产品有哪些?各有何特点?

答:

多年来的应用实践已经证明,80C51的系统结构合理、技术成熟。因此,许多单片机芯片生产厂商倾力于提高80C51单片机产品的综合功能,从而形成了80C51的主流产品地位,近年来推出的与80C51兼容的主要产品有:

 ATMEL公司融入Flash存储器技术推出的AT89系列单片机;

 Philips公司推出的80C51、80C552系列高性能单片机;

 华邦公司推出的 W78C51、W77C51系列高速低价单片机;

 ADI公司推出的ADμC8xx系列高精度ADC单片机;

 LG公司推出的GMS90/97系列低压高速单片机;

 Maxim公司推出的DS89C420高速(50MIPS)单片机;

 Cygnal公司推出的C8051F系列高速SOC单片机等。

8.简述单片机的开发过程。

答:

系统需求分析,硬件方案设计,软件编程,仿真调试,实际运行。

9.单片机应用系统开发方法有哪些新方法?

答:

在系统编程(ISP)技术,在应用编程(IAP)技术。

章2 80C51的结构和原理

1.80C51单片机在功能上、工艺上、程序存储器的配置上有哪些种类?

答:

功能上分为基本型和增强型;

工艺上分为HMOS工艺和CHMOS工艺;

在片内程序存储器的配置上有掩膜ROM、EPROM和Flash、无片内程序存储器形式。

2. 80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?

答:

采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51基本型单片机片内程序存储器为4KB,地址范围是0000H-0FFFH,用于存放程序或常数;片内数据存储器为128字节RAM,地址范围是00H-7FH,用于存放运算的中间结果、暂存数据和数据缓冲;另外在80H-FFH还配有21个SFR。

3.80C51单片机的P0~P3口在结构上有何不同?在使用上有何特点?

答:

作为通用I/O口时,P0、P1、P2和P3都是准双向口。

P0可以作为地址/数据总线,此时是一个真正的双向口;P2口可以作为地址线的高8位;P3口是双功能口,每条口线还具有不同的第二功能。

另外,P0口的驱动能力为8个TTL负载,而其它口仅可驱动4个TTL负载。

4.如果80C51单片机晶振频率分别为6 MHz、11.0592 MHz、12MHz时,机器周期分别为多少? 答:

机器周期分别为2μs,1.085μs,1μs。

5.80C51单片机复位后的状态如何?复位方法有几种?

答:

复位后,PC内容为0000H,P0口~P3口内容为FFH,SP内容为07H,SBUF内容不定,IP、IE和PCON

的有效位为0,其余的特殊功能寄存器的状态均为00H。复位方法一种是上电复位,另一种是上电与按键均有效的复位。

6.80C51单片机的片内、片外存储器如何选择?

答:

80C51的EA引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存储器需要采用不同的指令加以区分。

7.80C51单片机的PSW寄存器各位标志的意义如何?

答:

CY:进位、借位标志。有进位、借位时 CY=1,否则CY=0;

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位);

F0:用户标志位,由用户自己定义;

RS1、RS0:当前工作寄存器组选择位;

OV:溢出标志位。有溢出时OV=1,否则OV=0;

P:奇偶标志位。存于ACC中的运算结果有奇数个1时P=1,否则P=0。

8. 80C51单片机的当前工作寄存器组如何选择?

答:

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RS1、RS0 来决定。

9.80C51单片机的控制总线信号有哪些?各信号的作用如何?

答: RST/VPD:复位信号输入引脚/备用电源输入引脚;ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚;EA/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。

10.80C51单片机的程序存储器低端的几个特殊单元的用途如何?

答:

0000H:单片机复位入口地址;0003H:外部中断0的中断服务程序入口地址;000BH:定时/计数器0溢出中断服务程序入口地址;0013H:外部中断1的中断服务程序入口地址;001BH:定时/计数器1溢出中断服务程序入口地址;0023H:串行口的中断服务程序入口地址。

章3 80C51的指令系统

1.80C51系列单片机的指令系统有何特点?

答:

执行时间短。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅有2条(即乘法和除法指令);

指令编码字节少。单字节的指令有49条,双字节的指令有45条,三字节的指令仅有17条;

位操作指令丰富。这是80C51单片机面向控制特点的重要保证。

2.80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?

答:

80C51单片机的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。

这些寻址方式所对应的寄存器和存储空间如下表所示。

3.访问特殊功能寄存器SFR可以采用哪些寻址方式?

答:

直接寻址和位寻址方式。

4.访问内部RAM单元可以采用哪些寻址方式?

答:

直接寻址、寄存器间接寻址和位寻址方式。

5.访问外部RAM单元可以采用哪些寻址方式?

答:

寄存器间接寻址。

6.访问外部程序存储器可以采用哪些寻址方式?

答:

立即寻址、变址寻址和相对寻址方式。

7.为什么说布尔处理功能是80C51单片机的重要特点?

答:

单片机指令系统中的布尔指令集、存储器中的位地址空间与CPU中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志器(PSW)中的进位标志Cy作为位操作的“累加器”。

8.对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问?

答:

寄存器间接寻址方式。

9.试根据指令编码表写出下列指令的机器码。

(1)MOV A,#88H----------------74H, 88H

(2)MOV R3,50H----------------ABH,50H

(3)MOV P1,#55H----------75H,90H,55H

(4)ADD A,@R1---------------------27H

(5)SETB 12H----------------------D2H,12H

10.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。

(1)将R0的内容传送到R1;

(2)内部RAM单元60H的内容传送到寄存器R2;

(3)外部RAM单元1000H的内容传送到内部RAM单元60H;

(4)外部RAM单元1000H的内容传送到寄存器R2;

(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。

答:

(1)MOV A,R0

MOV R1,A

(2)MOV R2,60H

(3)MOV DPTR,#1000H

MOVX A,@DPTR

MOV 60H,A

(4)MOV DPTR,#1000H

MOVX A,@DPTR

MOV R2,A

(5)MOV DPTR,#1000H

MOVX A,@DPTR

MOV DPTR,#2000H

MOVX @DPTR, A

11.若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。

MOV A,@R1

MOV @R1,40H

MOV 40H,A

MOV R1,#7FH

答:

(R1)=7FH

(A)=60H

(30H)=08H

(40H)=60H

12.若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。

(1)MOV A,@R0

(2)ANL 40H,#0FH

(3)ADD A,R4

(4)SWAP A

(5)DEC @R1

(6)XCHD A,@R1

答:

(1)(A)=2CH

(2)(40H)=0CH

(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0

(4)(A)=8EH

(5)(20H)=0EH,P=1

(6)(A)=EFH,(20)=08H

13.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?

MOV A,50H

MOV R0,A

MOV A,#00H

MOV @R0,A

MOV A,#3BH

MOV 41H,A

MOV 42H,41H

答:

(A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。

14.试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

(1)使ACC.0置位;

(2)清除累加器高4位;

(3)清除ACC.3,ACC.4,ACC.5,ACC.6。

答:

(1)SETB ACC.0

(2)ANL A,#0FH

(3)ANL A,#87H

15.试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。 答:

MOV 2FH,20H

MOV 2EH,21H

MOV 2DH,22H

16.试编写程序,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,30H单元存差的高8位,31H单元存差的低8位。(注意:此题与书上的题要求不一样,书中要求31H单元存差的高8位,30H单元存差的低8位)

答:

CLR CY

MOV 30H,#7FH

MOV 31H,#4DH

MOV R0, #31H

MOV A,@R0

SUBB A ,#4E

MOV @R0,A ;保存低字节相减结果

DEC R0

MOV A, @R0

SUBB A,#2BH

MOV @R0,A ;保存高字节相减结果

17.试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。 答:

MOV A,R2

ANL A,#0F0H

ORL R1,A

18.试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。

答:

MOV A,20H

MOV B,21H

MUL AB

MOV R3,A

MOV R2,B

19.若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。

MOV P1.3,C

MOV P1.4,C

MOV C,P1.6

MOV P3.6,C

MOV C,P1.0

MOV P3.4,C

(CY)=1, (P1)=10111011B, (P3)=00111100B

章4 80C51的汇编语言程序设计

1.80C51单片机汇编语言有何特点?

答:

汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。

但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。

2.利用80C51单片机汇编语言进行程序设计的步骤如何?

答:

一、任务分析

首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。

二、算法设计

经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。

三、流程描述

程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。

流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。

3.常用的程序结构有哪几种?特点如何?

答:

顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的;

分支程序:可以改变程序的执行顺序;

循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。

4.子程序调用时,参数的传递方法有哪几种?

答:

利用累加器或寄存器;

利用存储器;

利用堆栈。

5.什么是伪指令?常用的伪指令功能如何?

伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括:

ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;

END,功能是结束汇编;

DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;

DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间;

EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名;

BIT,功能是将位地址赋给指定的符号名。

6.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位无符号数相加的程序(采用大端模式存储)。

答:程序如下:

ORG 0000H

MOV R0,#21H

MOV R1,#23H

MOV A,@R0

ADD A,@R1

MOV 25H,A

DEC R0

DEC R1

MOV A,@R0

ADDC A,@R1

MOV 24H,A

SJMP $

END

7.编写程序,把外部RAM中1000H~101FH的内容传送到内部RAM的30H~4FH中。

答:

ORG 0000H

MOV DPTR,#1000H

MOV R0,#30H

MOV R7,#32

LOOP:MOVX A,@DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,LOOP

RET

8.编写程序,实现双字节无符号数加法运算,要求 (R0R1)+(R6R7)→(60H61H)。

ORG 0000H

MOV A,R1

ADD A,R7

MOV 61H,A

MOV A,R0

ADDC A,R6

MOV 60H,A

SJMP $

END

9.若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:MOV R7,#0F6H

LP:MOV R6,#0FAH

DJNZ R6,$

DJNZ R7,LP

RET

答:延时时间: 2µs*{[1+((1+2*250+2)*246)+2]+2}=0.247486秒(含调用指令2个机器周期)

10.在内部RAM 的30H~37H单元存有一组单字节无符号数。要求找出最大数存入BIG单元。试编写程序实现。

答:

ORG 0000H

BIG DATA 2FH

ONE DATA 2AH

TWO DATA 2BH

START:MOV R7,#7 ;比较次数

MOV R0,#30H

LOOP:MOV A,@R0

MOV ONE,A

INC R0

MOV TWO,@R0

CLR C

SUBB A,@R0

JC NEXT ;ONE小,TWO大继续比下一对数

MOV @R0,ONE ;ONE大放后面(交换)

DEC R0

MOV @R0,TWO ;TWO小放前面

INC R0 ;

NEXT:DJNZ R7,LOOP

MOV BIG,37H

SJMP $

END

11.编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。

答:单字节二进制数转换为压缩的BCD码仅需要2个字节;在将压缩的BCD码拆分存于3个单元。

DCDTH:MOV R7,#8

MOV R0,A ;暂存于R0

LOOP:CLR C

MOV A,R0

RLC A

MOV R0,A

MOV R1,#51H;

MOV A,@R1 ;

ADDC A,@R1 ;

DA A ;

MOV @R1,A ;

DEC R1

MOV A,@R1

ADDC A,@R1

DA A

MOV @R1,A

DJNZ R7,LOOP INC R1 ;50H已是结果,R1指向51H,51H单元需拆分 MOV A,#00H org 0 MOV 52H,#0 MOV 51H,#0 MOV 50H,#0 MOV A,#0FDh LCALL DCDTH SJMP $

XCHD A,@R1 MOV 52H,A MOV A,@R1 SWAP A MOV @R1,A RET END

12.编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。

答:

ORG 0

MOV R1,#5BH

MOV A,R1

ANL A,#0F0H

SWAP A

ACALL ASCII

MOV R3,A

MOV A,R1

ANL A, #0FH

ACALL ASCII

MOV R4, A

SJMP $

ASCII:PUSH ACC

CLR C

SUBB A, #0AH

POP ACC

JC LOOP

ADD A, #07H

LOOP: ADD A, #30H

RET

END

13.编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。

答:

ORG 0000H

MOV R7,#10

MOV R0,#50H

MOV B,#10

CLR C

CLR A

LOOP:ADDC A,@R0

INC R0

DJNZ R7,LOOP

DIV AB

MOV 5AH,A

SJMP $

END

14.如图4.10所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键号“0”~“7”。

答:

实现程序如下:

TEMP EQU 30H

ORG 0000H

JMP START

ORG 0100H

START:MOV SP,#5FH

MOV P0,#8CH ;

MOV P3,#0FFH ;

CLR CY

NOKEY:MOV A,P3

CPL A

JZ NOKEY ;

MOV TEMP,P3 ;

CALL D10ms

MOV A,P3

CJNE A,TEMP,NOKEY

MOV R2,#0 ;

MOV A,TEMP

LP:RRC A

JNC DONE

INC R2

SJMP LP

DONE:MOV A,R2

MOV DPTR,#CODE_P0

MOVC A,@A+DPTR

MOV P0,A

JMP NOKEY

正序显示"P" 输入方式 无键按下 有键按下 去抖动 键号计数器复位 ;

D10ms:MOV R5,#10 ;10MS

D1ms:MOV R4,#249

DL:NOP

NOP

DJNZ R4,DL

DJNZ R5,D1ms

RET

CODE_P0:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH

END

章5 80C51的中断系统及定时/计数器

1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?

答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。

电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。

RI和TI,由硬件置位。必须由软件复位。

另外,所有能产生中断的标志位均可由软件置位或复位。 各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。 2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。

答:将3个中断信号经电阻线或,接INT1。

ORG 0000H

LJMP MAIN

ORG 00013H

LJMP ZDFZ

ORG 0040H

MAIN:SETB EA

SETB EX1

SJMP $

0RG 0200H

ZDFZ:PUSH PSW

PUSH ACC

JB P1.0,DV0

JB P1.1,DV1

JB P1.2,DV2

INRET:POP ACC

POP PSW

RETI

ORG 2000H

DV0:------------

JMP INRET

ORG 2100H

DV1:------------

JMP INRET

ORG 2200H

DV2:------------

JMP INRET

3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?

答:

当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。

电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。

当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。

边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。

4.定时/计数器工作于定时和计数方式时有何异同点?

答:

定时/计数器实质是加1计数器。

不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即

方式0:13位计数器;

方式1:16位计数器;

方式2:具有自动重装初值功能的8位计数器;

方式3:T0分为两个独立的8位计数器,T1停止工作。

5.定时/计数器的4种工作方式各有何特点?

答:

方式0位13位计数器,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

计数初值计算的公式为:

X=2-N

方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。计数个数与计数初值的关系为:

X=2-N

方式2为自动重装初值的8位计数方式。TH0为8位初值寄存器。当TL0计满溢出时,由硬件使TF0置1,向CPU发出中断请求,并将TH0中的计数初值自动送入TL0。TL0从初值重新进行加1计数。周而复始,直至TR0=0才会停止。计数个数与计数初值的关系为: 8X=2-N

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。方式3时,T0分成为两个独立的8位计数器TL0和TH0,TL0使用T0的所有控制位。当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求。而TH0固定为定时方式(不能进行外部计数),并且借用了T1的控制位TR1、TF1。因此,TH0的启、停受TR1控制,TH0的溢出将置位TF1。

6.要求定时/计数器的运行控制完全由TR1、TR0确定和完全由INT0、INT1高低电平控制时,其初始化编程应作何处理?

答:TMOD中GATE的值不同:完全由TR1、TR0确定时GATE为0;完全由INT0、INT1高低电平控制时GATE为1。

7.当定时/计数器T0用作方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?

答:T0用作方式3时,T1可以工作在方式0、1和2。T1的开启由TR1控制,即TR1=1时,T1开始工作;TR1=0时或者定时/计数器工作在方式3时,T1停止工作。

1613

8.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHz。试设计程序。

答:

采用定时20ms,然后再计数1、49次的方法实现。

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =20×10/1×10=20000

X=216-N=65536-20000=45536=4E20H -3-6

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:MOV TMOD,#01H ;设T1工作于方式2

MOV TH0,# 4EH ;装入循环计数初值

MOV TL0,#20H ;首次计数值

LP0:SETB P1.0

ACALL NT0

CLR P1.0

MOV R7,#49 ;计数49次

LP1:ACALL NT0

DJNZ R7,LP1

AJMP LP0

NT0:MOV TH0,# 4EH

MOV TL0,#20H

SETB TR0

JNB TF0,$ CLR TR0 CLR TF0

RET

END

9.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。

答:采用T0实现

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

3晶振为12 MHz,所以机器周期Tcy为1μs。1/1000=1×10-

N=t/ Tcy =0.5×10-3/1×10-6=500

X=216-N=65536-500=65036=FE0CH

即应将FEH送入TH0中,0CH送入TL0中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 000BH ;T0的中断入口地址

LJMP DVT0

ORG 0030H

MAIN:MOV TMOD,#01H ;设T0工作于方式2

MOV TH0,# 0FEH ;装入循环计数初值

MOV TL0,#0CH ;首次计数值

SETB ET0 ;T0开中断

SETB EA ;CPU开中断

SETB TR0 ;启动T0

SJMP $ ;等待中断

DVT0:CPL P1.1

MOV TH0,# 0FEH

MOV TL0,# 0CH

SETB TR0

RETI

END

10.试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。

答:

a、T1工作在计数方式2时,控制字TMOD配置:

M1M0=10,GATE=0,C/T=1,可取方式控制字为60H;

T1工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为10H;

b、计算初值X:

定时10ms时:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =10×10/1×10=10000

X=216-N=65536-10000=55536=D8F0H -3-6

即应将D8H送入TH1中,F0H送入TL1中。

计数100时:

N=100

X=28-N=256-100=156=9CH

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 001BH ;T1的中断入口地址

LJMP DVT1

ORG 0030H

MAIN:MOV TMOD,#60H ;T1

MOV TH1,#9CH ;

MOV TL1,#9CH ;

CLR P1.7

SETB ET1 ;T1

SETB EA ;CPU

SETB TR1 ;

SJMP $ ;

DVT1:SETB P1.7

CLR ET1

CLR TR1

MOV TMOD,#10H ;T1

MOV TH1,#0D8H ;

MOV TL1,#0F0H

SETB TR1

JNB TF1,$ ;

CLR TF1

CLR TR1

CLR P1.7

MOV TMOD,#60H ;T1

MOV TH1,#9CH ;

MOV TL1,#9CH ;

SETB ET1 ;T1

SETB TR1 ;

RETI

END

工作于计数方式2 装入计数初值 开中断 开中断 启动T1 等待中断 工作于定时方式1 装初值 查询等待10ms 工作于计数方式2 装初值 开中断 启动T1

11.利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次闪动,闪动频率为1次/秒(即,亮1秒后熄灭并点亮下一个,-----)。

答:采用定时20ms,计数50次实现1秒定时。编制1秒延时子程序,由主程序调用。

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1μs。

N=t/ Tcy =20×10/1×10=20000

X=216-N=65536-20000=45536=4E20H -3-6

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:CLR CY

MOV A,#01H

LP0:MOV P1,A

CALL D1SEC

RL A

AJMP LP0

D1SEC:MOV R7,#50 ;计数50次

MOV TMOD,#01H

DL:MOV TH0,#4EH

MOV TL0,#20H

SETB TR0

JNB TF0,$ CLR TR0 CLR TF0

DJNZ R7,DL

RET

END

章6 80C51的串行口

1.80C51单片机串行口有几种工作方式?如何选择?简述其特点?

答:

四种工作方式,由SCON中的SM0、SM1进行定义:

方式0:同步移位寄存器的输入输出方式,主要用于扩展并行输入或输出口,波特率固定。 方式1:10位数据的异步通信口,波特率可变。 方式2:11位数据的异步通信口,波特率固定。 方式3:11位数据的异步通信口,波特率可变。 2.串行通信的接口标准有那几种? 答:

RS-232C接口、RS-422A接口、RS-485接口

3.在串行通信中通信速率与传输距离之间的关系如何? 答:

最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1 ft)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当波特率超过1000 bps 时,最大传输距离将迅速下降。

4.在利用RS-422/RS-485通信的过程如果通信距离(波特率固定)过长,应如何处理? 答:

在波特率一定的情况下,带负载数的多少,与信号能传输的最大距离是直接相关的。在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数越少,信号能传输的距离就越远。故应减小通信距离或减少负载数量。

5.利用单片机串行口扩展并行输入接口电路如图所示。试编写程序完成将SW1~SW8的状态反应在P0口所接的LED上(如SW1闭合时L7应点亮)。

答:电路图如下:

ORG 0000H

MOV SCON,#10H LOOP:CLR P1.7 NOP NOP NOP

SETB P1.7

CLR RI JNB RI,$ MOV A,SUBF SJMP LOOP

END

6.利用单片机串行口扩展并行输出接口电路如图所示。试编写程序完成将SW1~SW8的状态反应在移位寄存器74LS164所接的LED上(如SW1闭合时L0应点亮)。

答:电路图如下:

ORG 0000H MOV SCON,#00H MOV P1,#0FFH LOOP:MOV A,P1 MOV SUBF,A JNB TI,$ CLR TI SJMP LOOP END

章7 80C51单片机的系统扩展

1.以80C31为主机,用2片27C256扩展64K EPROM,试画出接口电路。 答:

2.以80C31为主机,用1片27C512扩展64K EPROM,试画出接口电路。 答:

3.以80C31为主机,用1片27C256扩展32K RAM,同时要扩展8K的RAM,试画出接口电路。 答:

4.当单片机应用系统中数据存储器RAM地址和程序存储器EPROM地址重叠时,它们内容的读取是否会发生冲突,为什么?

答:

不会。由于80C51对ROM的读操作由PSEN控制,指令用MOVC类;对RAM读操作用RD控制,指令用MOVX。所以,尽管ROM与RAM的逻辑地址是重叠的,它们内容的读取也不会发生冲突。

5.根据图7.14电路,编程完成对81C55的操作:a、读81C55的80H单元。b、将立即数88H写入81C55

的30H单元。

答:a、

MOV DPTR,#7E80H MOVX A,@DPTR b、

MOV A,#88H MOV DPTR,#7E30H MOVX A,@DPTR 6. I2C总线的特点是什么?

答:a、二线制传输。器件引脚少,器件间连接简单,电路板体积减小,可靠性提高。 b、传输速率高

标准模式传输速率为100Kb/s,快速模式为400Kb/s,高速模式为3.4Mb/s。 c、支持主/从和多主两种工作方式

7、I2C总线的起始信号和终止信号是如何定义的?

答:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号如图所示。

起始信号 S终止信号 P

8、I2C总线的数据传送方向如何控制? 答:

在主机发出起始信号后要再传输1个控制字节:7位从器件地址,1位传输方向控制位(用“0”表示主机发送数据,“1”表示主机接收数据)。

9、具备I2C总线接口的E2PROM芯片有哪几种型号?容量如何? 答:

典型产品如ATMEL公司的AT24C系列: 型号 容量 AT24C01A

128

AT24C02 256 AT24C04 512 AT24C08A AT24C16A AT24C32A 1K 2K 4K

AT24C64A AT24C128B AT24C256B AT24C512B 答:

a、写操作过程

8K 16K 32K 64K

10、AT24C系列芯片的读写格式如何?

对AT24C02写入时,单片机发出起始信号之后再发送的是控制字节,然后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号,单片机收到应答后就可以传送数据了。

传送数据时,单片机首先发送一个字节的预写入存储单元的首地址,收到正确的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。单片机发出停止信号P后,启动AT24C02的内部写周期,完成数据写入工作(约10ms内结束)。

AT24C02片内地址指针在接收到每一个数据字节后自动加1,在芯片的“一次装载字节数”(页面字节数)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。

要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入n个字节数据格式如下:

b、读操作过程

对AT24C02读出时,单片机也要发送该器件的控制字节(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号,被选中的存储器在确认是自己的地址后,在SDA线上产生一个应答信号作为响应。

然后,单片机再发送一个字节的要读出器件的存储区的首地址,收到器件的应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。

读出n个字节的数据格式如下图所示:

章8 80C51单片机的模拟量接口

1. D/A与A/D转换器的主要功能是什么? 答:

D/A转换器:将数字量转换为模拟量。 A/D转换器:将模拟量转换为数字量。

2. DAC0832采用输入寄存器和DAC寄存器二级缓冲有何优点? 答:

可以使多路通道同步输出。

3.试根据图8.3的接口电路编制程序,实现产生正向的锯齿波。 答:设DATA1和DATA2为锯齿波的最低和最高值,有: START :MOV DPTR,#7FFFH

MOV R7,#DATA1

STEP1: MOV A,R7

MOVX @DPTR,A INC R7

CJNE R7,# DATA2,STEP1 JMP START

4.根据图8.6所示的接口电路,若要从该A/D转换器的通道1采集数据,每隔10ms读入4个数据,并将数据存入地址为30H~33H的内部数据存储器中。试设计该程序。

答:

ORG 0 JMP MAIN ORG 0013H JMP INT1 ORG 0040H MAIN:MOV SP,#5FH MOV DPTR,#7FF9H SETB IT1 SETB EX1 SETB EA

LP1:MOV R0,#30H MOV R7,#4 LP2:MOVX @DPTR,A SJMP $ DJNZ R7,LP2 CALL D10ms SJMP LP1 D10ms:MOV R5,#10 D1ms:MOV R4,#249 DL:NOP NOP

DJNZ R4,DL

DJNZ R5,D1ms RET

ORG 0300H INT1:MOVX A,@DPTR MOV @R0,A RETI

章9 80C51单片机C语言程序设计

1.C51应用程序具有怎样的结构? 答:

C51程序由一个或多个函数构成,其中至少应包含一个主函数main。程序从主函数开始执行,调用其它函数后又返回主函数,被调用函数如果位于主调函数前面,可以直接调用,否则应先说明后调用。被调用函数可以是用户自编的函数,或是C51编译器提供的库函数。

2. C51支持的数据类型有哪些? 答:

字符型、整型、长整型、浮点型、位型、访问SFR。

3. C51支持的存储器类型有哪些?与单片机存储器有何对应关系? 答:

见表9.2所示。

4.C51有哪几种编译模式?每种编译模式的特点如何? 答:

SMALL:小模式。变量默认在片内RAM。空间小,速度块;

COMPACT:紧凑模式。变量默认在片外RAM的页(256字节,页号由P2口决定); LARGE:大模式。 变量默认在片外RAM的64KB范围。空间大,速度慢。 5、中断函数是如何定义的?各种选项的意义如何? 答:

interrupt n 用于定义中断函数,n为中断号,可以为0~31,通过中断号可以决定中断服务程序的入口地址。

常用的中断源对应的中断号

6、C51应用程序的参数传递有哪些方式?特点如何? 答:

参数传递可以采用寄存器、固定存储器位置方式。寄存器传递方式最多可以传递3个参数。这种参数传递可以产生高效的代码。当无寄存器可用时,参数可以采用固定的存储器位置传递。在SMALL模式下,参数传递在内部RAM中完成。在COMPACT和LARGER模式下,参数的传递要在外部RAM中完成。

7、一般指针与基于存储器的指针有何区别? 答:

定义时未指定它所指向的对象的存储器类型时,该指针变量就被认为是一般指针。一般指针占用3个字节:第一个字节存放该指针的存储器类型编码(由编译模式的默认值确定),第二和第三个字节分别存放该指针的高位和低位地址偏移量。

定义时就指定了它所指向的对象的存储类型时,该指针变量就属于基于存储器的指针。基于存储器的指针可以高效访问对象,类型由C51源代码中存储器类型决定,且在编译时确定。

8、关键字bit与sbit的意义有何不同? 答:

Bit用于定义位变量的名字,编译器会对其分配地址。位变量分配在内部RAM的20H~2FH单元相应的位区域,位地址范围是00~7FH,共128个;

sbit用于定义位变量的名字和地址,地址是确定的且不用编译器分配。它是SFR中的可以进行位寻址的确定位,也可以是内部RAM的20H~2FH单元中确定的位。

9、单片机汇编程序与C51程序在应用系统开发上有何特点? 答:

采用C51进行程序设计,对系统硬件资源的分配比用汇编语言简单,且程序的阅读和修改比较容易,适于编写较大一点的程序。汇编语言生成的目标程序占存储空间少、运行速度快,具有效率高、实时性强的优点,适于编写短小高效的程序。

章10 80C51应用系统设计方法

1.单片机应用系统的设计有那些要求? 答: a、可靠性要高 b、使用和维修要方便 c、性能价格比要高

2.单片机应用系统的设计有那些步骤? 答:

a、确定任务。 b、方案设计 c、硬件设计 d、软件设计

3.提高单片机应用系统的可靠性有那些措施? 答:

a、电源干扰:交流电源干扰及其抑制、直流电源抗干扰措施。

b、地线干扰及其抑制:接地问题,频率小于1MHz时,采用一点接地;频率高于10MHz时,采用多点接地;频率处于1至10MHz时,若采用一点接地,其地线长度不应超过波长的二十分之一。否则,应采用多点接地。数字地和模拟地应分别接地。印刷电路板的地线分布原则:TTL、CMOS器件的接地线要呈辐射网状,避免环形;板上地线的宽度要根据通过的电流大小而定,最好不小于3mm。在可能的情况下,地线尽量加宽;旁路电容的地线不要太长;功率地通过电流信号较大,地线应较宽,必须与小信号地分开。信号电缆屏蔽层的接地:信号电缆可以采用双绞线和多芯线,又有屏蔽和无屏蔽两种情况。双绞线具有抑制电磁干扰的作用,屏蔽线具有抑制静电感应干扰的作用。

c、其它提高系统可靠性的方法。

4.数据采集系统的模拟通道有那些环节,各环节的功能是什么? 答:

a、传感器:把被测的物理量(如温度、压力等)作为输入参数转换为电量(电流、电压、电阻等)输出。 b、多路开关:多路开关的作用是可以利用一个A/D转换器进行多路模拟量的转换。

c、放大器:放大器通常采用集成运算放大器。在环境条件较差时,可以采用数据放大器(也称为精密测量放大器)或传感器接口专用模块。

d、采样保持器:采样保持器具有采样和保持两个状态。在采样状态时,电路的输出跟随输入模拟信号变化;在保持状态时,电路的输出保持着前一次采样结束前瞬间的模拟量值。使用采样保持器的目的是使A/D转换器转换期间输入的模拟量数值不变,从而提高A/D转换的精度。

e、A/D转换器:A/D转换器的主要指标是分辨率。A/D转换器的位数与其分辨率有直接的关系。A/D转换器的另一重要指标是转换时间。选择A/D转换器时必须满足采样分辨率和速度的要求。

5.什么情况下可以不用采样保持器? 答:

当输入信号的变化与A/D转换器的转换时间慢得多时,可以不用采样保持器。 6、模拟信号的放大应注意哪些问题?

答:当信号的数值符合A/D转换器的输入等级时,可以不用放大器放大;当信号的数值不符合A/D转换器的输入等级时,就需要放大器放大。

7、多路模拟开关的选择要注意什么?

答:正确选择多路开关的种类,注意多路开关与相关电路的合理搭配与协调,保证各电路单元有合适的工作状态;选择合适的通断切换方式;择合适的传输信号输入方式;减小导通电阻的影响。

8、与80C51兼容的单片机主流产品有哪些?各有何特点? 答:与80C51兼容的主要产品有:

 ATMEL公司融入Flash存储器技术推出的AT89系列单片机;  Philips公司推出的80C51、80C552系列高性能单片机;  华邦公司推出的

W78C51、W77C51系列高速低价单片机;

 ADI公司推出的ADμC8xx系列高精度ADC单片机;  LG公司推出的GMS90/97系列低压高速单片机;  Maxim公司推出的DS89C420高速(50MIPS)单片机;

 Cygnal公司推出的C8051F系列高速SOC单片机等。


相关文章

  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • 单片机课后重要习题答案
  • 3.16 8051芯片需要外扩4KB 程序存储器,要求地址范围为1000~1FFFH,以便 和内部程序存储器地址相衔接.所用芯片除了地址线和数据线外,只有一个片选控制端/CS,画出扩展系统的连接图. 解: 3. 17 在图3.13中,若因某 ...查看


  • 嵌入式技术基础与实践(第3版)课后习题1-8章答案
  • 试阅: hello ---------------------正文 第一章 1.嵌入式系统的基本含义是什么?为什么说单片机是典型的嵌入式系统? 答:即MCU 的含义是:在一块芯片上集成了中央处理单元(CPU ).存储器(RAM/ROM等). ...查看


  • 智能仪器原理及应用(第二版)课后习题部分答案
  • 1-1. 什么是智能仪器?智能仪器的主要特点是什么? 答: 内含微型计算机并带有GP-IB 等通信接口的电子仪器成为智能仪器. 特点:(1)智能仪器使用键盘代替传统仪器中的旋转式或琴键式切换开关开实施对仪器的控制从而使仪器面板的布置和仪器内 ...查看


  • 单片机课后习题答案 1
  • 第1章 单片机概述 1.答:微控制器,嵌入式控制器 2.答:CPU.存储器.I/O口.总线 3.答:C 4.答:B 5.答:微处理器.微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机.而微计算机.单片机它们都是一个完 ...查看


  • 高中数学必修2课后习题答案
  • 第一章 空间几何体 1.1 空间几何体的结构 练习(第 7 页) 1.(1)圆锥: (2)长方体: (3)圆柱与圆锥组合而成的组合体: (4)由一个六棱柱挖去一个圆柱体而得到的组合体. 2.(1)五棱柱: (2)圆锥 3.略 习题 1.1 ...查看


  • 在大学里寻找课后答案的必去之处
  • 3500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://www.khdaw.com/bbs)查找. ##################[公共基础课-答案]#################### 新 ...查看


  • 大学课后题答案
  • 不用买参考书了!大学课本答案大全!--爱死你了!( 为什么大四才发现啊) 2008-12-18 16:50 | (分类:) 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程 ...查看


  • [金融风险管理]课后习题答案
  • <金融风险管理>课后习题答案 第一章课后习题答案 一.重要名词 答案略 二.单项选择 1-5 C B D A A 6-10 C A C C C 11-15 D A B D A 16-20 B C D D D 21-25 B B ...查看


热门内容