单片机课后习题答案2.pdf
1.1单项选择题(1)A(2)C(3)A(4)A(5)A(6)A(7)C(8)C(9)D(10)C1.2 填空题(1)硬件系统、软件系统(2)时钟、复位(3)XTALK XTAL2、RST、(4)片内数据存储器、片内程序存储器、片外数据存储器、片外程序存储器(5)时钟电路(6)程序存储器(7)工作寄存器组、位寻址区、用户RAM区(8)lus、2us(9)上电复位电路、按键复位电路(10)2、高1.3答:单片微型计算机是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(CentralProcessing Unit)、随机存取存储器 RAM(Random Access Memory)、只读存储器 ROM(Read-only Memory)基本输入/输出(Input/Output,简称I/O)接口电路、定时器/计数器等都制作在一块集成芯片匕构成一个完整的微型计算机,可以实现微型计算机的基本功能。单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现种或多种功能的实用系统。单片机应用系统是山硬件和软件组成的,硬件是应用系统的基础,软件则是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。1.4答:P3 口各引脚与第二功能表引脚第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2外部中断0 申请P3.3外部中断1 申请P3.4T0定时/计数器0 的外部输入P3.5T1定时/计数器1的外部输入P3.6外部RAM写选通P3.7外部RAM读选通1.5答:片内RAM低128单元的配置如下:地址数据缓冲区功能30H 7FH位寻址区(00H7FH)20H 2FH第3组工作寄存器(R7-R0)18H-1FH第2组工作寄存器(R7-R0)10H 17H第1组工作寄存器(R7-R0)08H 0FH第0组工作寄存器(R7-R0)OOH Y)7H寄存器常用于存放操作数及中间结果等;内部RAM的20H-2F H单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作;在内部RAM低128单元中,通用寄存器占去了 32个单元,位寻址区占去了 16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H 7FH。片内RAM高128单元安排有21个特殊功能寄存器,其他空闲单元用户不能使用。1.6答:有2 1个可寻址的特殊功能寄存器,它们不连续地分布在片内RAM的 高128单元中,尽管其中还有许多空闲地址,但用户不能使用。另外还有一个不可寻址的特殊功能寄存器,即程序计数器P C,它不占据RAM单元,在物理上是独立的。在可寻址的2 1个特殊功能寄存器中,有11个寄存器不仅可以字节寻址,也可以进行位寻址。1.7答:程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则由软件方法设定。P S W的位状态可以用专门指令进行测试,也可以用指令读出。PSW的各位定义下表所示。P SW位定义位地址D7HD6HD5HD4HD3HD2HD1HDOH位名称CYACFORSIRSOOVFlP CY(PSW.7):进位标志位。C Y 是 PW S中最常用的标志位,其功能有两个:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位,则 C Y 由硬件置“1”,否则被清“0”;二是在位操作中,作累加位使用。位传送、位与位或等位操作,操作位之一固定是进位标志位。AC(PSW.6):辅助进位标志位。在进行加或减运算中,若低4 位向高4 位进位或借位,A C 由硬件置“1”,否则被清“0”。在 BCD码调整中也要用到AC位状态。F0(PSW.5):用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用来控制程序的转向。RS1和 RSO(PSW.4,PSW,3):工作寄存器组选择位。它们被用于选择CPU当前使用的通用寄存器组。通用寄存器共有4 组,其对应关系如下表所示。工作寄存器组选择RSI RSO寄存器组片内RAM地址0 0第 0 组00H-07H0 1第 1组08H-0FH1 0第 2 组10H-17H1 1第 3 组18H-1FH这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。但当单片机上电或复位后,RSI RSO=OOOV(PSW.2):溢出标志位。在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128+127),即产生了溢出,因此运算结果是错误的;OV=0表示运算正确,即无溢出产生。在乘法运算中,OV=1表示乘积超过2 5 5,即乘积分别在B 与 A 中;否则,O V=0,表示乘积只在A 中。在除法运算中,OV=1表示除数为0,除法不能进行;否则,O V=0,除数不为0,除法可正常进行。Fl(PSW.1):保留未使用。P(PSW.O):奇偶标志位。P 标志位表明累加器A 中内容的奇偶性,如果A 中有奇数个“1”,则 P 置“1”,否则置“0”。凡是改变累加器A 中内容的指令均会影响P 标志位。此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。1.8答:0003H 002AH这 40个单元被均匀地分为5 段,作为5 个中断源的中断地址区。其中:0003H-000AH外部中断0 中断地址区OOOBH 0012H定时器/计数器0 中断地址区0013H-001AH外部中断1 中断地址区001BH 0022H定时器/计数器1 中断地址区0023H-002AH串行中断地址区中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。因此在中断地址区中理应存放中断服务程序。但通常情况下,8 个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。1.9答:当需要扩展存储器时,低 8 位地址A7 A 0和 8 位数据D7 D 0由 P0 口分时传送,高 8 位地址A 15-A 8由P2 口传送。因此,只有在没有扩展片外存储器的系统中,P0 口和P2 口的每一位才可作为双向I/O端口使用。1.10答:单片机晶振电路一般地,电容C1和 C 2取 30pF左右,晶体的振荡频率范围是1.2MHz 12 MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就越快。MCS-51在通常应用情况下,使用振荡频率为的6MHz或 12MHz的晶振,如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.059MHz的晶振。1.11答:规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。当振荡脉冲频率为12 MHz时,一个机器周期为1s;当振荡脉冲频率为6 MHz时,一个机器周期为2 So1.12答:(a)上电复位电路(b)按键复位电路单片机常见的复位电路图(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,R S T 端的电位与V C C相同,随着充电电流的减少,R S T 的电位逐渐下降。只要保证R S T 为高电平的时间大于两个机器周期,便能正常复位。图(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按图(b)中的RE SE T键,此时电源VCC经电阻RI、R 2 分压,在 R S T 端产生一个复位高电平。习题2 答 案2.1 单项选择题(DC(2)A (3)B (4)A (5)D2.2答:单片机开发过程所用的设备与软件称为单片机开发系统或开发工具。单片机开发系统包括计算机、单片机在线仿真器、开发工具软件、编程器等。连接方法如下图所示。单片机开发系统连接方法示意图2.3答:单片机应用系统的开发过程如下:设计电路图-制作电路板-程序设计一硬软件联调一程序下载产品测试2.4答:1 .在线仿真功能在线仿真器(In C i r c u i t E m u l a t o r,简称IC E)是由 系列硬件构成的设备,它能仿真用户系统中的单片机,并能模拟用户系统的R O M、R AM和 I/O 口。因此,在线仿真状态下,用户系统的运行环境和脱机运行的环境完全“逼真2 .调试功能1)运行控制功能开发系统应能使用户有效地控制目标程序的运行,以便检查程序运行的结果,对存在的硬件故障和软件错误进行定位。2)单片机状态查看修改功能当 C P U 停止执行程序运行后,开发系统允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。任 务 2中图2.1 3给出了在M c d w i n 调试环境下查看单片机内部资源的菜单。3.程序编译功能1)程序设计语言单片机程序设计语言包括机器语言、汇编语言和高级语言。机器语言是单片机唯一能够识别的语言。汇编语言具有使用灵活、实时性好的特点。目前,在实际项目开发中较少使用汇编语言。高级语言通用性好,且具有较好的可读性和可移植性,是目前单片机编程语言的主流。2)程序编译单片机开发系统能够提供源程序的编辑、编译和卜 载功能以及工程管理功能。4 .程序固化功能编程器是完成这种任务的专用设备,它也是单片机开发系统的重要组成部分。习题3 答案3.1单项选择题(1)A(2)A(3)C(4)C(5)A(6)B(7)D(8)D(9)A(10)A(11)B(12)C(13)D(14)D(15)C3.2 填空题(1)P3 口(2)字节,位(3)主函数main。(4)sbit FLAG=P3A1;(5)sfr(6)顺序结构、选择结构和循环结构(7)表达式加上分号“;”(8)if,switch(9)do-while,while(1 0)无限次(11)10000(12)unsigned char(1 3)变量在MCS-51硬件系统中所使用的存储区域(14),0,(1 5)程序存储器R O M中3.3 上机操作题(1)/xiti3_3_l.c第三章习题3.3上机操作题(1)#include void delay(unsigned char i);延时函数声明void main()主函数(while(l)Pl=0 x55;/按状态1 的方式点亮8 个 LEDdelay(200);延时Pl=0 xaa;按状态2 的方式点亮8 个 LEDdelay(200);延时fvoid delay(unsigned char i)延时函数参见任务1 程序exl.c(2)/xiti3_3_2.c第三章习题3.3上机操作题(2)#include 包含头文件 REG51.Hvoid delay(unsigned char i);延时函数声明void main()/主函数unsigned char i,l,r;while(l)1=0 x10;r=0 x08;fbr(i=0;i4;i-H-)P l-(l|r);1=1;r=l;delay(200);高4 位灯的位置初值为00010000B/低 4 位灯的位置初值为00001000B循环点亮灯高4 位灯的位置移动低4 位灯的位置移动延时void delay(unsigned char i)延时函数参见任务1 程序exl_l.c(3)/xiti3_3_3.c第三章习题3.3上机操作题(3)include 包含头文件 REG51.Hvoid delay(unsigned char i);/延时函数声明void main()主函数unsigned char i;unsigned char display=0 x89,0 xff,0 x86,0 xfT,0 xc7,0 xff,0 xc7,OxfT.OxcO,Oxff;while(l)fbr(i=0;i665536=131072Hs(计数初值为0)4.7答:定时/计数器的4种工作方式由方式寄存器TMOD中的M1、M0来进行选择,具体如下:M l M0工作方式功能说明0 0方 式013位计数器0 1方 式116位计数器1 0方 式2自动再装入8位计数器1 1方 式3定时器0:分成两个8位计数器定时器I:停止计数4.8答:中断是通过硬件来改变CPU的运行方向。计算机在执行程序的过程中,当出现CPU以外的某种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的:而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。中断的特点:分时操作、实时处理、故障处理4.9答:MCS-51系列单片机有5个中断源,分别是外部中断0、定时器0、外部中断1、定时器1、串行口。它们的优先级别通过寄存器IP实现。4.10答:外部中断有低电平触发和卜降沿触发两种方式。通过定时器控制寄存器TCO N中的ITO、IT1来选择和设定。m为中断触发方式控制位,当m=o,外部中断1控制为电平触发方式。当m =i,外部中断1控制为下降沿触发方式。4.11答:常用的中断函数定义语法如下:void 函 数 名()interrupt n其中n为中断类型号,C51编译器允许031个中断,n取值范围031。(I)C(2)A习题5答案5.1单项选择题(3)C(4)BB(6)D(7)B(8)C A5.2(1)ledk(2)delay()5.3答:不能,因为共阴极和共阳极数码管com段接的电平不一样,点亮段码所需的电平也不同。应该将共阴极数码管的com端接至G N D 匕 P1 口和8个段之间接上非门。5.4答:LED静态显示时各位数码管相对独立,公共端恒定接地(共阴极)或正电源(共阳极),每个数码管的8个字段分别与个8位 I/O 口地址相连,适合于2个及其以下的数码管显示。动态显示时各位数码管的段选线相应并联在一起,由一个8位 的 I/O 口控制,各位的段选线由另外的I/O口控制。5.5答:每次只能点亮一行。其采用的为动态显示,具体原理为:从第一行开始点亮,每行点亮之间延时1m s,第八行结束后再从第一行开始循环显示。利用人体的视觉驻留现象,所以看到的是 个稳定的图形,好像8行同时点亮。5.6答:可以采用硬件和软件两种方式,硬件匕可在键输出端加RS触发器或单稳态触发器构成去抖电路,软件上可以在检测到有按键按下时.,执行一个10ms左右的延时程序,然后确认该键是否仍保持闭合状态的电平。5.7答:独立式按键是直接用I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根I/O 口线,适合于八键以下使用;矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点匕在按键数量较多时.,矩阵式键盘较之独立式按键键盘要节省很多I/O U,适合于八个键以上使用。习题6答案6.1 单项选择题(1)D(2)C(3)A(4)A(5)B(6)D6.2 填空题(1)分辨率和建立时间(2)ILE、(3)模拟,数字;数字,模拟6.3答:DAC0832与8051单片机接口时,主要有如卜控制信号:ILE、/CS、/WR1、/W R 2、/XFER,作用分别是:(1):转入寄存器片选信号,低电平有效。(2)ILE:输入寄存器的数据锁存允许信号,高电平有效。(3):输入寄存器的数据写信号,低电平有效。(4):DAC寄存器写信号,并启动转换。低电平有效。(5):数据向DAC寄存器传送控制信号,传送后即启动转换,低电平有效。ADC0809叮8051单片机接口时,控制信号主要有:ALE、START.EOC、O E 作用分别是:(1)ALE:地址锁存允许信号在A L E 上.升沿,ADDA、ADDB、ADDC地址状态被送入地址锁存器中。(2)START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在 A/D转换期间,START应保持低电平。(3)OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。O E=0,输出数据线呈高电阻;O E=I,输出转换得到的数据。(4)EOC转换结束状态信号。启动转换后,系统自动设置EOC=0,转换完成后,EOC=lo该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。6.4答:所谓单缓冲方式就是使0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个输入寄存器同时受相同的信号控制的方式。在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。6.5答:判断A/D转换是否结束一般可采用3种方式,即 EOC信号和单片机相连可有3种方式:延时方式:EOC悬空,启动转换后,延时100陷后读入转换结果。查询方式:EOC接单片机端口线,查得EOC变高,读入转换结果,作为查询信号。中断方式:ROC经非门接单片机的中断请求端,转换结束作为中断请求信号向单片机提出中断申请,在中断服务中读入转换结果。其中延时方式和查询方式均占用单片机C P U,即在这段时间,CPU只能做延时或查询的工作,而采用中断方式时,CPU可先执行主程序,一旦产生中断,才去处理数据接收的工作,使得CPU利用率较前面两种要高。6.6答:(1)周期为25ms的锯齿波发生器C 语言源程序如下:#include#include#define DA0832 XBYTE 0 x7fff#define uchar unsigned char#define uint unsigned intuchar i;void delay_100us()TH1=0 xff;置定时器初值0 xff9c,BP65436,定时0.1msTL1=0 x9c;TR1=1;/启动定时器1while(!TF1);查询计数是否溢出,即定时0.1ms时间到,TF1=1TF1=0;0.1ms时间到,将定时器溢出标志位TF清零void main(void)TMOD=0 x10;置定时器1为方式1while(1)for(i=0;i=255;i+)形成锯齿波输出值,最大255 DA0832=i;/D/A 转换输出delay_100us();)(2)周期为50ms的三角波C 语言源程序如下:#include#include#define DA0832 XBYTE 0 x7fff#define uchar unsigned char#define uint unsigned intuchar i,j;void delay_100us()TH1=0 xff;置定时器初值0 xff9c,BP65436,定时0.1msTL1=0 x9c;TR1=1;/启动定时器1while(!TF1);查询计数是否溢出,即定时0.1ms时间至U,TF1=1TF1=0;0.1 ms时间到,将定时器溢出标志位TF清零void main(void)TMOD=0 x10;置定时器1为方式1while(1)for(i=0;i=0;H 形成三角波输出值,最大255 DA0832=j;D/A 转换输出delay_100us();(3)周期为50ms的方波C 语言源程序如下:#include#include#define DA0832 XBYTE 0 x7fff#define uchar unsigned char#define uint unsigned intuchar i,j;void delay_25ms()TH1=0 x9e;/置定时器初值TL1=0 x58;TR1=1;/启动定时器1while(!TF1);查询计数是否溢出,即定时25ms时间到,TF1=1TF1=0;25ms时间到,将定时器溢出标志位T F清零)void main(void)TMOD=0 x10;/置定时器1为方式1while(1)DA0832=255;形成方波输出值,最大255,D/A转换输出delay_25ms();DA0832=0;/D/A 转换输Hldelay_25ms();)6.7答:在选定转换通道后,ADC0809工作的主要有以下儿个步骤:1.启动A/D转换,给 START引脚一个下降沿;2.ALE信号与START信号一般连接在一起,这样使得在ALE信号的前沿写入地址信号,紧接着在其后沿就启动转换;3.查询EOC引脚状态,EOC引脚由0变1,表示A/D转换过程结束;4.允许读数,将 0 E 引脚设置为1状态。5.读取A/D转换结果,从 ADC0809的外部地址读取其转换结果。习题7答案7.1单项选择题A(2)BD(4)C(5)B(6)C(7)B(8)C(9)C(10)A(H)C(12)D(13)A7.2答:在异步通信中,数据是不连续传送的,数据通常是以字符为单位组成字符帧传送的。字符帧山发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以山各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。异步通信的字符帧格式分为无空闲位帧格式和有空闲位帧格式。7.3答:T1的溢出率取决于单片机定时器T1的计数速率和定时器的预置值。当定时器T1做波特率发生器使用时.,通常是工作在模式2,即自动重装载的8位定时器,此 时 TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过256-X个机器周期,定时器溢出一次。为了避免溢出而产生不必要的中断,此时应禁止T1中断。7.4答:参考程序如下:#include#define uchar unsigned charcode uchar tab =0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6D,0 x7D,0 x07,0 x7f,0 x6f;uchar send0=OxO4,0 x03,0 x02,0 x01,0 x08,0 x07,0 x06,0 x05;int i,t;延时函数,当 t 取值12000时,若晶振fosc=12MHz,大约延时1svoid delay(t)for(i=0;it;i+);)main()(unsigned char i,j,k,m;SCON=OxOO;串行口工作方式while(1)for(i=0;i6;i+)SBUF=(tab send;;发送第i 个数据while(TI=0);/等待发送是否完成TI=0;/TlfffOdelay(12000);for(m=6;m 12;m+)SBUF=(tabsendm);/发送第 i 个数据while(TI=0);/等待发送是否完成TI=0;/Tl 清0delay(12000);7.5第参考程序如卜.:甲机发送发送子程序参考如下:#include#include include#include vmath.hinclude vstdlib.h#define uchar unsigned charuchar FREQ;void main(void)/*定时器计数变量*/I I以下是设置中断和定时器EA=1;PT0=1;ET0=1;TCON=0 x08;TMOD=Ox21;/定时器Q为产生10ms的中断,定时器1为9600bit/s的波特率发生器TH0=-10000/256;TL0=-10000%256;TL1=0 xfd;TH1=0 xfd;SCON=Oxd8;1/串行口方式3发送PCON=OxOO;TR1=1;/开定时器TR0=1;7 7=7;while(1)/定时器。的中断服务程序,向串口发送“A”数据void intsvrl(void)interrupt 1/重新装入定时器0的初值;TH0=-10000/256;TL0=-10000%256;FREQ=FREQ+1;if(FREQ=100)FREQ=O;printf(A);/定时器TO的低四位赋值秒判断/发送字符乙机接收子程序参考如下:#include#define uchar unsigned charvoid main(void)uchar astring;在11.059MHz晶振下,设置串行口波特率为9600bit/s,用串行口方式3接收TMOD=0 x20;TH1=0 xfd;TL1=0 xfd;TR1=1;SCON=Oxdb;PCON=OxOO;while(1)while(RI=O);RI=O;astring=SBUF;lcd_display();液晶显示参考前面章节程序7.6答:参考程序如下:#indudedefine 1NBUF_LEN 4 数据长度unsigned char inbufl INBUF_LEN;unsigned char checksum,count3;bit read Jlag=0;串行口初始化函数:init_serialcoii函数功能:串行口初始化,设置波特率为4800bit/s,允许串口中断 形式参数:无返回值:无void init_serialcomm(void)ISCON=0 x50;/SCON:串行口方式1,允许接收TMOD l=0 x20;设置定时器1为方式2定时PCON I=0 x80;/SMOD=1;TH!=0 xf4;/波特率4800bit/S,fosc=11.0592MHzTL1=0 xf4;IE=0 x90;/开串口中断TRI=1;/启动定时器t”发送字符函数:send_char_com函数功能:向串口发送一个字符”形式参数:存放字符的变量ch,unsigned char类型“返回值:无void send_char_com(unsigned char ch)(SBUF=ch;while(77=0);77=0;,发送字符串函数:send_string_com函数功能:向串口发送一个字符串,strlen为该字符串长度/形式参数:字符串变量*str,unsigned char类型;字符串长度stden,unsigned intII类型返回值:无void send_string_com(unsigned char unsigned int strlen)unsigned int k=0;do(sencl_char_coni(str+k);k+;while(k 127)(count3=0;inhuflf count3=ch;checksum=ch-128;else(count3+;inbufl court t3J=ch;checksum A=ch;if(count3=(INBUF_LEN-1)&(/checksum)最后一个字节是否为前几个字节”后7位的异或校验和(readjlag=1;如果串口接收的数据达到INBUFJLEN个,且校验没错,就置位取数标志void main()主函数(init_serialcomm();/初始化串 口while(1)if(readjlag)如果取数标志已置位,就将读到的数从串口发出(read_flag=0;取数标志清0send_string_com(inbufl,lNBUF_LEN);习题8 答案8.1单项选择题,在 A、B、C、D 四个答案中只有个正确答案。(1)B(2)D(3)C(4)D(5)A(6)A(7)B8.2填空题(1)(2)双向数据线,POQ(3)数据总线,地址总线(4)74LS165,74LS164(5)外接上拉电阻,由于AT24coi的 SDA和 SCL为开漏输出(6)5128.3答:因 为 MCS-51系列单片机分别对程序存储器和数据存储器访问提供了不同的控制信号,对程序存储器的读操作和取指操作由信号控制,而对数据存储器的读写操作由控制信号和控制,而且,对二者的操作指令也不相同,因此不会发生冲突。8.4答:如果要在EPROM中定义表格,应在变量声明时使用code标志符,例如:unsigned char code tab =0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;将。9的共阳极数码管字符码表定义到程序存储器中。在程序存储器中定义表格后,可以通过变量赋值实现从EPROM中读出所定义的表格数据。下面的程序段实现在程序存储器中查表、并将。9显示字符码逐一送到P1 口的操作:unsigned char i;for(i=0;i=9;i+)(P1=tab;从程序存储器中取显示字符码送P1 口delay();)8.5答:参考程序加下:ffinclude reg51.hunsigned char da=0 xF9,0 x80;void delay(unsigned int i);延时函数声明main()unsigned char i;P1=0 xff;SCON=OxOO;while(1)for(i=0;iv2;i+)SBUF=da;TI=O;while(!TI);delay(2000);/P1.0置1,允许串行移位设串行口方式0H送显示H等待发送完毕void delay(unsigned int i)略