单片机原理与接口技术习题答案_第1页
单片机原理与接口技术习题答案_第2页
单片机原理与接口技术习题答案_第3页
单片机原理与接口技术习题答案_第4页
单片机原理与接口技术习题答案_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

word文档可自由复制编辑单片机原理与接口技术习题答案习题与思考题11-1

微型计算机通常由哪些部分组成?各有哪些功能?答:微型计算机通常由控制器、运算器、存储器、输入/输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序和数据;输入/输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。1-2

单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点?答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和I/O端口引脚具有复用功能;软件上,采用面向控制的指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性高等特点。1-3

简述计算机的工作过程。答:计算机的工作是由微处理器以一定的时序来不断的取指令、指令译码和执行指令的过程。1-4

单片机的几个重要指标的定义。答:单片机的重要指标包括位数、存储器、I/O口、速度、工作电压、功耗和温度。1-5

单片微型计算机主要应用在哪些方面?答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。1-6

为什么说单片微型计算机有较高的性能价格比和抗干扰能力?答:因为单片微型计算机主要面向特定应用而设计,设计者在硬件和软件上都高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,具备较高的性能、价格比;单片机嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中,另外单片机体积小,可以放入屏蔽设备中,从而使其具有较高的抗干扰能力。1-7

简述单片机嵌入式系统的定义和特点。答:单片机嵌入式系统是嵌入到对象体系中的专用计算机系统;其特点是面向特定应用、与各个行业的具体应用相结合、硬件和软件高效率、软件固化在存储器芯片或单片机本身和不具备自举开发能力。习题与思考题22-1MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时/计数器、多功能I/O口和中断控制等基本功能部件。单片机的核心部分是CPU,CPU是单片机的大脑和心脏。程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。I/O接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外设状态)和发布命令等。中断控制可以解决CPU与外设之间速度匹配的问题,使单片机可以及时处理系统中许多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。2-2MCS-51单片机的核心器件是什么?它由哪些部分组成?各部分的主要功能是什么?答:单片机的核心部分是CPU,可以说CPU是单片机的大脑和心脏。它由运算器、控制器和布尔(位)处理器组成。运算器是用于对数据进行算术运算和逻辑操作的执行部件。控制器是CPU的大脑中枢,它的功能是逐条对指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作,完成指令规定的操作。2-3MCS-51单片机的EA、ALE和PSEN端的功能是什么?答:ALE——ALE为地址锁存允许信号,在访问外部存储器时,ALE用来锁存P0送出的低8位地址信号。PSEN——外部程序存储器的读选通信号。当访问外部ROM时,PSEN产生负脉冲作为外部ROM的选通信号;在访问外部RAM或片内ROM时,不会产生有效的PSEN信号。PSEN可驱动8个LSTTL门输入端。EA——访问外部程序存储器控制信号。对8051和8751,它们的片内有4KB的程序存储器。当EA为高电平时,CPU访问程序存储器有两种情况:一是访问的地址空间在0~4K范围内,CPU访问片内程序存储器;二是访问的地址超出4K时,CPU将自动执行外部程序存储器的程序。对于8031,EA必须接地,只能访问外部ROM。2-4

程序计数器(PC)有多少位?它的主要功能是什么?答:程序计数器有16位,它的功能和一般微型计算机的相同,用来存放下一条要执行的指令的地址。当按照PC所指的地址从存储器中取出一条指令后,PC会自动加l,即指向下一条指令。2-5

简述MCS-51单片机片内RAM区地址空间的分配特点。答:片内数据存储器分为工作寄存器区、位寻址区和数据缓冲器区等3个区域。工作寄存器使用内部RAM中地址为00H~1FH的32个单元,并分成4个工作寄存器组,每个组有8个工作寄存器,名称为R0~R7。对于内部RAM中地址为20H~2FH的16个单元,CPU不仅具有字节寻址功能,而且还具有位寻址功能。这16个单元共128位,每一位都赋予1个位地址,位地址范围是00H~7FH。30H~7FH是数据缓冲区,即用户RAM区,共80个单元。2-6MCS-51单片机如何实现工作寄存器组R0~R7的选择?答:每个工作寄存器组都可被选为CPU的当前工作寄存器,用户可以通过改变程序状态字寄存器(PSW)中的RS1、RS0两位来任选一个寄存器组为当前工作寄存器。RS1RS0寄存器组R0R1R2R3R4R5R6R7000组00H01H02H03H04H05H06H07H011组08H09H0AH0BH0CH0DH0EH0FH102组10H11H12H13H14H15H16H17H113组18H19H1AH1BH1CH1DH1EH1FH2-7

单片机复位后,各特殊功能寄存器中的初始化状态是什么?答:特殊功能寄存器初始状态特殊功能寄存器初始状态ACC00HTMOD00HPC0000HTCON00HPSW00HTL000HSP07HTH000HDPTR0000HTL100HP0~P30FFHTH100HIPxx000000BB00HIE0x000000BSCON00HPCON0xxx0000BSBUF不定

2-8MCS-51单片机的21个特殊功能寄存器中,哪些具有位寻址能力?答:MCS-51单片机中的程序状态字寄存器(PSW),B寄存器,累加器(ACC),端口P0~P3,控制寄存器中用于中断控制的中断优先级控制寄存器(IP)和中断允许控制寄存器(IE),用于设置定时/计数器和串行口工作方式的定时/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)具有位寻址能力。2-9

程序状态字寄存器(PSW)的作用是什么?答:PSW寄存器是8位寄存器,用做程序运行状态的标志,字节地址为D0H。可以进行位寻址。2-10MCS-51单片机的P3口具有哪些功能?答:P3口是双功能口,除了作为准双向通用I/O口使用外,每一根口线还具有第二种功能,P3口的各位如不设定为第二功能则自动处于第一功能。P3的第二功能涉及到串行口、外部中断、定时器,与特殊功能寄存器有关。2-11MCS-51单片机的片外总线是由哪些总线构成的?答:P0口的第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。2-12MCS-51单片机对外有几条专用控制线?答:2-13

单片机时钟电路有何用途?起什么作用?答:单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。MCS-51系列单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。2-14

什么是时钟周期、状态周期、机器周期和指令周期?当单片机时钟频率为12MHz时,一个机器周期是多少?ALE引脚的输出频率是多少?答:时钟周期也称为振荡周期,定义为时钟脉冲频率(fosc)的倒数,它是计算机中最基本的、最小的时间单位。时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,称为状态周期,用S表示。完成一个基本操作所需要的时间称为机器周期。指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,指令不同,所需要的机器周期数也不同。当单片机时钟频率为12MHz时,一个机器周期为1μs。ALE引脚的输出频率为2MHz。2-15

什么时候需要复位操作?对复位信号有何要求?答:复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位。上电复位利用电容器的充电实现。在时钟电路工作后,在RST端连续给出2个机器周期的高电平就可完成复位操作。MCS-51单片机的上电加按键复位电路当复位按键按下后,复位端通过51Ω的小电阻与+5V电源接通,迅速放电,使RST引脚为高电平;当复位按键弹起后,+5V电源通过2kΩ电阻对22μF电容重新充电,RST引脚端出现复位正脉冲。2-16

按例2-3的要求画出对应的硬件电路图。2-17

设计一个按键电路。当按键长按5s以上时,系统复位;当按键短时间按时,系统控制LED灯的开关。答:(1)电路图如下。(2)程序如下。;51程序,当按键时间小于5S时,控制灯的亮灭,按键时间大于5S时,系统复位。ORG0000HAJMPSTARTORG000BHAJMPTIME;定时器T0中断,50ms中断一次,总共100次,共5sORG0100HSTART:CLRP2.2FLAG1EQU22H;按键时间超过5S标志位MOVIP,#02HMOVIE,#82HMOVTMOD,#01HMOVTH0,#3DHMOVTL0,#0B0HSETBEAMAIN:;主程序AAA:JNBP2.0,BBBAJMPEXITBBB:SETBTR0JBP2.0,DDDMOVA,#01HCJNEA,FLAG1,BBBCCC:;长按键CLRTR0;关闭定时器MOVTH0,#3DH;恢复定时器的初值MOVTL0,#0B0HJNBP2.0,$CLRFLAG1CLRAMOV21H,AMOV22H,AAJMP0000H;软件复位AJMPEXITDDD:CPLP2.1;短按键CLRTR0;关闭定时器MOVTH0,#3DH;恢复定时器的初值MOVTL0,#0B0HCLRAMOV21H,AAJMPEXITTIME:PUSHPSW;中断程序PUSHACCMOVTH0,#3DHMOVTL0,#0B0HMOVA,21H;21H中存放次数ADDA,#01HMOV21H,ACLRCCJNEA,#100,TIME1AJMPTIME2TIME1:JCTIME2MOVFLAG1,#01HCLRAMOV21H,ANOPTIME2:POPACCPOPPSWRETIEXIT:AJMPMAINEND习题与思考题33-1

什么是寻址方式?MCS-51指令系统有哪些寻址方式?相应的寻址空间在何处?答:在指令系统中,操作数是一个重要的组成部分,它指定了参与运算的数据或数据所在的地址单元。如何找到参与运算的这个数据或数据所在的地址就称为寻址方式。MCS-51指令系统的寻址方式主要有立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址加变址寻址、相对寻址和位寻址等七种。对程序存储器只能采用立即寻址和基址加变址寻址方式;对特殊功能寄存器只能采用直接寻址方式,不能采用寄存器间接寻址,对8032/8052等单片机内部RAM的高128个字节(80H~FFH),只能采用寄存器间接寻址,不能使用直接寻址方式;对位操作指令只能对位寻址区操作;外部扩展的数据存储器只能用MOVX指令访问,而内部RAM的低128个字节(00H~7FH)既能用直接寻址,也能用间接寻址。3-2

访问内部RAM单元可以采用哪些寻址方式?访问外部RAM单元可以采用哪些寻址方式?访问特殊功能寄存器(SFR)可以采用哪些寻址方式?答:对特殊功能寄存器只能采用直接寻址方式,单片机内部RAM的高128个字节(80H~FFH),只能采用寄存器间接寻址,外部扩展的数据存储器只能用MOVX指令访问,而内部RAM的低128个字节(00H~7FH)既能用直接寻址,也能用间接寻址。3-3

访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。答:访问外部数据存储器可以用以下指令实现:MOVXA,@Ri

;((Ri))→A,寄存器Ri指向的片外RAM地址中的内容送到累加器A中MOVX@Ri,A

;A→((Ri)),累加器中内容送到寄存器Ri指向的片外RAM地址中MOVXA,@DPTR

;((DPTR))→A,数据指针指向的片外RAM地址中的内容送到累加器A中MOVX@DPTR,A

;A→((DPTR)),累加器中内容送到数据指针指向的片外RAM地址中访问程序存储器可以用以下指令实现:MOVCA,@A+DPTR

;((A+DPTR))→A,表格地址单元中的内容送到累加器A中MOVCA,@A+PC

;PC+1→PC,((A+PC))→A,表格地址单元中的内容送到累加器A中

3-4

试用下列3种寻址方式编程,将立即数0FH送入内部RAM的30H单元中。

(1)

立即寻址方式;(2)

寄存器寻址方式;(3)

寄存器间接寻址方式答:(1)立即寻址方式:

MOV30H,#0FH(2)寄存器寻址方式:

MOVR5,#0FHMOV30H,R5(3)寄存器间接寻址方式:MOV@R1,#0FHMOV30H,@R13-5

SJMP指令和AJMP指令都是字节转移指令,它们有什么区别?各自的转移范围是多少?能否用AJMP指令代替程序中的所有SJMP指令?为什么?答:AJMP和SJMP的区别有:(1)

跳转范围不同。AJMPaddr1

;短跳转范围:2KBSJMPrel

;相对跳转范围:-128~+127(2)

指令长度不同。(3)

指令构成不同。AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。不能用AJMP指令代替程序中的SJMP指令,因为如果改变的话,程序跳转到的新PC值指向的地址会不同,导致程序出现错误。3-6

加法和减法指令影响哪些标志位?怎么影响的?答:在带进位的加法运算中,会影响进位位Cy,最终要将A中的值和其后面的值以及进位位Cy中的值相加,最终结果存在A。在带进位减法指令中,要将累加器A的内容与第二操作数及进位标志相减,结果送回到累加器A中。在执行减法过程中,如果位7(D7)有借位,则进位标志Cy置“1”,否则清“0”;如果位3(D3)有借位,则辅助进位标志AC置“1”,否则清“0”;如位6有借位而位7没有借位,或位7有借位而位6没有借位,则溢出标志OV置“1”,否则清“0”。若要进行不带借位的减法操作,则必须先将Cy清“0”。3-7

写出实现下列要求的指令或程序片段。(1)

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

内部RAM的20H单元内容传送到寄存器R1;(3)

内部RAM的20H单元的D7和D3位清零,其它位保持不变;(4)

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

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

清除累加器高4位。答:(1)MOVA,R0MOVR1,A(2)MOVR1,20H(3)MOVA,20H

ANLA,#77H(4)MOVDPTR,#1000HMOVXA,@DPTRMOV60H,A(5)MOVDPTR,#1000HMOVXA,@DPTRMOVR2,A(6)ANLA,#0FH3-8

试编写一段程序,将内部数据存储器30H、3lH单元内容传送到外部数据存储器1000H、1001H单元中。答:

MOVA,30HMOVDPTR,#1000HMOV@DPTR,AMOVA,31HMOVDPTR,#1000HMOV@DPTR,A3-9

试编写一段程序,将外部数据存储器40H单元中的内容传送到0l00H单元中。答:

MOVDPTR,#0040HMOVA,@DPTRMOV0100H,A3-10

试编写—段程序,将R3中的数乘4(用移位指令)。答:

MOVA,R3MOV23H,#02HL0:DJNZ23H,L1L1:RLASJMPL03-11

试编写—段程序,将R2中的各位倒序排列后送入R3中。答:

MOVA,R2MOV23H,#08HL0:DJNZ23H,L1L1:RLASJMPL0MOVR3,A

3-12

试编写—段程序,将P1口的高5位置位,低3位不变。答:

MOVA,P1ORLA,#F8HMOVP1,A习题与思考题44-1MCS-51系列单片机汇编语言进行程序设计的步骤如何?答:单片机汇编语言进行程序设计的步骤:(1)分析题意,明确要求;(2)确定算法;(3)画程序流程图,用图解来描述和说明解题步骤;(4)分配内存工作单元,确定程序与数据区的存放地址;(5)编写源程序;(6)程序优化;(7)上机调试、修改和最后确定源程序。4-2

常用的程序结构有哪几种?特点如何?答:常用的程序结构有顺序、分支、循环、查表及子程序结构;特点是程序的结构清晰、易于读写和验证、可靠性高。4-3

子程序调用时,参数的传递方法有哪几种?答:传递方法有传递数据、传送地址和通过堆栈传递参数。

4-4

编写程序,将片内30H~39H单元中的内容送到以2000H为首的外部存储器。答:

ORG0000HSTART:MOVR0,#30HMOVDPTR,#2000HMOVR1,#10CLRALOOP:MOVA,@R0MOVX@DPTR,ADECR1DJNZR1,LOOPEND

4-5

编写程序,采用算术平均值滤波法求采样平均值,设8次采样值依次放在20H~27H的连续单元中,结果保留在A中。答:FILT:CLRAMOVR2,AMOVR3,AMOVR0,#20HMOVR7,#08H;初始化FILT1:MOVA,@R0ADDA,R3

MOVR3,ACLRAADDCA,R2MOVR2,AINCR0DJNZR7,FILT1;累加采样值到R3,累加进位到R2=00000xxxBFILT2:SWAPARLA;R2/8,节省一个指令周期XCHA,R3SWAPARLA;R3/8,节省一个指令周期ADDA,#80H;四舍五入ANLA,#1FH;屏蔽移位进入的前三位ADDCA,R3;结果相加END;取平均值

4-6

编写程序,将存放在内部RAM起始地址为20H和30H的两个3字节无符号相减,结果存放在内部RAM单元70H、71H、72H中(低位对应低字节)。答:

ORG0000HSTART:MOVR0,#20HMOVR1,#30HMOVR2,#03HCLRCS0:LCALLXUMOV70H,ALCALLXUMOV70H,ALCALLXUMOV70H,AS1:MOVA,@R0SUBBA,@R1INCR0INCR1RETEND

4-7

编写程序,实现两个双字节无符号数的乘法运算,乘数存放在R2和R3中(R2存放高字节,R3存放低字节,以下类同),被乘数存放在R6和R7中,积存放在R4、R5、R6和R7中。答:

ORG0000HDMUL:MOVA,R3MOVB,R7MULABMOVR0,AMOVR1,B;低8位*低8位MOVA,R2MOVB,R7MULABADDA,R1MOVR1,AMOVA,BADDCA,#00HMOVR5,A;高8位*低8位MOVA,R3MOVB,R6MULABADDA,R1MOVR1,AMOVA,R5ADDCA,BMOVR5,AMOVA,#00HADDCA,#00HMOVR4,A;低8位*高8位MOVA,R3MOVB,R6MULABADDA,R5MOVR5,AMOVA,R4ADDCA,BMOVR4,A

;高8位*高8位MOVA,R0MOVR7,AMOVA,R1MOVR6,A;R0、R1给R7、R6END

4-8

假设在R0指向的片内RAM区,存有20个16进制数的ASCII字串。将ASCII码转换为16进制数,然后两两合成一个字节,从低地址单元到高地址单元依次组合。答:

ORG0000HSTART:MOVR7,#20S0:MOVA,R0MOVR1,A;R1为中间量MOVA,@R0CLRCSUBBA,#30HMOV@R1,AJCS01MOVA,@R0SUBBA,#07HMOV@R1,AS01:INCR0MOVA,@R0CLRCSUBBA,#30HSWAPAORLA,@R1MOV@R1,AJCS02MOVA,@R0SUBBA,#07HSWAPAORA,@R1MOV@R1,AS02:INCR0DJNZR7,S0END

4-9

结合例4-24和图4-5编写线性标度变换程序。答:将256近似255,256比255做浮点运算简单很多PUSHACCPUSHPSWMOVA,#AmMOV20H,#A0CLRCSUBBA,20H;将256近似255,则A为小数点后的位MOV21H,#NxMOVB,21HMULAB;B为整数位,A为小数点后的位ADDA,#80H;四舍五入MOVA,BADDCA,#A0MOV38H,APOPPSWPUSHACCRET习题与思考题55-1

写出一个C51程序的结构。答:全局变量说明类型说明

main(){声明部分语句部分}类型说明函数名1(形式参数){声明部分语句部分}类型说明函数名n(形式参数){声明部分语句部分}5-2

哪些变量类型是MCS-51单片机直接支持的?答:MCS-51单片机直接支持的变量类型是:char及其数组和指针、bit、sbit、sfr和sfr16。5-3

如何定义内部RAM的可位寻址区的字符变量?答:charbdata

字符变量名,或bdatachar字符变量名。5-4

试编写一段程序,将内部数据存储器30H、3lH单元内容传送到外部数据存储器1000H、1001H单元中去。答:#include<reg52.h>#include<absacc.h>voidmain(void){unsignedinttemp;

temp=DWORD[0x0030];XWORD[0x1000]=temp;while(1);}

5-5

试编写一段程序,将外部数据存储器40H单元中的内容传送到50H单元。答:方法一:#include<reg52.h>#include<absacc.h>voidmain(void){XBYTE[0x0050]=XBYTE[0x0040];while(1);}

方法二:#include<reg52.h>#include<absacc.h>voidmain(void){unsignedcharxdata*xp;unsignedchardatatemp;xp=0x0040;temp=*xp;xp=0x0050;*xp=temp;while(1);}

5-6

试编写—段程序,将R3中的数乘以4。答:#include<reg52.h>voidmain(void){unsignedintdata*a;#pragmaasm

MOV30H,R3#pragmaendasma=0x30;*a=*a*4;while(1);}

5-7

试编写—段程序,将R2中的各位倒序排列后送入R3中。答:考虑C中没有循环移位,对于这种很低级的运算,采用嵌入汇编的方式完成。#include<reg52.h>voidmain(void){#pragmaasmMOVR7,#08HMOVR3,#00HDEL:CLRCYMOVA,R2RLCAMOVR2,AMOVA,R3RRCAMOVR3,ADJNZR7,DEL#pragmaendasmwhile(1);}

5-8

试编写—段程序,将P1口的高5位置位,低3位不变。答:#include<reg52.h>voidmain(void){P1|=0xf8;while(1);}

5-9

设8次采样值依次存放在20H~27H的连续单元中,采用算术平均值滤波法求采样平均值,结果保留在30H单元中。试编写程序。答:#pragmasmall#include<reg52.h>voidmain(void){unsignedchar*dp=0x20,i;floattemp=0;for(i=0;i<8;i++){temp+=*dp;dp++;}temp/=8;dp=0x30;*dp=temp;while(1);}

5-10

从20H单元开始有一无符号数据块,其长度在20H单元中。编写程序找出数据块中最小值,并存入21H单元。答:#pragmasmall#include<reg52.h>voidmain(void){unsignedchar*dp,num,min,i;dp=0x20;num=*dp;dp++;for(i=1;i<num;i++){min=*dp;dp++;if(min>*dp)min=*dp;

}dp=0x21;*dp=min;while(1);}

5-11

混合编程应注意的问题是什么?答:(1)被调函数要在主函数中说明,在汇编程序中,要使用伪指令使CODE选项有效并声明为可再定位段类型,并且根据不同情况对函数名作转换;(2)对为其他模块使用的符号进行PUBILC声明,对外来符号进行EXTRN声明;(3)参数的传递。在混合语言编程中,关键是入口参数和出口参数的传递,C51编译器可使用寄存器传递参数,也可以使用固定存储器或使用堆栈,由于MCS-51的堆栈深度有限,因此多用寄存器或存储器传递。用寄存器传递最多只能传递三个参数,需选择固定的寄存器。

5-12

如何编写高效的单片机C51程序?答:(1)选择小存储模式;(2)尽可能使用最小数据类型;(3)尽量使用“unsigned”数据类型;(4)尽量使用局部变量;(5)选择高效率的编译器。习题与思考题66-1

简述中断、中断源、中断嵌套及中断优先级的含义。答:所谓中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因而必须终止原程序的执行,转去完成相应的处理程序,待处理结束之后再返回继续执行被终止原程序的过程。中断源指向CPU提出中断申请的设备,包括中断请求信号的产生及该信号怎样被CPU有效地识别,要求中断请求信号产生一次,只能被CPU接收处理一次,即不能一次中断申请被CPU多次响应。中断嵌套是CPU正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,去执行高优先级中断服务程序,待高优先级中断处理完毕后,再返回低优先级中断的服务程序。中断优先级指在实际应用系统中往往有多个中断源,且中断申请是随机的,有时还可能会有多个中断源同时提出中断申请,但CPU一次只能响应一个中断源发出的中断请求,CPU响应哪个中断请求,就需要用软件或硬件安排一个优先顺序,即中断优先级排队。

6-2MCS-51单片机提供了几个中断源?有几级中断优先级别?各中断标志是如何产生的又如何清除这些中断标志?各中断源所对应的中断矢量地址是多少?答:MCS-51单片机提供了5个中断源,有2级中断优先级别。中断标志由特殊功能寄存器TCON和SCON的相应位锁存。(见书中图6-4、6-6)中断标志的撤消分为:1)定时/计数器中断请求的撤消中断请求被响应后,硬件会自动清TF0或TF1。2)外部中断请求的撤消(1)跳沿方式外部中断请求的撤消是自动撤消的。(2)电平方式外部中断请求的撤消,除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平。(见书中图例6-1)3)串行口中断请求的撤消响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能使用软件的方法。CLRTI;清TI标志位CLRRI;清RI标志位各中断源对应的中断矢量地址分别为:中断源中断矢量外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H定时器中断T2(仅52系列有)002BH

6-3

外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?答:采用中断电平触发方式时,中断请求标志IT0=0,CPU在每个机器周期的S5P2期间采样,一旦在P3.2引脚上检测到低电平,则有中断申请,使IE0置位(置1),向CPU申请中断。在电平触发方式中,在中断响应后中断标志位IE0的清0由硬件自动完成,但由于CPU对P3.2引脚没有控制作用,使中断请求信号的低电平可能继续存在,在以后的机器周期采样时又会把已清0的IE0标志位重新置1,所以,在中断响应后必须采用其它方法撤消该引脚上的低电平,来撤除外部中断请求信号,否则有可能再次中断造成出错。采用边沿触发方式时,IT0=1,CPU在每个机器的S5P2期间采样,当检测到前一周期为高电平,后一周期为低电平时,使标志IE0置1,向CPU申请中断,此标志位一直保持到CPU响应中断后,才由硬件自动清除。在边沿触发方式中,为保证CPU在两个机器周期内检测到由高到低的负跳变,高电平与低电平的持续时间不得少于一个机器周期的时间。6-4

试分析以下几种中断优先级的排列顺序(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。

(1)

定时器T0中断,定时T1中断,外中断1NT0,外中断INT1,串行口中断;(2)

串行口中断,外中断1NT0,定时器T0中断,外中断INT1,定时器T1中断;(3)

外中断INT0、定时器T1中断,外中断INT1,定时器T0中断,串行口中断。答:(1)可以,将定时器T0中断,定时T1设置为高优先级中断,将外中断1NT0,外中断INT1,串行口中断(2)可以,将串行口中断设置为高优先级中断,将外中断1NT0,定时器T0中断,外中断INT1,定时器T1中断设置为低优先级中断;(3)不行,因为MCS-51单片机有2级中断优先级别,同级中断还存在按次序决定的第二优先级结构,由高到低依次为外中断1NT0、定时器T0中断、外中断INT1、定时器T1中断、串行口中断。

6-5MCS-51中断响应时间是否固定?为什么?答:MCS-51中断响应时间不固定。对一个单一中断系统,MCS-51单片机对外部中断请求的响应时间在3—8个机器周期。外部中断的最短的响应时间为3个机器周期,其中中断请求标志位查询占1个机器周期,而这个机器周期恰好又是处于指令的最后一个机器周期,该指令结束后中断即被响应,CPU接着执行子程序调用指令LCALL转到相应的中断服务程序入口,需2个机器周期,所以,外部中断响应最短时间为3个机器周期。外部中断响应的最长时间为8个机器周期:发生在CPU进行中断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,最长需2个机器周期。接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。加上硬件子程序调用指令LCALL的执行,需要2个机器周期。所以,外部中断响应最长时间为8个机器周期。对于多级中断系统,响应时间无法计算。6-6MCS-51

中若要扩充6个中断源,可采用哪些方法?如何确定它们的优先级?答:可采用硬件申请与软件查询的方法,把多个中断源通过硬件“线或”或者经或非门,引入外部中断源的输入端INT0、INT1,同时又连到某I/O口,这样,每个中断源都可能引起中断,但在中断服务程序中通过软件查询,就能确定哪一个是正在申请的中断源,其查询的次序则由中断优先级决定,这样就可实现多个外部中断源的扩展。6-7

试叙述中断的作用和中断的全过程。答:中断可用于单片机测控系统、CPU与外部设备交换信息中。中断的全过程包括中断请求、中断允许、中断响应过程和中断请求撤消。6-8

当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?答:一个正在执行的低优先级中断程序能被高优先级的中断源所中断,但不能被另一个低优先级的中断源所中断。若CPU正在执行高优先级的中断,则不能被任何中断源所中断6-9

在下列各种中断方式中,需要外加电路来实现中断撤除的是:

(1)

定时中断

(2)

脉冲方式的外部中断(3)

外部串行中断

(4)

电平方式的外部中断答:(4)

电平方式的外部中断6-10

某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。答:对系统的三个外中断源,可利用MCS-51的2个外中断源INT0和INTI,再将定时/计数器T1

作为扩展的外部中断使用,INT0接外中断源3,INTI接外中断源2,定时/计数器T1接外中断源1,3个中断源设置为同级中断,外中断源1、2、3依次接到P1.0、P1.1、P1.2上。汇编语言程序代码如下:ORG0000H;复位入口地址AJMPMAIN;转主程序ORG0003HAJMPINT1ORG0100HMAIN:MOVTMOD,#60H;T1方式2MOVTH1,#0FFHMOVTL1,#0FFH;置初值SETBTR1;启动计数器T1SETBEA;CPU中断开放SETBET1;允许T1中断SETBIT0;允许外中断0产生中断SETBIT1SETBPX0;外中断0为高级中断SETBPX1SETBPT1SETBIT0;外中断0为跳沿触发方式SETBIT1LOOP1:SJMPLOOP1;等待中断;中断服务程序ORG1000HINT1:PUSHPSW;保护现场PUSHACCJBP1.0,IR1;P1.0高,外中断1有请求JBP1.1,IR2;P1.1高,外中断2有请求JBP1.2,IR3;P1.2高,外中断3有请求INTIR:POPACC;恢复现场POPPSWRETI;中断返回ORG2000HIR1:……;外中断1的中断处理程序AJMPINTIRORG2100HIR2:……;外中断2的中断处理程序AJMPINTIRORG2200HIR3:……;外中断3的中断处理程序AJMPINTIREND习题与思考题77-1

定时/计数器有哪些专用寄存器,它们有几种工作模式?如何设置?答:有定时控制寄存器(TCON)和工作方式寄存器(TMOD),具有四种工作方式:方式0、方式1、方式2和方式3,四种方式由工作方式寄存器(TMOD)的M1和M0两位决定。7-2

如果采用晶振的频率为3MHz,定时/计数器工作方式0、1、2下,其最大的定时时间为多少?答:内部定时脉冲周期=机器周期=12/3Mhz=4us工作方式0:Tmax=8192*4us=32.768ms工作方式1:Tmax=65536*4us=262.144ms工作方式2:Tmax=256*4us=1.024ms7-3

定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关答:其计数脉冲由单片机振荡脉冲12分频输出的机器周期脉冲提供,定时时间与工作方式、晶振频率和预置数等因素有关。7-4

定时/计数器用作计数器时,对外界计数频率有何限制?答:外部输入的计数脉冲的最高频率为振荡器频率的1/24。7-5

采用定时/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器频率为6MHz,请使用方式1实现,要求编写出程序。答:

ORG0000HSTART:CLRTR0MOVTMOD,#05HMOVTH0,#0FFHMOVTL0,#9CH;计数器初始化S0:JBCTF0,NEXTSJMPS0NEXT:CLRTR0MOVTMOD,#01HMOVTH0,#0F8HMOVTL0,#30H;定时器初始化SETBTR0S1:JBCTF0,STARTSJMPS1END7-6

定时/计数器的工作方式2有什么特点?适用于哪些应用场合?答:工作方式2具有初值自动重新加载和循环工作的特点,适用于产生固定脉宽的脉冲信号,和作为串行口波特率发生器使用。7-7

编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400μs,占空比为10:1的矩形脉冲。答:本题采用晶体振荡器频率为12MHz,使用定时器配合计数器,设计成一个40μs定时将P1.0置0和一个400μs定时将P1.0置1。ORG0000H;中断入口地址AJMPSTARTORG000BH;定时器0的中断向量地址AJMPTIME0ORG0030HSTART:MOVSP,#5FHMOV30H,#00H;软件计数器清零MOVTMOD,#02H;T0工作在方式1MOVTH0,#216MOVTL0,#216SETBEASETBET0SETBTR0;任意程序段TIME0:PUSHACC;中断处理子程序PUSHPSWCLRP1.0INC30HMOVA,30HCJNEA,#10,T0_4SETBP1.0MOV30H,#00HT0_4:POPPSWPOPACCRETIEND7-8

一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时?答:方法一:让一个定时器先定时,溢出后,再启动另一个定时器定时;方法二:在第一个中断处理子程序中加入计数器,计数器满后,就去启动另一个定时器定时,把要处理的事件放第二个中断处理子程序中。7-9

利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒(8个灯依次亮一遍为一个周期)。答:本题采用晶体振荡器频率为12MHz,每个灯的闪烁周期是:50ms,采用工作方式1。ORG0000HAJMPSTARTORG000BHAJMPTIME0ORG0030HSTART:MOVSP,#5FHMOVR7,#0FEHMOVTMOD,#01H;T0在工作方式1MOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0S0:AJMPS0;此处放任意程序段TIME0:PUSHACCPUSHPSWMOVP1,R7MOVA,R7RLAMOVR7,AMOVTH0,#3CHMOVTL0,#0B0HPOPPSWPOPACCRETIEND7-10

定时/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度是多少?答:采用定时器工作方式1可得到最大量程,最大脉冲宽度:65536*12/6M=131.072ms7-11

编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。答:将P1.1的输入脉冲接入T0,即使用T0计数器完成对P1.1口的脉冲计数。R2中记T0计满数的次数。程序代码如下:ORG0000HLJMPMAINORG000BHLJMPIT0MAIN:JNBP1.0,MAINMOVTMOD,#05H

;定时/计数器T0为计数方式1SETBTR0

;启动T0,开始计数SETBET0

;允许T0中断SETBEA

;CPU开中断WAIT:JBP1.2,WAITCLREACLRTR0MOVR1,TH0MOVR0,TL0AJMP$IT0:INCR2RETI7-12

简述特殊功能寄存器SCON,TCON,TMOD功能。答:SCON是串行口控制寄存器,主要用于控制、监视串行口的工作状态;TCON是定时控制寄存器,主要用于控制定时/计数器的启动和停止、计数溢出标志和管理外部中断;TMOD是工作方式控制寄存器,主要用于设定定时/计数器的的工作方式和选定定时还是计数以及门控INT0非信号。7-13

串行数据传送的主要优点和用途是什么?答:相对于并行通信,串行数据传送节省通信线路,传输距离远,工程实现上造价低;其用途是双机通信、多机通信和计算机互联网等。7-14

简述串行口接收和发送数据的过程。答:MCS-51单片机内部有一个全双工的异步串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据,也可以发送数据,串行口发送的过程是:先从累加器A中读入8位数据到SBUF,随后在串行口有硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的控制下,由TXD端串行输出,一个字符帧发送完后,使TXD输出线维持在1状态下,并将SCON寄存器的TI置1,通知CPU可以发送下一个字符帧。串行口接收的过程是:SCON的REN位应处于允许接收状态(REN=1),在此前提下,串行口采样RXD端,当采样到从1向0的状态跳变时,就认定是接收到起始位,随后在移位脉冲的控制下,把通过位采样脉冲接收到的数据位移入接收寄存器中,直到停止位到来之后把停止位送入RB8中,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。7-15

帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式几?。答:是异步串行通信方式1。7-16

简述串行口通信的第9数据位的功能。答:在工作方式2和3下,才有第9数据位,既可作为奇偶校验位使用,也可作为控制位使用。7-17

通过串行口发送或接收数据时,在程序中应使用下列哪类指令?(1)MOVC指令

(2)MOVX指令

(3)MOV指令

(4)XCHD指令答:MOV指令。7-18

为什么定时/计数器T1用做串行口波特率发生器时,应采用方式2?若已知时钟频率、通信波特率,如何计算其初值?答:因为方式2是有自动重装载计数值的功能,从而可以产生精确的波特率。串行工作方式0和方式2波特率是固定的,所以不用设初值;串行工作方式1和方式3时:波特率:BR=(2SMOD×Td)/32溢出一次的时间:1/Td

=(256-TH1)*12/fosc溢出率:Td

=

fosc/[12×(256-TH1)]初值:TH1=256-

fosc/(12*

Td)

7-19

若晶体振荡器为11.059MHz,串行口工作于方式1,波特率为4800b/s,写出用T1作为波特率发生器的方式控制字和计数初值。答:MOVTMOD,#20HMOVTH1,#0FAHMOVTL1,#0FAHSETBTR1MOVSCON,#50H

7-20

利用单片机串行口扩展24个发光二极管和8个按键,要求画出电路图并编写程序使24个发光二极管按照不同的顺序发光(发光的时间间隔为1s)。答:

ORG1000HSTART:MOVSCON,#00H;串行口工作方式0MOVR0,#00HMOVR7,#03HMOVR6,#24HCLRP1.0;关闭并行输出LOOP:MOVA,@R0MOVDPTR,#TAB;查表取数,送出MOVCA,@A+DPTRMOVSBUF,AOUT0:JNBTI,OUT0INCR0CLRTIDJNZR7,LOOPSETBP1.0;开启并行输出ACALLDELAYDJNZR6,STARTAJMPLOOPDELAY:MOVR2,#250D1:MOVR3,#100D2:MOVR4,#20D3:DJNZR4,D3DJNZR3,D2DJNZR2,D1RETTAB:DB00000000B,00000000B,00000001B,00000000BDB00000000B,00000010B,00000000B,00000000BDB00000100B,00000000B,00000000B,00001000BDB00000000B,00000000B,00010000B,00000000BDB00000000B,00100000B,00000000B,00000000BDB01000000B,00000000B,00000000B,10000000BDB00000000B,00000001B,00000000B,00000000BDB00000010B,00000000B,00000000B,00000100BDB00000000B,00000000B,00001000B,00000000BDB00000000B,00010000B,00000000B,00000000B

DB00100000B,00000000B,00000000B,01000000BDB00000000B,00000000B,10000000B,00000000BDB00000001B,00000000B,00000000B,00000010BDB00000000B,00000000B,00000100B,00000000BDB00000000B,00001000B,00000000B,00000000BDB00010000B,00000000B,00000000B,00100000BDB00000000B,00000000B,01000000B,00000000BDB00000000B,10000000B,00000000B,00000000BEND

7-21

简述利用串行口进行多机通信的原理。答:单片机构成的多机系统常使串行口工作在方式2和方式3。(1)主机置SM2位为0,所有从机的SM2位置1,处于接收地址帧状态;(2)主机发送一地址帧,其中,8位是地址,第9位为1表示该帧为地址帧;(3)所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并将本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬;(4)从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志;(5)主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据;(6)主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据;(7)从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。习题与思考题88-1

画图说明单片机系统总线扩展方法。答:单片机系统扩展总线原理如下图所示,扩展后由P0口经锁存器形成低8位地址,P2口形成高8位地址,共同形成16位地址总线;P0口形成8位数据线,/WR、/RD及/PSEN形成控制总线。

8-2

单片机应用系统中为什么要进行系统扩展?答:8031、8032等单片机不提供用户程序存储器,必须进行程序存储器的扩展,以存放控制程序、数据表格等;8751等单片机虽然向用户提供EPROM程序存储器,但程序存储器空间容量不大,程序存储空间不足时,还必须扩展外部程序存储器。MCS-51系列单片机内部通常有128B至256B的片内数据存储器,用于一般的控制及运算是足够的,但若用于数据存储,其容量是不足的,在这种情况下,必须扩展数据存储器。MCS-51系列单片机对外提供32条I/O口线,但其P0口作为地址/数据复用口,P2口用于提供高8位地址,而其P3口具有第二功能,若扩展了程序存储器或数据存储器,单片机的I/O口往往也不够用,有时必须进行I/O口的扩展。应用系统中有时还涉及到数据的输入、输出、人机交互信息等接口问题,必须进行有关接口电路扩展。

8-3

说明程序存储器扩展的一般原理。答:程序程序存储器扩展原理如下图所示,从图中可以看出,程序存储器扩展实际上是将程序存储器挂在单片机扩展的系统总线上,需要注意的是,单片机的/PSEN引脚连接至程序存储器的/OE端,保证/PSEN有效时能读出程序存储器中数据(含取指令),而程序存储器的/CS端直接接地,即始终有效,保证始终可以取指令。

8-4

根据图8.15,说明数据存储器扩展的一般原理。答:数据存储器扩展原理如下图所示,从图中可以看出,数据存储器扩展实际上是将数据存储器挂在单片机扩展的系统总线上,单片机的/WR、/RD引脚连接至数据存储器的/WR及/RD端,数据存储器的片选信号由不用的高8位地址信号(经译码)形成。需要注意的是,设备占用外部数据存储器地址空间,因而要合理分配物理存储器与外部设备地址。

8-5EPROM器件与EEPROM器件的主要区别是什么?说明它们的主要应用场合。答:主要区别:(1)EPROM编程时需外加较高编程电压,EEPROM则不必外加该电压;(2)EPROM不能在线写入,而EEPROM可以在线写入。主要应用场合:(1)在不需要写入的场合,EPROM、EEPROM可以相互代替;(2)需要在线写入时使用EEPROM,不需要在线写入时尽可能使用EPROM;(3)在线写入时注意EEPROM写入速度及寿命限制。

8-6

说明单片机应用系统中LED显示器的两种显示方式?答:常用LED显示方式有两种,即动态显示方式和静态显示方式。动态显示方式是指将待显示数据分时送到各显示位并保持一定时间,任何时刻只能有一位显示器通电,其它显示位靠余辉维持发光,因而动态显示方式需不断进行刷新。静态显示方式是指将待显示数据分别送到显示器的各位,各显示位同时通电,因单片机的数据端口不能一直被占用,因而要求显示器与单片机数据端口之间有具有数据锁存功能的单元电路,即每一位LED输入端加一个锁存器(或使用有数据锁存功能的IO端口),因而硬件电路比动态显示方式复杂,但不需要刷新,可以节省CPU时间,显示数据可以一直维持到下一次更新。

8-7

说明LCD显示器件的工作原理?答:LCD是一种被动式的显示器,由于功耗低、抗干扰能力强,在低功耗单片机系统中得到广泛应用。LCD本身不发光,通过调节光的亮度进行显示。LCD工作过程如下:在玻璃电极上加上电压之后,在电场的作用下,液晶的扭曲结构消失,其旋光作用也消失,偏振光便可以直接通过。去掉电场之后,液晶分子又恢复其扭曲结构,把这样的液晶置于两个偏振片之间,改变偏振片的相对位置(正交或平行),就可以得到白底黑字或黑底白字的显示形式。

8-8

说明行列式键盘扫描原理?答:行列键盘是设置两组互不连接的行线和列线,在行线与列线的交叉处设置一个按键开关,无按键时,行线与列线不连接,有按键时,行线与列线接通。3*3行列式键盘结构如下图所示。图中列线通过电阻接+5V电源,当键盘上没有键闭合时,所有的行线和列线断开,列线Y0--Y2都呈高电平。当键盘上某一健闭合时,则该键所对应的列线与行线短路。以4号键为例,当4号按键闭合时,行线X1和列线Y1短路,此时Y1的电平由行线X1的电平决定。如果把列线接到微机的输入口,行线接到微机的输出口,则在程序的控制下,使行线X0为低电平,X1、X2都为高电平,则为低电平的列线与X0的交叉处的健处于闭合状态;否则X0这一行上没有键处于闭合状态,依此类推,最后使行线X2为低电平,其余的行线为高电平,检查X2这一行上是否有健闭合。这种逐行逐列地检查键盘状态的过程称为对键盘的一次扫描。CPU对键盘的扫描可以采用程序控制的随机方式,CPU空闲时扫描键盘,也可以采取定时控制方式,每隔一定的时间,CPU对键盘进行一次扫描。还可以采用中断方式,每当键盘上有健闭合时,向CPU请求中断,CPU响应键盘输入中断,对键盘扫描,以识别哪一个键处于闭合状态,并对键输入信息作出相应的处理。CPU对键盘上闭合健健号的确定,可以根据行线和列线的状态计算求得,也可查表求得。

8-9

以8031单片机为核心的单片机应用系统中要扩展32KB数据存储器(由SRAM构成),并要求具有24条独立IO口线。(1)选择存储器件及并行IO接口器件;(2)画出原理电路图,说明单片机IO口资源使用情况;(3)列出各器件地址;(4)编程,将扩展RAM中1000H-10FFH单元内容移至1100H开始的256个单元中。答:(1)选择6264作为外扩数据存储器,32/8=4(片),选择8255A扩展并行接口,24/24=1(片);74LS138作为译码器。(2)单片机的P0、P2口用于形成地址/数据总线,对于存储器,每芯片8KB存储空间使用13条地址线,P2.7-P2.5经3-8译码器译码产生8255A及各存储器芯片的片选信号。原理如下图所示。(3)器件地址1#6264:0000H-1FFFH;2#6264:2000H-3FFFH;3#6264:4000H-5FFFH;4#6264:6000H-7FFFH;8255A:8000H-8003H。(4)程序清单如下:EX8_9:MOVDPTR,#1000H;DPTR指向源首地址

MOVR2,#0;数据块长度LOOP:MOVXA,@DPTR;取源数据INCDPH;DPTR指向目的地址MOVX@DPTR,A;数据传至目的地址DECDPH;恢复DPTRINCDPTR;DPTR指向下一数据DJNZR2,LOOP;长度控制RET

8-10

以8031为核心的单片机应用系统中扩展程序存储器至16KB。(1)选择存储器件;(2)画出原理电路;(3)说明各器件占用存储空间。答:(1)选用EPROM存储器作为程序存储器,可选用1片27128或2片2764,本题选两片6264作为程序存储器。(2)原理电路如下图所示。(3)由于8031单片机内部没有程序程序器,外扩程序存储器地址必须从0000H开始,并且单片机的/EA引脚应接地。从图中可以看出,1#2764的地址范围为0000-1FFFH,2#2764的地址范围为2000H-3FFFH

8-11

设计单片机应用系统的显示部分,将片内RAM的30-35H单元(30H为最高位,35H为最低位)的6位非压缩BCD码显示在6位动态LED显示器上。(1)选择元器件;(2)画出原理电路图;(3)编程。答:(1)结合原理图对所选元件进行说明:选择8031单片机为控制核心,因而必须外扩程序存储器,图中未画出。图中扩展一片8255A作为显示器及键盘接口,键盘部分未画出。图中LED应为共阴极数码管,由于采用动态显示方式,因而需对LED进行刷新处理。(2)原理图如下图所示。(3)从图中可以看出,8255A的A口、B口、C口及控制口的地址分别为8000H-8003H。程序清单如下:EX9_11:MOVDPTR,#8003H;DPTR指向8255A控制口MOVA,#80H;8255A工作在基本输入输出方式,A口B口C口输出MOVX@DPTR,A;初始化8255AMOVR0,#30H;R0指向显示缓冲区首地址MOVR2,#6;显示位数MOVR3,#80H;显示模型LOOP:MOVDPTR,#SEGTAB;DPTR指向七段码表MOVA,@R0;取待显示数据INCR0;R0指向下一个待显示数据ANLA,#0FH;保留低4位MOVCA,@A+DPTR;取得待显示数据的七段码MOVDPTR,#8001H;DPTR指向8255A的端口BMOVX@DPTR,A;送出七段码DECDPTR;DPTR指向8255A的A端口MOVA,R3RLA;修改显示模型MOVR3,AMOVX@DPTR,A;选中待显示位LCALLDL1;延时,使选中LED达一定亮度DJNZR2,LOOPRETDL1:MOVR7,#2DL2:MOVR6,#0FFHDL3:DJNZR6,DL3DJNZR7,DL2RETSEGTAB:DB3FH,06H,5BH,4FH,66H,6DH;七段码表DB7DH,07H,7FH,6FH习题与思考题99-1A/D及D/A转换的含义是什么?答:A/D转换是指将模拟信号转换为数字信号,主要用于微机控制系统的模拟信号数据采集。D/A转换是指将数字信号转换为模拟信号,主要用于恢复模拟信号或进行模拟控制。9-2DAC0832器件有哪些主要技术指标?其含义是什么?答:DAC0832是将数字信号转换为模拟信号的器件。它的主要技术指标及含义如下:分辨率:8位,可以将8位数字量转换为模拟量;建立时间:1μS,即从数字量写入8位DAC寄存器到产生与输入数字量对应的模拟量输出的时间;输入信号:与TTL电平兼容的二进制信号;输出信号:与输入二进制信号对应的电流信号;电源:单一+5V电源;9-3ADC0809器件有哪些主要技术指标?

温馨提示

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

评论

0/150

提交评论