单片机课后习题答案

上传人:无*** 文档编号:137716668 上传时间:2022-08-18 格式:DOC 页数:34 大小:204KB
返回 下载 相关 举报
单片机课后习题答案_第1页
第1页 / 共34页
单片机课后习题答案_第2页
第2页 / 共34页
单片机课后习题答案_第3页
第3页 / 共34页
点击查看更多>>
资源描述
.wd.第1章 习题答案1什么是单片机答:将中央处理器Central Processing Unit,CPU、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等微型计算机的主要部件集成在一块芯片上,使其具有计算机的 基本功能,就叫做单片微型计算机Single Chip Micro Computer,SCMC,简称单片机。由于单片机的指令功能是按照工业控制的要求设计,所以单片机又称为微控制器Micro Controller Unit,MCU。2单片机有哪些特点答: 1单片机的存储器ROM和RAM是严格区分的。ROM称为程序存储器,只存放程序、固定常数及数据表格。RAM则为数据存储器,用作工作区及存放用户数据。2采用面向控制的指令系统。3单片机的I/O引脚通常是多功能的。4单片机的外部扩展能力强。5单片机体积小,本钱低,运用灵活,易于产品化。6面向控制,能有针对性地解决从简单到复杂的各类控制任务,因而能获得最正确的性能价格比。7抗干扰能力强,适用温度范围宽。8可以方便地实现多机和分布式控制,使整个控制系统的效率和可靠性大为提高。3单片机的应用有哪些答: 1工业控制。单片机可以构成各种工业控制系统、数据采集系统等。如数控机床、自动生产线控制、电机控制、测控系统等。2仪器仪表。如智能仪表、医疗器械、数字示波器等。3计算机外部设备与智能接口。如图形终端机、 机、复印机、打印机、绘图仪、磁盘/磁带机、智能终端机等。4商用产品。如自动售货机、电子收款机、电子秤等。5家用电器。如微波炉、电视机、空调、洗衣机、录像机、音响设备等。6消费类电子产品。7通讯设备和网络设备。8儿童智能玩具。9汽车、建筑机械、飞机等大型机械设备。10智能楼宇设备。11交通控制设备。4常见的单片机有哪些类型答: 1AVR单片机;2Motorola单片机;3MicroChip单片机;4Scenix单片机;5EPSON单片机;7GMS90单片机;8华邦单片机9Zilog单片机;10NS单片机;11AX1001单片机第2章 习题答案1MCS-51单片机内部包含哪些主要逻辑功能部件答:11个8位的微处理器CPU。28KB的片内程序存储器Flash ROM51子系列的Flash ROM为4KB,用于烧录运行的程序、常数数据。3256B的片内数据存储器RAM51子系列的RAM为128B,在程序运行时可以随时写入数据和读出,用于存放函数相互传递的数据、接收的外部数据、中间结果、最后结果以及显示的数据等。43个16位的定时器/计数器51子系列仅有2个定时器,每个定时器/计数器可以设置为计数方式,用于对外部事件信号进展计数,也可以设置为定时方式,满足各种定时要求。5有一个管理6个中断源51子系列1是5个中断源、两个优先级的中断控制器。64个8位并行I/O端,每个端口既可以用作输入,也可以用于输出。7一个全双工的UART通用异步接收发送器串行I/O口,用于单片机之间的串行通信,或者单片机与PC机、其它设备、其它芯片之间的串行通信。8片内振荡电路和时钟发生器,只需外面接上一晶振或输入振荡信号就可产生单片机所需要的各种时钟信号。9有一个可寻址64KB外部数据存储器、还可以寻址64KB外部程序存储器的三总线的控制电路。2MCS-51单片机的引脚有何功能信号为何种电平答:为片外程序存储器选择输入端。该引脚为低电平时,使用片外程序存储器,为高电平时,使用片内程序存储器。3MCS-51单片机的ALE引脚有何功能信号波形是什么答: ALE为地址锁存信号,每个机器周期输出两个正脉冲。在访问片外存储器时,下降沿用于控制外接的地址锁存器锁存从P0口输出的低8位地址。在没有接外部存储器时,可以将该引脚的输出作为时钟信号使用。4MCS-51单片机的存储器分为哪几个空间如何区分不同空间的寻址答: MCS-51单片机有4个存储空间,它们是片内程序存储器和数据存储器,在片外可以扩展的程序存储器和数据存储器。这4个存储空间可以分成三类:片内数据存储空间256B的RAM和128B的特殊功能存放器、片外数据存储空间64KB、片内和片外统一编址的程序存储空间64KB。不同的存储空间,它们有各自的寻址方式和访问指令。片内数据存储空间用MOV指令访问。片外数据存储空间用MOVX指令访问。片内和片外统一编址的程序存储空间用MOVC指令访问。5简述MCS-51单片机片内RAM的空间分配。内部RAM低128字节分为哪几个主要局部各局部主要功能是什么答: 片内数据存储器按照寻址方式,可以分为三个局部:低128字节数据区,高128字节数据区间,特殊功能存放器区。低128字节数据区分为三个区域:工作存放器区,位寻找区和通用数据区。工作存放器区4组工作存放器;位寻找区既可以做位操作,也可以字节操作;通用数据区用于堆栈和存放程序运行时的数据和中间结果。6简述MCS-51单片机布尔处理器存储空间分配,片内RAM包含哪些可以位寻址的单元。位地址7DH与字节地址7DH如何区别位地址7DH具体在片内RAM中的什么位置答:低128字节数据区的位寻找区和高128字节数据区的某些可位寻址的特殊功能存放器。位地址7DH与字节地址7DH可通过不同的指令来区别,位地址7DH用位寻址指令来访问,字节地址7DH用字节寻址指令来访问,位地址7DH在低128字节数据区的位寻找区的2FH字节。7MCS-51单片机的程序状态存放器PSW的作用是什么常用标志有哪些位作用是什么答:PSW是一个8位存放器,用于设定CPU的状态和指示指令执行后的状态。CYPSW.7:进位标志。在执行加减运算指令时,如果运算结果的最高位D7发生了进位或借位,则CY由硬件自动置1。ACPSW.6:半进位标志位,也称为辅助标志位。在执行加减运算指令时,如果运算结果的低半字节D3发生了向高半字节进位或借位,则AC由硬件自动置1。F0、F1PSW.5 和PSW.1:用户标志位。用户可以根据需要对F0、F1赋予一定的含义,由用户置1和清0,作为软件标志。RS1、RS0PSW.4 和PSW.3:工作存放器组选择控制位。通过对这两位设定,可以从4个工作存放器组中选择一组作为当前工作存放器。OVPSW.2:溢出标志位,有两种情况影响该位。一是执行加减运算时,如果D7或D6任一位,并且只一位发生了进位或借位,则OV自动置1, PPSW.0:奇偶标志位。每条指令执行完后,该位都会指示当前累加器A中1的个数。如果A中有奇数个1,则P自动置1。8MCS-51单片机复位后,CPU使用哪组工作存放器它们的地址是什么用户如何改变当前工作存放器组答: MCS-51单片机复位后,CPU使用0组工作存放器。它们的地址是08H0FH。通过程序状态字PSW中的RS1、RS0标志位改变当前工作存放器组。9什么叫堆栈堆栈指针SP的作用是什么答: 堆栈是在RAM专门开辟的一个特殊用途的存储区。堆栈是按照“先进后出即先进入堆栈的数据后移出堆栈的原则存取数据。堆栈指针SP是一个8位存放器,其值为栈顶的地址,即指向栈顶,SP为访问堆栈的间址存放器。10PC与DPTR各有哪些特点有何异同答: PC与DPTR都是16位的存放器。PC由两个8位的计数器PCH和PCL组成。PC实际是程序的字节地址计数器,它的内容是将要执行的下一条指令的地址,具有自加1功能。改变PC的内容就可以改变程序执行的方向。DPTR的高字节存放器用DPH表示,低字节存放器用DPL表示。DPTR既可以作为一个16位存放器使用,也可以作为两个独立的8位存放器使用。DPTR主要用于存放16位地址,以便对64KB的片外RAM和64KB的程序存储空间作间接访问。11测试哪个引脚,可以快捷地判断单片机是否正在工作答: 假设要检查单片机是否工作,可以使用示波器查看ALE引脚是否有脉冲信号输出。12读端口锁存器和“读引脚有何不同各使用哪些指令答:一种是读取锁存器原来的输出值,另一种情况是翻开端口的缓冲器读取引脚上的信号,读端口锁存器,用MOV A,Pi指令。“读引脚,要先用MOV Pi,#0FFH对相应端口写FFH,使输出场效应管T截止,才能够正确输入,再用MOV A,Pi指令。13MCS-51单片机的P0P3口构造有何不同用作通用I/O口输入数据时应注意什么答: P2口是一个双功能口,一是通用I/O口,二是以总线方式访问外部存储器时作为高8位地址口。与P1口的构造类似,驱动局部 基本上与P1口一样,但比P1口多了一个多路切换开关MUX和反相器3。P3口是一个多功能口,与P1口的构造相比不难看出,P3口与P1口的差异在于多了“与非门3和缓冲器4。正是这两个局部,使得P3口除了具有P1口的准双向I/O口的功能之外,还可以使用各引脚所具有的第2功能。P0多了一路总线输出地址/数据、总线输出控制电路反相器3和与门4、两路输出切换开关MUX及开关控制C,并且把上拉电阻换成了场效应管T1,以增加总线的驱动能力。用作通用I/O口输入数据时应注意要先用MOV Pi,#0FFH对相应端口写FFH,使输出场效应管T截止,才能够正确输入。14P0口用作通用I/O口输出数据时应注意什么答: P0口与其它端口不同,它的输出级无上拉电阻。当把它用作通用I/O口时,输出级是开漏电路,故用其输出去驱动NMOS输入时外接上拉电阻,这时每一位输出可以驱动4个LS型TTL负载。用作输入时,应先向端口锁存器写1。15什么叫时钟周期什么叫机器周期什么叫指令周期时钟周期、机器周期与振荡周期之间有什么关系答: 时钟周期即振荡周期:为晶振的振荡周期,是最小的时序单位。状态周期:是振荡频率2分频后的时钟周期。显然,一个状态周期包含2个振荡周期。机器周期MC:1个机器周期由6个状态周期、即12个振荡周期组成,是量度指令执行时间的单位。指令周期:是执行一条指令所需要的时间。一个指令周期由14个机器周期组成。16MCS-51单片机常用的复位电路有哪些复位后机器的初始状态如何答: 复位电路有两种方式:上电自动复位电路和手动复位电路。复位后,程序计数器PC变为0000H,使单片机从程序存储器地址0000H单元开场执行。除P0P3为FFH;SP为07H;SBUF为不确定。大局部特殊功能存放器清零。17MCS-51单片机有几种低功耗工作方式如何实现,又如何退出答: MCS-51单片机有空闲和掉电两种低功耗工作方式。当CPU执行完置IDL=1的指令后,系统就进入空闲方式。进入空闲方式之后,有两种方法可以退出。一种是任何中断请求被响应都可以由硬件将IDL位清0而完毕空闲方式。另一种退出空闲方式的方法是硬件复位。当CPU执行完置PD=1的指令后,系统就进入掉电工作方式。对于一般的单片机来说,退出掉电方式的唯一方法是由硬件复位。第3章 习题答案1简述MCS-51汇编指令格式。答:MCS-51汇编语言指令由四局部组成,其一般格式如下: 标号:操作码 操作数 ;注释格式中的方括号意为可以没有相应局部,可以没有标号、操作数和注释,至少要有操作码。其操作数局部最多可以是两项: 第1操作数 ,第2操作数2何谓寻址方式MCS-51单片机有哪些寻址方式,是怎样操作的各种寻址方式的寻址空间和范围是什么答:MCS-51单片机有7种寻址方式:立即数寻址、存放器寻址、直接寻址、存放器间接寻址、变址寻址、位寻址和指令寻址。可以分为两类:操作数寻址和指令寻址。立即数寻址的寻址空间和范围是:在程序存储空间,随指令读入MOV A,#46H直接寻址的寻址空间和范围是:片内RAM中,低128字节和SFRMOVA,46H存放器寻址的寻址空间和范围是:使用R0R7、A、B、C、DPTRMOVA,R2存放器间接寻址的寻址空间和范围是:片内RAM:使用Ri,SP;范围为256B,不含SFR,片外RAM:使用Ri,DPTR;范围为64KBMOVA,R0MOVX A,DPTR变址寻址的寻址空间和范围是:使用A+PC,A+DPTR;在程序存储器中;范围分别为PC之后256B之内和64KB全空间MOVC A,A+DPTR位寻址的寻址空间和范围是:使用位地址;在位寻址空间;RAM的20H2FH和SFRSETB 36H指令绝对寻址的寻址空间和范围是:操作数是目标地址;在程序存储空间;范围为2KB或64KB全空间AJMP FIRSTLJMP SECON指令相对寻址的寻址空间和范围是:操作数是相对地址;在程序存储空间;范围128127SJMP LOOP3访问片内RAM低128字节使用哪些寻址方式访问片内RAM高128字节使用什么寻址方式访问SFR使用什么寻址方式答:访问片内RAM低128字节使用直接寻址,存放器间接寻址,位寻址;访问片内RAM高128字节使用存放器间接寻址;访问SFR使用直接寻址,位寻址。4访问片外RAM使用什么寻址方式答:访问片外RAM使用存放器间接寻址5访问程序存储器使用什么寻址方式指令跳转使用什么寻址方式答:访问程序存储器使用指令绝对寻址,指令相对寻址。指令跳转使用指令绝对寻址,指令相对寻址。6分析下面指令是否正确,并说明理由。MOVR3,R7错,两个操作数不能同时为工作存放器MOVB,R2对DECDPTR错,不存在MOV20H.8,F0错,位传送指令必须用CPUSHDPTRCPL36H错,不存在MOVPC,#0800H错,PC不能访问7分析下面各组指令,区分它们的不同之处。MOVA,30H与MOVA,#30H前者表示:30HA 后者表示:30HAMOVA,R0与MOVA,R0前者表示:R0A 后者表示:R0AMOVA,R1与MOVXA,R1前者表示:在片内数据存储器R1A 后者表示:在片外数据存储器R1AMOVXA,R0与MOVXA,DPTR前者R0表示8位地址 后者DPTR表示16位地址MOVXA,DPTR与MOVCA,A+DPTR前者表示:DPTRA 后者表示:DPTR+AA8在MCS-51单片机的片内RAM中,30H=38H,38H=40H,40H=48H,48H=90H。请说明下面各是什么指令和寻址方式,以及每条指令执行后目的操作数的结果。MOVA,40H;数据传送,直接寻址,A=48HMOVR0,A;数据传送,存放器寻址,R0=48HMOVP1,#0FH;数据传送,立即数寻址,P1=0FHMOVR0,30H;数据传送,直接寻址,48H=38HMOVDPTR,#1234H;数据传送,立即数寻址,DPTR=1234HMOV40H,30H;数据传送,直接寻址,40H=38HMOVR0,38H;数据传送,直接寻址,R0=40HMOVP0,R0;数据传送,直接寻址,P0=40HMOV28H,#30H;数据传送,立即数寻址,28H=30HMOVA,R0;数据传送,存放器间接寻址,A=38H9A=23H,R1=65H,DPTR=1FECH,片内RAM65H=70H, ROM205CH=64H。试分析以下各条指令执行后目标操作数的内容。MOVA,R1;A=70HMOVXDPTR,A;1FECH=70HMOVCA,A+DPTR;A=64HXCHDA,R1;A=65H10A=76H,R1=76H,B=4,CY=1,片内RAM76H=0D0H,80H=6CH。试分析以下各条指令执行后目标操作数的内容和相应标志位的值。ADDA,R1;A=46H,CY=1SUBBA,#75H;A=0D0H,CY=1MULAB;A=40H,B=03HDIVAB;A=15H,B=01HANL76H,#76H;76H=50HORLA,#0FH;A=1FHXRL80H,A;80H=73H11A=83H,R0=17H,17H=34H,试分析当执行完下面程序段后累加器A、R0、17H单元的内容。ANLA,#17H;A=03HORL17H,A;17H=37HXRLA,R0;A=34HCPLA;A=0CBH12阅读下面程序段,说明该段程序的功能。MOVR0,#40HMOVR7,#10CLRALOOP:MOVR0,AINCAINCR0DJNZR7,LOOPSJMP$答:把0,1,2,3数列送到40H开场的10个单元中。13阅读下面程序段,说明该段程序的功能。MOVR0,#40HMOVA,R0INCR0ADDA,R0MOV43H,ACLRAADDCA,#0MOV42H,ASJMP$答:40H加41H单元的数,结果送42H:43H第4章 习题答案1用C51编程较汇编语言有哪些优势答:1编程容易2容易实现复杂的数值计算3容易阅读、调试、维护程序4容易实现模块化开发5程序可移植性好2C51字节数据、整型数据以及长整型数据在存储器中的存储方式各是怎样的答:字符变量char无论是unsigned char数据还是signed char数据,均为1个字节,即8位,因此被直接存储在RAM中,可能存储在00x7f区域包括位寻址区域,也可能存储在0x800xff区域,与变量的定义有关。整型变量int不管是unsigned int数据还是signed int数据,均为2个字节,即16位,其存储方法是高位字节保存在低地址在前面,低位字节保存在高地址在后面。长整型变量long为4个字节,即32位,其存储方法与整型数据一样,是最高位字节保存的地址最低在最前面,最低位字节保存的地址最高在最后面。3C51定义变量的一般格式是什么变量的4种属性是什么特别要注意存储区属性。答:存储类型数据类型存储区变量名1=初值,变量名2=初值 ,变量的4种属性是存储类型,数据类型,存储区,变量名4C51的数据存储区域类型有哪些各种存储区域类型是哪种存储空间,存储范围是什么如何将变量定义存储到确定的位置答:bit片内数据区的位寻找区,位地址0x000x7f,128位(字节地址0x200x2f)data直接寻址片内数据区的低128字节bdata片内数据区的位寻址区0x200x2f,也可字节访问,16字节idata间接寻址片内数据区的256字节,与MOV Ri 对应pdata分页寻址片外数据区的256字节,与MOVX Ri 对应,P2不变xdata片外数据区的全空间,64KBcode全部程序存储空间,64KB绝对定位关键字_at_ ,指针,库函数的绝对定位宏。5C51位变量的定义格式是什么如何定义bdata型字节变量的位变量答:存储类型 bit 位变量名1=初值 ,位变量名2=初值 ,sbit位变量名 bdata型变量名位号常数6如何定义8位字节型特殊功能存放器如何定义16位特殊功能存放器如何定义特殊功能存放器的位变量答:sfr特殊功能存放器名 地址常数sfr16特殊功能存放器名 地址常数sbit位变量名 特殊功能存放器名位号常数7C51专用指针定义的一般格式是什么如何确定专用指针定义的指向空间和指针变量本身存储的空间答:存储类型 数据类型 指向存储区 *指针存储区 指针名1 ,*指针存储区 指针名2,*的左面是指向存储区,*的右面是指针存储区8C51函数定义的一般形式是什么如何定义中断处理程序如何选择工作存放器组答:返回类型 函数名形参表 函数模式 reentrant interrupt m using n局部变量定义执行语句interrupt m字段中的m定义中断处理程序的中断号using n字段中的n选择工作存放器组9在C51中,对汇编语言函数的命名规则是怎样的,具体地说:不传递参数的函数名格式是什么通过存放器传递参数的函数名格式是什么传递参数重入函数的函数名格式是什么答:?PR函数名模块名/不传递参数?PR_函数名模块名/通过存放器传递参数?PR_?函数名模块名/对重入函数通过堆栈传递参数10在C51中,函数返回值传递的规则是什么答:1调用时参数的传递分三种情况:少于等于3个参数时通过存放器传递存放器不够用时通过存储区传递,多于3个时有一局部通过存储区传递,对于重入函数参数通过堆栈传递。通过存放器传递速度最快。2函数返回值的传递当函数有返回值时,其传递都是通过存放器11在C51中,怎样嵌入汇编语言程序怎样进展处理实现混合编程答:其方法是用编译控制指令“#pragma src、“#pragma asm和“#pragma endasm实现。编译控制命令“#pragma src是控制编译器将C源文件编译成汇编文件,“#pragma src要放在文件的开场;“#pragma asm和“#pragma endasm指示汇编语言程序的开场和完毕,分别放在汇编程序段的前面和后面。对于函数的调用方法,与调用汇编语言中的函数一样,在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下:extern返回值类型 函数名参数表;12在C51中如何定义模块名在C51文件中的模块名是什么答:模块定义格式如下:NAME 模块名13在汇编语言文件中:怎样声明函数段怎样声明公共函数怎样声明引用函数怎样声明引用变量定义函数的格式是什么答:对本模块定义的函数段作声明,其格式为:?PR?函数名模块名 SEGMENTCODE公共函数声明。声明格式为:PUBLIC 函数名引用声明。声明格式为:EXTRN CODE函数名引用声明。声明格式为:EXTRN 存储区域类型变量名汇编语言函数的格式如下: RSEG ?PR?函数名?模块名函数名:14在C51中怎样把函数定义到确定的位置答:对函数的定位方法,CSEGAT001BH15如何在C51文件和汇编语言文件中相互调用对方文件中的函数答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如:LCALLDISPLAY在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下:extern返回值类型 函数名参数表;例如:externunsigned char right_shift ( char, char );16在C51中,如何访问DATA空间、PDATA空间、XDATA空间、CODE空间某个确定地址单元答:用指针定义的访问存储器的宏使用时需要用预处理命令把该头文件包含到文件中,形式为:#include 。1按字节访问存储器宏的形式宏名地址2按整型数访问存储器宏的形式宏名下标17在某程序中需要定义如下变量:1定义数码管的显示09的共阴极显示代码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f数组dis_code,将其定义在CODE区。2定义定时器/计数器0的赋计数值的高、低字节变量TL0_L和TH0_H,将其定义在DATA去区的0x30、0x31处。3定义长度为20的无符号字符型数组data_buf于IDATA区中。4定义长度为100的无符号字符型数组data_array于XDATA区中。5先定义一个无符号字符型变量status于BDATA区中,再定义8个与status的8个位对应的位变量flag_lamp1、flag_lamp2、flag_machine1、flag_machine2、flag_port1、flag_port2、flag_calcu1和calcu2从低位到高位。答:1unsigned char code dis_code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; 2unsignedchardata TL0_L _at_ 0x30, TH0_H _at_ 0x31;3unsignedcharidata data_buf20;4unsignedcharxdata data_array100;5unsignedcharbdata status;sbitflag_lamp1=status0; sbitflag_lamp2=status1; sbitflag_machine1=status2; sbitflag_machine2=status3; sbitflag_port1=status4; sbitflag_port2=status5; sbitflag_calcu1=status6; sbitflag_calcu2=status7; 18在89C52单片机中增加了定时器/计数器2T2,修改头文件“REG51.H,添加如下内容:1特殊功能存放器T2CON、T2MOD、RCAP2L、RCAP2H、TL2、TH2,地址分别为0xc8 0xcd。2对T2CON的8个位分别定义位变量CP_RL2、C_T2、TR2、EXEN2、TCLK、RCLK、EXF2、和TF2从低位到高位。3定义位变量T2、T2EX对应于P1口的第0位和第1位;定义位变量ET2对应于EI的第5位;定义位变量PT2对应于IP的第5位;4对P1口的8个位分别定义位变量P0_0、P0_1、P0_2、P0_3、P0_4、P0_5、P0_6和P0_7从低位到高位。答:1sfrT2CON=0xc8;sfrT2MOD=0xc9;sfrRCAP2L=0xca;sfrRCAP2H=0xcb;sfrTL2=0xcc;sfrTH2=0xcd;2sbitCP_RL2=T2CON0; sbitC_T2=T2CON1; sbitTR2=T2CON2; sbitEXEN2=T2CON3; sbitTCLK=T2CON4; sbitRCLK=T2CON5; sbitEXF2=T2CON6; sbitTF2=T2CON7; 3sbitT2=P10;sbitT2EX=P11;sbitET2=EI5;sbitPT2=IP5;4sbitP0_0=P00;sbitP0_1=P01;sbitP0_2=P02;sbitP0_3=P03;sbitP0_4=P04;sbitP0_5=P05;sbitP0_6=P06;sbitP0_7=P07;19编写一C51函数,把从键盘输入的5位十进制数数转换成一个无符号整型数假设未超出整型数范围。设从键盘输入的数存放在一无符号数组中,低位数为低下标元素。unsigned char data key_buffer5;unsigned int trans_int(void)unsigned char data i;unsigned int data temp=0;for(i=0;i5;i+)temp=temp*10+key_bufferi-0x30;return temp;20编写一C51函数,把一整型数按十进制数将其各位别离,别离后放在一无符号数组中,便于显示。要求把低位数作为低下标元素。unsigned char data shu5;void main(unsigned int x)unsigned int temp;unsigned char i;for(i=0;i4;i+)shui=temp%10;temp=temp/10;shu4=temp;21编写一C51函数,使用专用指针,把片外数据存储器中从0x100开场的30个字节数据,传送到片内从0x40开场的区域中。void main()unsigned char data i,*dpt;unsigned char xdata *xdpt;dpt=0x40;xdpt=0x100;for(i=0;i30;i+)*(dpt+i)=*(xdpt+i);22编写一C51程序,实现从P1口输出产生的流水灯,要求用汇编语言函数实现数据左移或右移。#pragma src#include void main()unsigned char temp,i;while(1)temp=0x55;P1=temp;delay();#pragma asmMOV A,tempRR AMOV temp,A#pragma endasmP1=temp;delay();23某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开场逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三角波的周期和最大值通过入口参数能够改变。#include#define DAC0832 XBYTE0x7FFFvoid san(unsigned char max1,unsigned char zhou1)unsigned char i,j,max,zhou;max=max1;zhou=zhou1;while(1)for(i=0;i=max,i+)DAC0832=i;for(j=0;j0,i-)DAC0832=i;for(j=0;j1,j-)for(i=0;i*(ptr+i+1)temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;*ptr1=*(ptr+20/2);25在数字滤波中有一种叫做“去极值平均滤波技术,就是对采集的数据按照从大到小或者从小到大进展排序,然后去掉一样数目的极大值和极小值,对中间局部数据求算术平均值作为采样值。试编写一函数,对存放在片外数据存储器中从0x150开场的16个单元的采样数据,用选择法进展“去极值平均滤波,把得到的采样数据存放到0x14f单元中。void teaf()unsigned char xdata *ptr;unsigned char data temp,i,j,*ptr1;ptr=0x150;ptr1=0x4f;for(j=16;j1,j-)for(i=0;i*(ptr+i+1)temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;temp=0;for(i=0;i16-2;i+)temp=temp+*(ptr+i+1);*ptr1=temp/(16-2);26利用库函数_getkey编写一函数,实现从单片机串行口接收数据的C51程序,把接收的数据存放在片内数据存储器从0x40开场的区域,遇到回车符CRASCII码是0x0d完毕。include void main()unsigned char data *dpt;unsigned char i=0,temp;dpt=0x40;while(1)temp=_getchar();if(temp=0x0d)break;*dpt+i=temp;i+;27利用库函数scanf编写一函数,实现从单片机串行口接收数据的C51程序,把接收的数据存放在片外数据存储器从0x240开场的区域,遇到回车符CRASCII码是0x0d完毕。include void main()unsigned char xdata *xdpt;unsigned char i=0,temp;xdpt=0x240;while(1)scanf(“%c,&temp);if(temp=0x0d)break;*xdpt+i=temp;i+;28利用库函数putchar编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片内数据存储器从0x50开场的区域,遇到回车符CRASCII码是0x0d完毕。include void main()unsigned char data *dpt;unsigned char i=0;dpt=0x50;while(*dpt+i!=0x0d)putchar(*dpt+i);i+;29利用库函数printf编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片外数据存储器从0x100开场的区域,遇到回车符CRASCII码是0x0d完毕。include void main()unsigned char xdata *xdpt;unsigned char i=0;xdpt=0x100;while(*xdpt+i!=0x0d)printf(“%c,*xdpt+i);i+;30编写一定时器/计数器0定时100ms中断处理函数,使函数实现时钟的功能,即产生时钟的秒、分钟和小时。设定时初值的高、低字节分别为TIMER_H和TIMER_L。设fosc=6mhz#include sfr TIMER_H=0x8b;sfr TIMER_L=0x8a;unsigned char data shi,fen,miao,bfm;void main()TMOD=0x01;TIMER_H=15536/16;TIMER_L=15536%16;ET0=1;EA=1;TR0=1;while(1);void time0_int() interrupt 1TIMER_H=15536/16;TIMER_L=15536%16;bfm+;if(bfm=10)bfm=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;31在Keill C的调试状态下,如何使用跟踪运行、单步运行、跳出函数运行命令答:Step命令和Step Over命令的区别:当遇到调用函数时,前者将跟踪进入函数,而后者是一步执行完函数。如果用全速运行命令Go,可以使用Stop Running命令停顿运行。欲退出调试状态,可以再次点击Debug菜单下的Start/Stop Debug Session命令或相应的按钮。32在Keill C的调试状态下,如何设置断点和删除断点答:方法1:用鼠标双击。在需要设置的行的最前面,双击鼠标左键,即可设置或去除断点。方法2:用命令或命令按钮。先将光标移到需要设置的行,然后点击Debug菜单下的Insert/Remove Breakpoint命令或工具栏中的相应按钮,即可设置或去除断点。另外还有断点禁用和全部去除命令及按钮。33在Keill C的调试状态下,如何观察和修改存放器答:存放器窗口、在线帮助窗口和工程管理器是同一个窗口,在工程管理器窗口下包含3个标签,即包含3个区域。在调试状态下,点击View菜单下的Project Window命令或对应的按钮,就会显示或隐藏工程管理器窗口,然后点击窗口下边的存放器标签,即显示出存放器窗口。除了sec和states之外,其它存放器的值都可以改变。改变的方式有两种:一是用鼠标直接点击左键进展修改;二是在调试命令窗口直接输入存放器的值,如输入“A=0x32,则存放器A的值立即显示0x32。34在Keill C的调试状态下,如何观察和修改变量答:在调试状态下,点击View菜单下的Watch & Call Stack Window命令或对应的按钮,就会显示出或隐藏起变量窗口。变量窗口包含有4个标签,即4个显示区,可以分别显示局部变量Locals标签、指定变量Watch #1和Watch #2两个标签、及堆栈调用Call Stack标签。在局部变量区,显示的是当前函数中的变量,这些变量不用设置,自动出现在窗口中。为了观察其它变量,可以在Watch#1或Watch#2标签按F2输入变量名。在程序运行中,可以观察这些显示的变量的变化,也可以用鼠标点击修改它们的值。另外还有更简单的方法观察变量的值,在程序停顿运行时,将光标放到要观察的变量上停大约1秒,就会出现对应变量的当前值,如operate=0x32。35在Keill C的调试状态下,如何观察和修改data区、idata区、xdata区的数据如何观察code区的数据答:在调试状态下,点击View菜单下的Memory Window命令或对应的按钮,就会显示出或隐藏起存储器窗口。存储器窗口包含4个标签,即4个显示区,分别是Memory#1、Memory#4。在4个显示区上边的“Address栏输入不同类型的地址,可以观察不同的存储区域。1设置观察片内RAM直接寻址的data区,在Address栏输入D:xxxx为十六进制的两位数,下同,便显示从xx地址开场的数据。高128字节显示的是特殊功能存放器的内容。2设置观察片内RAM间接寻址的idata区,在Address栏输入I:xx,便显示从xx地址开场的数据。高128字节显示的也是数据区的内容,而不是特殊功能存放器的内容。3设置观察片外RAM xdata区,在Address栏输入X:xxxx,便显示从xxxx地址开场的数据。4设置观察程序存储器ROM code区,在Address栏输入C:xxxx,便显示从xxxx地址开场的程序代码。在显示区域中,默认的显示形式为十六进制的字节。除了程序存储器中的数据不能修改之外,其它3个区域的数据均可修改。修改方法是,用鼠标对准欲修改的单元,点击鼠标右键,在弹出的菜单中对Modify Memory at 0x命令点击鼠标左键,会弹出的文本输入栏输入数据,然后用鼠标左键点击“OK即可。36在Keill C的调试状态下,如何观察各个片内外设的运行状态如何修改它们的设置答:在调试状态下,点击Peripherals菜单下的不同外设选项命令,就会显示或隐藏对应外设的观察窗口。如显示定时器0窗口,点击Peripherals菜单下的Timer下面的Timer0选项,便会显示出定时器/计数器0状态窗口。在程序运行时,各个片内外设的状态会不断地变化,为了随时观察它们的变化,可以启用View菜单下的Periodic Windows Update命令,让Keil C自动周期刷新各个调试窗口。另外,也可以在窗口中对设备直接进展设置,与程序中的命令设置一样,并且立即生效。第5章 习题答案1.什么是中断和中断系统计算机采用中断系统带来了哪些优越性?答:当CPU当CPU正在处理某事件的时候,外部或者内部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作,这样的过程称为中断。1.CPU与外设同步工作2.实时处理3.故障处理2.MCS-51共有几个中断源各中断标志是如何产生的,又如何清零的CPU响应中断时,中断入口地址各是多少答:MCS-51共有5个中断源。各中断标志是通过中断请求产生的,通过指令或硬件清零的。CPU响应中断时,中断入口地址各是03H,0BH,13H,1BH,23H。3.编写一段对中断系统那个初始化的程序,使之允许INT0、INT1、T1、串行口中断,且使串行口中断为高优先级。EX0=1;EX1=1;ET1=1;ES=1;EA=1;PS=1;4.什么是中断优先级什么是中断嵌套处理中断优先级的原则是答:中断响应的优先次序是中断优先级。当一个中断处理的过程中又响应了更高优先级的中断是中断嵌套。处理中断优先级的原则是先高级中断,后低级中断。同级的按自然优先级排序。5.MCS-51在什么情况下可以响应中断中断响应的过程是答:响应中断的条件(1)中断源有中断请求;(2)中断总允许位EA=1;(3)请求中断的中断源的中断允许位为1;在满足以上条件的基础上,假设有以下任何一种情况存在,中断响应都会受到阻断。(1)CPU正在执行一个同级或高优先级的中断服务程序。(2)正在执行的指令尚未执行完。(3)正在执行中断返回指令 RETI或者对专用存放器IE、IP进展读/写的指令。CPU在执行完上述指令之后,要再执行一条指令,才能响应中断请求。中断请求被响应后,有内部长调用LCALL将程序转向对应的中断矢量地址,执行执行中断服务程序。6.中断响应过程中,为什么通常要保护现场如何保护和哪些信息要进展保护答:因为中断服务程序会用到存放器和存储器的数据会被覆盖,而中断是要返回的,所以通常要保护现场。方法是把要保护的内容压入到堆栈。7.MCS-51的ROM中,应如何安排程序区答:程序区从00H到32H的存储区依次存放主程序入口和各中断服务程序的入口。8.外部中断触发方式有几种它们的特点是什么答:外部中断触发方式有2种。它们的特点是低电平触发方式,边沿触发方式,上一个机器周期检测为高电平,接下来的下一个机器周期为低电平。9.中断系统的初始化一般包括哪些内容答:开相应中断允许,开总中断允许,设置中断优先级。10.中断响应的时间是否使确定不变的为什么在实际以用中应如何考虑这一因素答:中断响应的时间不是确定不变的。因为中断发生的位置是不确定的。在实际应用中对实时性要求高的场合要考虑这一因素,合理安排程序。11.在中断请求有效并开中断的状况下,能否保证立即响应中断有什么条件答:在中断请求有效并开中断的状况下,不能保证立即响应中断。如果要立即响应中断必须是当前指令的最后周期,没有同级或更高级中断发生,下一条指令不是 RETI或者对专用存放器IE、IP进展读/写的指令。12.中断服务程序与普通子程序有什么 基本的区别答:中断服务程序是随机发生的,完毕后要返回断点。普通子程序是安排好的,没有断点。13.为什么要用RETI指令完毕中断服务程序RETI指令的功能是什么为什么不用RET指令作为中断服务程序的返回指令答:中断服务程序返回指令RETI,除了具有“RET指令的功能外,还将开放中断逻辑的作用。14.哪些中断源的中断请求标志位是由硬件自动复位的哪些中断的中断请求标志必须通过软件编程进展复位答:外部中断和定时器中断是由硬件自动复位的。串行口中断的中断请求标志必须通过软件编程进展复位。第6章 习题答案1 MCS-51单片机内部有几个定时器/计数器,有几种工作方式答:89C52内部有3个定时器/计数器,定时器0有4种工作方式,定时器1有3种工作方式,定时器2有4种工作方式。2定时器/计时器用作定时器用时,其定时时间和哪些因素有关?作计数器时,对外界计数频率有何限制答:定时器的定时时间和单片机的振荡频率和定时初值有关。做计数器时候,其外界计数频率最大不能超过Fosc/12。3 MCS-51单片机的定时器/计数器的定时和计数两种功能各有什么特点?答:定时是对时钟脉冲进展计数。计数是对外部计数脉冲进展计数。4MCS-51单片机的T0
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!