单片机原理及应用_第二版(林立)课后答案_第1页
单片机原理及应用_第二版(林立)课后答案_第2页
单片机原理及应用_第二版(林立)课后答案_第3页
单片机原理及应用_第二版(林立)课后答案_第4页
单片机原理及应用_第二版(林立)课后答案_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课后答案第一章习题1什么是单片机单片机和通用微机相比有何特点答单片机又称为单片微计算机,它的结构特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。与通用的微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能化。2单片机的发展有哪几个阶段8位单片机会不会过时,为什么答单片机诞生于1971年,经历了SCM、MCU、SOC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTELI960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推出高性能、大容量、多功能的新型8位单片机。目前,单片机正朝着高性能和多品种发展,但由于MCS51系列8位单片机仍能满足绝大多数应用领域的需要,可以肯定,以MCS51系列为主的8位单片机,在当前及以后的相当一段时间内仍将占据单片机应用的主导地位。3举例说明单片机的主要应用领域。答单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴智能仪器单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。工业控制单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。家用电器现在的家用电器广泛采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等。网络和通信现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。医用设备领域单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。模块化系统某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。汽车电子单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、ABS防抱死系统、制动系统、胎压检测等。此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。4将十进制数37转换为二进制,BCD码和十六进制数,并对转换结果进行对比分析。答37100101B25H;BCD码为00110111;可见,同一个数用不同进制表示,其结果也不同。5写出下列十进制数在8位微机中的原码,反码和补码形式。(1)36原码00100100B反码00100100B补码00100100B(2)36原码10100100B反码11011011B补码11011100B(3)127原码01111111B反码01111111B补码01111111B(4)128原码10000000B反码01111111B补码10000000B(5)121原码11111001B反码10000110B补码10000111B6对于二进制数10001001B,若理解为无符号数,则该数对应十进制数为多少若理解为有符号数,则该数对应十进制为多少若理解为BCD数,则该数对应十进制数为多少答10001001B无符号数137;有符号数9;BCD数89;7对下列各组数进行“与”,“或”和“异或”运算。(1)10101010和00000000与00000000或10101010异或10101010201110111和10001000与00000000或11111111异或11111111311101110和01110111与01100110或11111111异或10011001400111100和11110000与00110000或11111100异或110011008PROTEUSISIS的工作界面中包含哪几个窗口菜单栏中包含哪几个选项答PROTEUSISIS的工作界面主要包括标题栏、菜单栏、工具栏、状态栏、方位控制按钮、仿真进程控制按钮、对象选择窗口,原理图编辑窗口和预览窗口等。主菜单栏包含文件、查看、编辑、工具、设计、图形、源文件、调试、库、模板、系统、帮助选项。9利用ISIS模块开发单片机系统需要经过哪几个主要步骤答(1)启动ISIS(2)绘制电路原理图;(3)输入单片机程序;(4)进行源代码调试;(5)仿真运行。10何谓PCB利用ARES模块进行PCB设计需要经过哪几个主要步骤答PCB(PRINTEDCIRCUITBOARD),中文名称为印制电路板,又称印刷电路板、印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。利用ARES模块进行PCB设计的主要步骤(1)启动ARES;(2)元器件布局;(3)元器件布线;(4)铺铜;(5)三维效果图;(6)CADCAM输出。第2章MCS51单片机结构及原理习题1MSC51单片机内部由哪些功能部件组成,各有什么功能答以80C51单片机为例,其内部功能部件有控制器是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能;运算器根据控制器发来的信号,执行算术逻辑运算操作;存储器包括程序存储和数据存储器;定时器计数器2个16位定时器/计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统可响应三个内部中断源和两个外部中断源的中断请求;输入输出接口4个8位并行口和一个全双工串行口;2MSC51单片机外部引脚的名称是什么各有什么功能答1电源及晶振引脚VCC40脚5V电源引脚VSS20脚接地引脚XTAL119脚;外接晶振引脚(内置放大器输入端)XTAL218脚外接晶振引脚(内置放大器输出端)2控制引脚RST/VPD9为复位/备用电源引脚ALE/PROG30为地址锁存使能输出/编程脉冲输入PSEN29输出访问片外程序存储器读选通信号EA/VPP31外部ROM允许访问/编程电源输入3并行I/O口引脚P00P07(3932脚)P0口;P10P17(18脚)P1口;P20P27(2128脚)P2口;P30P37(1017脚)P3口。351系列单片机的封装有哪些类型请说明每一种封装引脚之间的距离。答51系列单片机的封装有40引脚双列直插封装(DIPDUALINLINEPACKAGE),引脚之间的距离是100MIL254MM;44引脚方形扁平封装(QFPQUADFLATPACKAGE)方式,引脚之间的距离是254MM;44引脚带引线的塑料芯片载体PLCCPLASTICLEADEDCHIPCARRIER。4什么是复位单片机复位电路有哪几种,工作原理分别是什么答复位使单片机恢复原始默认状态的操作。单片机复位电路有上电复位电路,由电阻和电容构成,通过上电时,电容相当于短路而使复位引脚在晶振有效的情况下保持2个机器周期的高电平;按钮开关复位电路,由两个电阻的分压构成,通过手工按下按钮,使复位引脚在晶振有效的情况下保持2个机器周期的高电平。5通常的微机系统存储器结构有哪几种MCS51单片机存储器属于哪一类CS51可寻址多大空间答通常的微机系统存储器结构有两种结构,即哈佛结构和冯诺依曼结构也叫普林斯顿结构,MCS51单片机存储器属于,MCS51可寻址空间是两个64KB,即64KB的程序存储空间和64KB的数据存储空间。6片内RAM中低128个单元划分为哪三个主要部分各部分的主要功能是什么答片内RAM中低128个单元划分为三个部分工作寄存器区(00H1FH),四组,每组8个,可作用工作寄存器切换使用;可位寻址区(20H2FH),16B,位地址为00H7FH,用作为按位寻址的空间;用户RAM区(30H7FH),80B,用作普通RAM单元或堆栈。7程序状态字寄存器PSW各位的定义是什么答程序状态字寄存器PSW各位的定义如下PSW7进/借位标志CY,加法有进位时置1,减法有借位时置1;PSW6辅助进位标志AC,加法运算低四位向高上四位有进位时置1;PSW5、PSW1用户标志位F0和用户标志位F1,保存用户的位数据;PSW4、PSW3工作寄存器选择控制位RS1和RS0,00至11分别选择四组工作之一作为当前工作寄存器PSW2溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常乘法运算结果大于255即乘积在BA中,或除法运算除数为0时置1PSW0奇偶标志位P,累加器A中1的个数为奇数时置1。8什么是时钟周期什么是机器周期什么是指令周期当振荡频率为12MHZ时,一个机器周期为多少微秒答时钟周期又叫振荡周期或拍,用P表示,是MCS51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。机器周期由12个时钟周期构成,完成一个基本操作指令周期是执行一条指令所需的时间,根据指令的复杂性,可由14个机器周期构成。当振荡频率为12MHZ时,一个机器周期为1微秒。9P0、P1、P2和P3口的结构和功能分别是什么答P0口的每一位由1个锁存器、2个三态缓冲器、1个输出控制电路(非门X、与门、电子开关MUX、输出驱动电路构成,其功能既可以作为通用I/O口实现输入/输出功能,也可作为单片机地址线的低8位和数据线实现外部扩展功能。在用作输入输出口时,需外接上拉电阻。P1口的每一位由1个锁存器、1个场效应管驱动器V和2个三态门缓冲器构成,其作用是用作输入输出口P2口的每一位由1个锁存器、2个三态缓冲器、1个输出控制单元、1个输出驱动单元构成,其功能是用作输入输出口,或地址总线的高8位。P3口的每一位由1个锁存器、2个三态缓冲器、1个第二功能控制单元、1个输出驱动单元构成,其作用是用作输入输出口或第二功能。1080C51单片机引脚ALE的作用是什么当80C51不外接存储器时,ALE上的输出的脉冲频率是多少答80C51单片机引脚ALE的作用是对外部存储寻址时锁存P0口输出的低8位地址,当80C51不外接存储器时,ALE上的输出的脉冲频率是FOSC/6。第3章单片机的汇编语言与程序设计习题1MCS51单片机有哪几种寻址方式适用于什么地址空间答MCS51单片机有7种寻址方式直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。直接寻址方式操作数的地址由指令直接给出,适用于片内RAM的所有地址空间;如MOVA,68HMOVA,PSW寄存器寻址方式指令给出的是寄存器的编码,操作数在编码指定的寄存器中,适用于片内00H至1FH的32个字节,用R0,R7表示,通过PSW的RS1和RS0选择组号确定对应32个字节中的其中8个,还有累加器A,以及乘除法指令中的A和B寄存器,位寻址方式中的布尔累加器C;MOVA,R1MULABINCDPTR寄存器间接寻址方式指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片内RAM的全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;如MOVA,R0MOVA,R1MOVXA,DPTR立即寻址方式操作数本身在指令中直接,给出适用于用8位立即数对片内RAM所有地址单元赋值,也可用16位立即数对DPTR赋值;如MOVA,0E2HMOVDPTR,2000H变址寻址方式以DPTR或PC作为基地址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器ROM,仅有三条指令如下MOVCA,ADPTRMOVCA,APCJMPADPTR位寻址方式指令中直接给出操作数所在单元的位地址,适用于片内RAM中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有SFR中的每个位地址空间;如MOVC,7FHMOVF0,CMOVC,ACC7相对寻址方式为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令128至127字节范围内的地址空间。如SJMPSTARTHERESJMPHERE;等效于SJMP2MCS51单片机的PSW程序状态字中无ZERO零标志位,怎样判断某内部数据单元的内容是否为零答MCS51单片机的PSW程序状态字中无ZERO零标志位,判断某内部数据单元的内容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。3编程将内部RAM的20H30H单元内容清零。解设一个片内RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片内RAM单元,每传送一个字节,地址指针加1,直到达到地址为30H或达到计数器规定的17个字节为止。程序1MOVR0,20H设地址指针初值CLRA累加器清0CONTMOVR0,A置0指针所指单元INCR0地址指针加1CJNER0,31H,CONT指针未超过终点则继续SJMP暂停程序2MOVR0,20H设地址指针初值CLRA累加器清0MOVR7,17计数器赋初值,从20H到30H共17个字节CONTMOVR0,A置0指针所指单元INCR0地址指针加1DJNZR7,CONT计数器减1,非0,则继续SJMP暂停4编程查找内部RAM的32H41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零。解设一个片内RAM指针R0,先指向首地址32H,比较R0与0AAH,若相等,则退出循环,给50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给50H单元赋00H程序1MOVR0,32H设地址指针初值CONTCJNER0,0AAH,NEXT比较查找值与指针所指单元的值,不相等转移MOVA,0FFH相等,则准备好要赋的标志值0FFHSJMPDOWN转存到保存结果处NEXTINCR0修改地址指针CJNER0,42H,CONT若指针未越过终点,则继续MOVA,00H查找失败,则将00H存入结果标志单元DOWNMOV50H,A将比较结果标志存入50H单元SJMP暂停END程序2MOVR7,16计数器赋初值,从20H到30H共16个字节MOVR0,32H设地址指针初值CONTCJNER0,0AAH,NEXT比较查找值与指针所指单元的值,不相等转移MOVA,0FFH相等,则准备好要赋的标志值0FFHSJMPDOWN转存到保存结果处NEXTINCR0修改地址指针DJNZR7,CONT计数器减1,非0,则继续MOVA,00H查找失败,则将00H存入结果标志单元DOWNMOV50H,A将比较结果标志存入50H单元SJMP暂停END5查找20H4FH单元中出现00H的次数,并将查找结果存入50H单元。解从20H到4FH共48个字节MOVR7,48字节计数器赋初值MOVR0,20H设地址指针初值CONTCJNER0,00H,NEXT比较查找值与指针所指单元的值,不相等转移INCR6相等,0的个数计数器加1NEXTINCR0修改地址指针DJNZR7,CONT计数器减1,非0,则继续MOV50H,R6保存O的个数计数值到50H单元SJMP暂停ENDEND6已知A83H,R017H,17H34H,写出下列程序段执行之后的A中的内容。ANLA,17HORL17H,AXRLA,R0CPLAEND答ANLA,17HA03HORL17H,A17H001101000000001100110111XRLA,R0A000000110011011100110100CPLAA110010117已知单片机的晶振频率为12MHZ,分别设计延时为01S、1S的子程序。答已知单片机的晶振频率为12MHZ,则机器周期为1US,延时子程序是通过执行指令序列中机器周期数来达到,如果要01S,即100MS,也就是100000US,所以需要机器周期数达到100000。要延时达到1S,可通过对延时为01秒的子程序调用10次来实现。DELAY100MSMOVR6,2001个机器周期D1MOVR7,2501个机器周期D2NOP1个机器周期DJNZR7,D22个机器周期,3251753DJNZR6,D12个机器周期,1753213299792RET2个机器周期,199792299795,约100MSDELAY1SMOVR7,10计数10次1LOOPACALLDELAY100MS延时100MS子程序997952DJNZR7,LOOP未达到10次则继续102997952RET返回21029979529979928内部RAM从20H单元开始处有一数据块,以ODH为结束标志,试统计该数据块的长度,将该数据块送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。解从20H的指针用R0,从外部RAM7E01开始的指针用DPTR,计数器用R7MOVR7,0字节计数器赋初值MOVR0,20H设片内RAM地址指针初值MOVDPTR,7E01H设片外RAM地址指针初值CONTMOVA,R0取片内RAM中的一个字节MOVXDPTR,A存入片外RAM指针所指单元INCR7长度计数器加1INCR0片内RAM地址指针加1INCDPTR片外RAM地址指针加1CJNEA,0DH,CONT未达到结束标志MOVA,R7取块计数长度值MOVXDPTR,A保存SJMP暂停END9内部RAM从DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM1单元。解R7计数,R6保存累加和高8位,R0用作地址指针ORG0000HLJMPMAINORG100HSUMEQU30HDATAAEQU40HMAINMOVR7,10字节计数器赋初值MOVR0,DATAA设片内RAM地址指针初值CLRA累加器清0MOVR6,A累加结果的高8位CONTADDA,R0加RAM中的一个字节到ACCDAAJNCNEXT若无进位则不用管高8位INCR6有进位,高8位加1NEXTINCR0片内RAM地址指针加1DJNZR7,CONT未完继续MOVSUM,A保存低8位MOVSUM1,R6保存高8位SJMP暂停END10内部RAM从DATA1和DATA2单元开始处存放着两个等长的数据块,数据块的长度在LEN单元中。请编程检查这两个数据块是否相等,若相等,将0FFH写入RESULT单元,否则将0写入RESULT单元。解从DATA1开始的指针用R0,从DATA2开始的指针用R1,计数器用R7LENEQU10DATA1EQU30HDATA2EQU40HRESULTEQU50HMOVR7,LEN字节计数器赋初值MOVR0,DATA1设片内RAM地址指针初值MOVR1,DATA2设片外RAM地址指针初值CONTMOVA,R0取片内RAMR0所指的的一个字节MOV7FH,R1将R1所指单元内容取到片内RAM地址7FH中CJNEA,7FH,NOEQ比较,不相等则结束INCR0DATA1RAM地址指针加1INCR1DATA2RAM地址指针加1DJNZR7,CONT未完,继续MOVA,0FFH相等,准备写入FFHSJMPDOWN转写入结果处NOEQMOVA,0不相等,准备写入00HDOWNMOVRESULT,A保存比较结果标志SJMP暂停END11编制程序,将内部RAM中M1、M2、M3和M4单元中的无符号数XL、X2、X3和X4相加,并把和存入RO和R1R0中为高8位中。解M1EQU30HM2EQU40HM3EQU45HM4EQU4FHMOVA,M1取第一个数ADDA,M2与第二个数相加JNCNEXT1如果无进位,则转移至第三个相加MOVR0,1有进位,高8位置1NEXT1ADDA,M3与第三个数相加JNCNEXT2没有进位,则转至第四个数相加INCR0有进位,高8位加1NEXT2ADDA,M4与第四个数相加JNCNEXT3没有进位,则转至结束INCR0有进位,高8位再加1NEXT3MOVR1,A低8位保存到R1SJMP暂停END第4章单片机的C51语言习题1C语言的优点是什么C程序的主要结构特点是什么答C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。2C51语言的变量定义包含哪些关键因素为何这样考虑答C语言的变量定义格式如下存储种类数据类型存储类型变量名其中存储种类与标准C语言相同,包括自动型AUTO、外部型EXTERN、静态型STATIC、寄存器型REGISTER。数据类型除了包含标准C语言类型的字符型CHAR,整型INT,长整型LONG,浮点型FLOAT,双精度型DOUBLE外,还有二进制位型BIT,特殊功能寄存器型SFR,SFR可位寻址的位类型SBIT。存储类型包括片内RAM区DATA、片内可位寻址区BDATA,片内RAM间接寻址区IDATA,片外RAM页寻址区PDATA,片外RAM区XDATA、ROM区CODE。只所以比标准C语言多了存储类型,就是因为MCS51单片机的存储结构中有四个物理存储空间片内RAM、片内ROM,片外RAM,片外ROM,三个逻辑地址空间片内RAM,片外RAM,ROM,而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定存储类型。3C51与汇编语言的特点各有哪些怎样实现两者的优势互补答C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰富,编程工作量小,可使产品开发周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发;汇编指令无关,易于掌握,上手快。汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4指出下面程序的语法错误INCLUDEMAINAC;INTA7,CDELAY10VOIDDELAYCGARI;FORIOIMAINAC;/A和C必须先定义才可使用INTA7,C/缺分号,应该提在使用前说明DELAY10/延时子程序必须先定义,或先有函数原型说明VOIDDELAY/作为函数定义,有函数定义不能嵌套的问题,/即不能在一个函数内定义另一个函数,而且“”前不应有分号/作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体CGARI;/字符型应该是UNSIGNEDCHARFORIOIVOIDMAINPRAGMAASMMOVA,20HMOVB,35HMULABMOVDPTR,1234HMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,APRAGMAENDASM方法二单用C语言编程实现INCLUDEINCLUDEINTMOVDATACHARVOIDMAINUNSIGNEDINTXDATAXUNSIGNEDCHARPTR,A,BPTR0X25APTRPTR0X30BPTRXAB78051的片内数据存储器25H单元中存放有一个010的整数,编程求其平方根精确到5位有效数字,将平方根放到30H单元为首址的内存中。解方法一用C语言与汇编语言混合编程实现/用C语言编写的主函数MAINCINCLUDEINCLUDECHARGETDATACHARVOIDMAINCHARA0X25,CFLOATFCGETDATAAFSQRTC用汇编语言编写的取数据子函数,只有一个地址参数在R7中,返回值为指定地址单元中的内容,用R7返回主函数。PUBLIC_GETDATADESEGMENTCODERSEGDE_GETDATAMOVA,R7取地址参数MOVR0,AMOVA,R0MOVR7,A返回地址单元中的内容EXITRETEND方法二单用C语言编程实现/MAINCINCLUDEINCLUDEINTMOVDATACHARVOIDMAINCHARNCHARPTRFLOATPTR2FLOATFPTR0X25NPTRFSQRTNPTR20X30PTR2F8将外部RAM10H15H单元的内容传送到内部RAM10H15H单元。解方法一采用C语言与汇编语言混合编程/用C语言编写的主函数MAINCINCLUDECHARMOVDATACHAR,CHARVOIDMAINCHARA0X10,B0X06MOVDATAA,B用汇编语言编写的移动数据子函数MOVDATA,其中第一个参数在R7中为首地址,第二个参数在R5中为字节数PUBLIC_MOVDATADESEGMENTCODERSEGDE_MOVDATAMOVA,R7取参数MOVR0,ALOOPMOVXA,R0MOVR0,ADJNZR5,LOOPEXITRETEND方法二单用C语言编程实现/MAINCINCLUDEINTMOVDATACHARVOIDMAINCHARN6CHARPTR10X10CHARXDATAPTR2PTR20X20WHILENPTR2PTR19内部RAM20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。解方法一INCLUDEVOIDMAINUNSIGNEDINTPTR/设置一个内部RAM指针UNSIGNEDINTX,Y,ZPTR0X20/指向0X20单元XPTR/取第一个数PTR0X22/指向0X22单元YPTR/取第二个数ZXYXY/将两数中的较大者赋给ZPTR0X24/指向地址为0X24的目标单元PTRZ/将大数存入目标单元方法二INCLUDEINCLUDEVOIDMAINUNSIGNEDINTX,Y,ZXDBYTE0X20256DBYTE0X21YDBYTE0X22256DBYTE0X23ZXYXY/将两数中的较大者赋给ZDBYTE0X24Z/256DBYTE0X25Z256方法三INCLUDEUNSIGNEDINTX_AT_0X20UNSIGNEDINTY_AT_0X22UNSIGNEDINTZ_AT_0X24VOIDMAINZXYXY第4章单片机的C51语言习题1C语言的优点是什么C程序的主要结构特点是什么答C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。2C51语言的变量定义包含哪些关键因素为何这样考虑答C语言的变量定义格式如下存储种类数据类型存储类型变量名其中存储种类与标准C语言相同,包括自动型AUTO、外部型EXTERN、静态型STATIC、寄存器型REGISTER。数据类型除了包含标准C语言类型的字符型CHAR,整型INT,长整型LONG,浮点型FLOAT,双精度型DOUBLE外,还有二进制位型BIT,特殊功能寄存器型SFR,SFR可位寻址的位类型SBIT。存储类型包括片内RAM区DATA、片内可位寻址区BDATA,片内RAM间接寻址区IDATA,片外RAM页寻址区PDATA,片外RAM区XDATA、ROM区CODE。只所以比标准C语言多了存储类型,就是因为MCS51单片机的存储结构中有四个物理存储空间片内RAM、片内ROM,片外RAM,片外ROM,三个逻辑地址空间片内RAM,片外RAM,ROM,而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定存储类型。3C51与汇编语言的特点各有哪些怎样实现两者的优势互补答C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰富,编程工作量小,可使产品开发周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发;汇编指令无关,易于掌握,上手快。汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4指出下面程序的语法错误INCLUDEMAINAC;INTA7,CDELAY10VOIDDELAYCGARI;FORIOIMAINAC;/A和C必须先定义才可使用INTA7,C/缺分号,应该提在使用前说明DELAY10/延时子程序必须先定义,或先有函数原型说明VOIDDELAY/作为函数定义,有函数定义不能嵌套的问题,/即不能在一个函数内定义另一个函数,而且“”前不应有分号/作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体CGARI;/字符型应该是UNSIGNEDCHARFORIOIVOIDMAINPRAGMAASMMOVA,20HMOVB,35HMULABMOVDPTR,1234HMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,APRAGMAENDASM方法二单用C语言编程实现INCLUDEINCLUDEINTMOVDATACHARVOIDMAINUNSIGNEDINTXDATAXUNSIGNEDCHARPTR,A,BPTR0X25APTRPTR0X30BPTRXAB78051的片内数据存储器25H单元中存放有一个010的整数,编程求其平方根精确到5位有效数字,将平方根放到30H单元为首址的内存中。解方法一用C语言与汇编语言混合编程实现/用C语言编写的主函数MAINCINCLUDEINCLUDECHARGETDATACHARVOIDMAINCHARA0X25,CFLOATFCGETDATAAFSQRTC用汇编语言编写的取数据子函数,只有一个地址参数在R7中,返回值为指定地址单元中的内容,用R7返回主函数。PUBLIC_GETDATADESEGMENTCODERSEGDE_GETDATAMOVA,R7取地址参数MOVR0,AMOVA,R0MOVR7,A返回地址单元中的内容EXITRETEND方法二单用C语言编程实现/MAINCINCLUDEINCLUDEINTMOVDATACHARVOIDMAINCHARNCHARPTRFLOATPTR2FLOATFPTR0X25NPTRFSQRTNPTR20X30PTR2F8将外部RAM10H15H单元的内容传送到内部RAM10H15H单元。解方法一采用C语言与汇编语言混合编程/用C语言编写的主函数MAINCINCLUDECHARMOVDATACHAR,CHARVOIDMAINCHARA0X10,B0X06MOVDATAA,B用汇编语言编写的移动数据子函数MOVDATA,其中第一个参数在R7中为首地址,第二个参数在R5中为字节数PUBLIC_MOVDATADESEGMENTCODERSEGDE_MOVDATAMOVA,R7取参数MOVR0,ALOOPMOVXA,R0MOVR0,ADJNZR5,LOOPEXITRETEND方法二单用C语言编程实现/MAINCINCLUDEINTMOVDATACHARVOIDMAINCHARN6CHARPTR10X10CHARXDATAPTR2PTR20X20WHILENPTR2PTR19内部RAM20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。解方法一INCLUDEVOIDMAINUNSIGNEDINTPTR/设置一个内部RAM指针UNSIGNEDINTX,Y,ZPTR0X20/指向0X20单元XPTR/取第一个数PTR0X22/指向0X22单元YPTR/取第二个数ZXYXY/将两数中的较大者赋给ZPTR0X24/指向地址为0X24的目标单元PTRZ/将大数存入目标单元方法二INCLUDEINCLUDEVOIDMAINUNSIGNEDINTX,Y,ZXDBYTE0X20256DBYTE0X21YDBYTE0X22256DBYTE0X23ZXYXY/将两数中的较大者赋给ZDBYTE0X24Z/256DBYTE0X25Z256方法三INCLUDEUNSIGNEDINTX_AT_0X20UNSIGNEDINTY_AT_0X22UNSIGNEDINTZ_AT_0X24VOIDMAINZXYXY第5章单片机的中断系统习题1什么是中断、中断源、中断优先级和中断嵌套答中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收及外部事件(如键盘按键动作)等进行自动的检测判断。当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。引发中断的事件称为中断源。将中断事件按轻重缓急分若干级别叫中断优先级。允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。2什么叫中断源MCS51有哪些中断源各有什么特点它们的中断向量地址分别是多少答中断源即引发中断的事件。MCS51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。外部中断源是由引脚的触发信号引起的中断,定时器中断源是由于定时器计数器的溢出引发的中断,串行口是由于串行通信的发送或接收引发的中断。外部中断0,定时器T0,外部中断1,定时器T1,串行口五个中断源的中断向量地址依次为0003H,000BH,0013H,001BH,0023H。3MCS51中断的中断响应条件是什么答1中断源有中断请求;2此中断源允许位为1,即中断源可以向CPU发中断请求;3CPU开总中断,即EA1;4无同级或者更高级中断正在服务4MCS51的中断响应过程是怎样的答1将相应的中断优先级状态触发器置1,以阻断后来的同级和低级中断请求;2由硬件清除相应的中断请求标志,串行口的发送和接收中断除外;3执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入PC;5编写出外部中断1为下跳沿触发的中断初始化程序。解VOIDINT1_INITIT11EA1EX11/IE0X84/IE|0X846有一外部中断源,接入端,当其中有中断请求时,要求CPU把一个从内部RAM30H单元开始的50个字节的数据块传送到外部RAM从1000H开始的连续存储区。请编写对应的程序。解INCLUDEVOIDMAINIT01EA1EX01WHILE1VOIDINTX0INTERRUPT0USING1CHARPTR10X30CHARXDATAPTR20X1000FORI0ISBITP1_1P11VOIDTIMER0INTERRUPT1USING1P1_1P1_1VOIDMAINP1_10TMOD0X02TH056TL056IE0X82TR01FOR8设FOSC6MHZ,要求每隔50MS,从内部RAM以30H开始的数据存储区传送一个字节数据到外部RAM以2000H开始的连续存储区,共传送50个数据。要求采用定时器T1以方式2实现定时,数据传送在中断服务程序中完成。解FOSC6MHZ,机器周期12/6106S2US,T1工作在方式2时,最大定时时间为512US,要定时50MS,可以计数100次,每次定时500US来实现,方式2定时500US需计数250次,故其时间常数为2562506。INCLUDECHARINTCNT0CHARMOVCNT0CHARPTR10X30CHARXDATAPTR20X2000VOIDTIMER1INTERRUPT3USING1INTCNTIFINTCNT100IFMOCNTCHARLED_MOD0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07VOIDINT0_SRVVOIDINTERRUPT0USING1/外部中断0处理程序P0LED_MOD0VOIDINT1_SRVVOIDINTERRUPT2USING2/外部中断1处理程序CHARINTNUMINTNUMP2SWITCHINTNUMCASE0XFEP0LED_MOD1BREAKCASE0XFDP0LED_MOD2BREAKCASE0XFBP0LED_MOD3BREAKCASE0XF7P0LED_MOD4BREAKCASE0XEFP0LED_MOD5BREAKCASE0XDFP0LED_MOD6BREAKCASE0XBFP0LED_MOD7VOIDMAINEA1EX01EX11P00WHILE1第6章单片机的定时器/计数器习题1MCS51系列的8051单片机内有几个定时/计数器每个定时/计数器有几种工作方式如何选择答MCS51系列的8051单片机内有2个定时/计数器,即T0和T1,每个都可以编程为定时器或计数器,T0有四种工作方式方式013位、方式116位、方式2可自动装入初值的8位、方式3两个8位,T1有三种工作方式与T0相同的前三种,通过对TMOD的设置选择,其高四位选择T1,低四位选择T0。2如果采用的晶振频率为3MHZ,定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少答如果采用的晶振频率为3MHZ,机器周期为121/31064US,由于定时/计数器TO工作在方式0、1和2时,其最大的计数次数为8192、65536和256所以,其最大定时时间分别是方式0为81924US32768MS、方式1为655364US262144MS、方式2为2564US1024US。3定时/计数器TO作为计数器使用时,其计数频率不能超过晶振频率的多少答由于定时/计数器TO作为计数器使用时,是对外部引脚输入的脉冲进行计数,CPU在每个机器周期采样一次引脚,当前一次采样为高电平,后一次采样为低电平,则为一次有效计数脉冲,所以如果晶振频率为FOSC,则其采样频率FOSC/12,两次采样才能决定一次计数有效,所以计数频率不能超过FOSC/24。4简单说明定时/计数器在不同工作模式下的特点。答方式0为13位的定时/计数器,由THX的8位和TLX的低5位构成、方式1为16位的定时/计数器,由THX的8位和TLX的8位构成,方式2为8位的定时/计数器,TLX为加1计数器,THX为计数初值寄存器。方式3只能用于T0,是将T0的低8位用作一个独立的定时/计数器,而高8位的TH0用作一个独立的定时器,并借用T1的TR1和TF1作为高8位定时器的启停控制位和溢出标志位。5定时器工作在方式2时有何特点适用于什么应用场合答定时器工作在方式2时是一个可自动装入时间常数初值的8位定时/计数器,TLX为加1计数器,THX为计数初值寄存器。由于其恢复初值由硬件自动完成,所以当需要反复计数时,用方式2可以方便地实现精确的定时。6一个定时器的定时时间有限,如何采用两个定时器的串行定时来实现较长时间的定时答一个定时器的定时时间有限,可采用两个定时器的串行定时来实现较长时间的定时,比如,当FOSC12MHZ时,单个定时/计数器采用方式1的最大定时时间为65536MS,此时若用另一个定时/计数器按方式1进行溢出次数计数,在定时器溢出中断时,给计数器发一个计数脉冲,且两者均为方式一,则两者串行可达到的定时时间为6553665536MS4294967296MS。7设MCS51单片机的晶振频率为12MHZ,

温馨提示

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

评论

0/150

提交评论