单片机原理和应用第三版林立张俊亮课后答案解析知识讲解

上传人:沈*** 文档编号:86556684 上传时间:2022-05-07 格式:DOC 页数:29 大小:212KB
收藏 版权申诉 举报 下载
单片机原理和应用第三版林立张俊亮课后答案解析知识讲解_第1页
第1页 / 共29页
单片机原理和应用第三版林立张俊亮课后答案解析知识讲解_第2页
第2页 / 共29页
单片机原理和应用第三版林立张俊亮课后答案解析知识讲解_第3页
第3页 / 共29页
资源描述:

《单片机原理和应用第三版林立张俊亮课后答案解析知识讲解》由会员分享,可在线阅读,更多相关《单片机原理和应用第三版林立张俊亮课后答案解析知识讲解(29页珍藏版)》请在装配图网上搜索。

1、第一章习题1. 什么是单片机?单片机和通用微机相比有何特点?答:单片机又称为单片微计算机,它的结构特点是将微型计算机的基本功能部件(如中央处理器(cpu、存储器、输入接口、输岀接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。 虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。与通用的 微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能 化。2. 单片机的发展有哪几个阶段?8位单片机会不会过时,为什么?答:单片机诞生于1971年,经历了 SCM MCU SOC三大阶段,早期的SCM单片机都是8位或4 位的。其中最成功

2、的是INTEL的8031,此后在8031上发展岀了 MCS5係列MCI系统。基于这一系统 的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始岀现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单 片机的高端地位,并且进入主流市场。然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推岀高性能、大容量、多功能的新型8位单片机。目前,单片机正朝着高性能和多品种发展,但由于MCS-51系列8位单片机仍能满足绝大多数应用领

3、域的需要,可以肯定,以 MCS-5係列为主的8位单片机,在当前及以后的相当一段时间内仍将 占据单片机应用的主导地位。3. 举例说明单片机的主要应用领域。答:单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过 程控制等领域,大致可分如下几个范畴:智能仪器单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪 器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、 厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能 化、微型化,且功能比起采用电子或数字电路更加强大。

4、例如精密的测量设备(电压表、功率计,示 波器,各种分析仪)。工业控制单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单 片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控 系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与 计算机联网构成二级控制系统等。家用电器现在的家用电器广泛采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等。网络和通信现代的单片机普遍具备通信接口, 可以很方便地与计算机进行数据通信,为在计算机网络和通信 设备间

5、的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电 话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电 话,集群移动通信,无线电对讲机等。医用设备领域单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备 及病床呼叫系统等等。模块化系统某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员 了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理):就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM,由

6、微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了 体积,简化了电路,降低了损坏、错误率,也方便于更换。汽车电子 单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等。此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分 广泛的用途。4. 将十进制数37转换为二进制,BCD码和十六进制数,并对转换结果进行对比分析。答:37=(100101)B=(25)H ; BCD 码为 0011 0111 ;可见,同一个数用不同进制表

7、示,其结果也不同。5. 写岀下列十进制数在 8位微机中的原码,反码和补码形式。(1) +36原码 0010 0100B反码 0010 0100B补码 0010 0100B(2) -36原码 1010 0100B反码 1101 1011B补码 1101 1100B(3) +127原码 0111 1111B反码 0111 1111B补码 0111 1111B(4) -128原码 1000 0000B反码 0111 1111B补码 1000 0000B(5) -121原码 1111 1001B反码 1000 0110B补码 1000 0111B6. 对于二进制数1000 1001B,若理解为无符号数

8、,则该数对应十进制数为多少?若理解为有符号数,则该数对应十进制为多少?若理解为BCD数,则该数对应十进制数为多少?答:1000 1001B无符号数:137有符号数:-9 ;BCD数: 89;7. 对下列各组数进行“与”,“或”和“异或”运算。(1) 1010 1010 和 0000 0000与 0000 0000或 1010 1010异或 1010 1010(2) 0111 0111 和 1000 1000与 0000 0000或 1111 1111异或 1111 1111(3)1110 1110 和 0111 0111与 0110 0110或 1111 1111异或 1001 1001 00

9、11 1100 和 1111 0000与 0011 0000或 1111 1100异或 1100 11008. Proteus ISIS 的工作界面中包含哪几个窗口?菜单栏中包含哪几个选项?答:Proteus ISIS的工作界面主要包括标题栏、菜单栏、工具栏、状态栏、方位控制按钮、仿真进程控制按钮、对象选 择窗口,原理图编辑窗口和预览窗口等。主菜单栏包含文件、查看、编辑、工具、设计、图形、源文件、调试、库、模板、系统、帮助选 项。9. 利用ISIS模块开发单片机系统需要经过哪几个主要步骤?答:(1)启动 ISIS;(2)绘制电路原理图;(3)输入单片机程序;(4)进行源代码调试;(5)仿真运行

10、。10. 何谓PCB?利用ARES模块进行PCB设计需要经过哪几个主要步骤?答:PCB(Printed Circuit Board ),中文名称为印制电路板,又称印刷电路板、印刷线路板, 是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印 刷术制作的,故被称为“印刷”电路板。禾U用ARES模块进行PCB设计的主要步骤:(1)启动ARES ( 2)元器件布局;(3)元器件布线;(4)铺铜;(5)三维效果图;(6) CADCA输岀。第2章MCS-51单片机结构及原理 习题1. MSC- 51单片机内部由哪些功能部件组成,各有什么功能?答:以51单片机为例,其内

11、部功能部件有:控制器:是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号, 完成指令所规定的功能;运算器:根据控制器发来的信号,执行算术逻辑运算操作;存储器:包括程序存储和数据存储器;定时器计数器:2个16位定时器/计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统:可响应三个内部中断源和两个外部中断源的中断请求;输入输岀接口: 4个8位并行口和一个全双工串行口;2. MSC-51单片机外部引脚的名称是什么?各有什么功能?答:(1)电源及晶振引脚VCC(40脚):+5V电源引脚VSS(20脚):接地引脚XTAL1(19脚);外接晶振引脚(内置放大器输入端)XTA

12、L2(18脚):外接晶振引脚(内置放大器输岀端)(2)控制引脚RST/VPD(9)为复位/备用电源引脚为地址锁存使能输出/编程脉冲输入:输出访问片外程序存储器读选通信号:外部ROM允许访问/编程电源输入(3)并行I/O 口引脚P0.0 P0.7 ( 3932 脚)P0 口;P1.0 P1.7 (1 8 脚)P1 口;P2.0 P2.7 ( 21 28 脚)P2 口;P3.0P3.7 (1017 脚)P3 口。3. 51系列单片机的封装有哪些类型?请说明每一种封装引脚之间的距离。答:51系列单片机的封装有:CYACF0RS1RS00VFlP40引脚双列直插圭寸装(DIPdual in-line

13、package ),引脚之间的距离是 100mil();44引脚方形扁平封装(QFPquad flat package )方式,引脚之间的距离是;44引脚带引线的塑料芯片载体 PLCC(Plastic Leaded Chip Carrier) 。4 什么是复位?单片机复位电路有哪几种,工作原理分别是什么?答:复位一一使单片机恢复原始默认状态的操作。单片机复位电路有:上电复位电路,由电阻和电容构成,通过上电时,电容相当于短路而使复位 引脚在晶振有效的情况下保持 2个机器周期的高电平;按钮开关复位电路,由两个电阻的分压构成, 通过手工按下按钮,使复位引脚在晶振有效的情况下保持2个机器周期的高电平。

14、5. 通常的微机系统存储器结构有哪几种?MCS-51单片机存储器属于哪一类?CS-51可寻址多大空间?答:通常的微机系统存储器结构有两种结构,即哈佛结构和冯诺依曼结构(也叫普林斯顿结构),MCS-51单片机存储器属于,MCS-51可寻址空间是两个64KB即64KB的程序存储空间和64KB的数据 存储空间。6 片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?答:片内RAMH氐128个单元划分为三个部分:工作寄存器区(00H-1FH,四组,每组8个,可作用工作寄存器切换使用;可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间;用户RAMx(

15、30H-7FH), 80B,用作普通RAM单元或堆栈。7 程序状态字寄存器 PSW各位的定义是什么?答:程序状态字寄存器 PSW各位的定义如下:PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 PSW.7进/ 借位标志 CY 加法有进位时 置1,减法有借位时置1;PSW.6:辅助进位标志AC加法运算低四位向高上四位有进位时置1; PSW.5、PSW.1用户标志位F0和用户标志位F1,保存用户的位数据;PSW.4 PSW.3工作寄存器选择控制位 RS1和RSQ 00至11分别选择四组工作之一作为当前工 作寄存器PSW.2 :溢岀标志位OV有符号数加、

16、减运算结果有溢岀或乘除上结果异常 (乘法运算结果大于 255即乘积在BA中,或除法运算除数为0)时置1 PSW.0奇偶标志位P,累加器A中1的个数为奇数 时置1。8 什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHZ寸,一个机器周期为多少微秒?答:时钟周期又叫振荡周期或拍,用 P表示,是MCS-51单片机中最小的时间单位,在一个时钟 周期内,CPU完成一个最基本的动作。机器周期:由12个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由14个机器周期构成。当振荡频率为12MHz时,一个机器周期为1微秒。9. PO、P1、P2和P3 口的

17、结构和功能分别是什么?答: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个输岀驱动单元构成,

18、其作用是用作输入输岀口或第二功能。10.51单片机引脚ALE的作用是什么?当51不外接存储器时,ALE上的输岀的脉冲频率是多少?答:51单片机引脚ALE的作用是对外部存储寻址时锁存 P0 口输岀的低8位地址,当51不外接 存储器时,ALE上的输岀的脉冲频率是fosc/6。第3章单片机的汇编语言与程序设计习题1. MCS-51单片机有哪几种寻址方式?适用于什么地址空间?答:MCS-51单片机有7种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变 址寻址、位寻址、相对寻址。直接寻址方式:操作数的地址由指令直接给岀,适用于片内RAM的所有地址空间;如MOVA, 68HMOV A PSW寄

19、存器寻址方式:指令给岀的是寄存器的编码,操作数在编码指定的寄存器中,适用于片内00H至1FH的32个字节,用R0,R7表示,通过PSW勺RS1和RS0选择组号确定对应32个字节中的其 中8个,还有累加器A,以及乘除法指令中的 A和B寄存器,位寻址方式中的布尔累加器 C;MOV A R1MUL ABINC DPTR寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于 片内RAM勺全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;女口 MOV A R0MOV A R1MOVX A DPTR立即寻址方式:操作数本身在指令中直接,给岀适用于用8位立即数对片内

20、RAM所有地址单元赋 值,也可用16位立即数对DPTR赋值; 如MOV A #0E2HMOV DPTR #2000H变址寻址方式:以DPTF或 PC作为基地址寄存器,以累加器 A作为变址寄存器,将基址寄存器与 变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器 ROM仅有三条指令如下:MOVC A A+DPTRMOVC A A+PCJMP A+DPTR位寻址方式:指令中直接给岀操作数所在单元的位地址,适用于片内RAM中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有SFR中的每个位地址空 间;如MOV C 7FH

21、MOV F0 CMOV C ACC.7相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指 令-128至+ 127字节范围内的地址空间。女口SJMP STARTHERE SJMP HERE;等效于: SJMP $2. MCS-51单片机的PSV程序状态字中无ZERO零)标志位,怎样判断某内部数据单元的内容是否 为零?答:MCS-51单片机的PSW程序状态字中无ZERO零)标志位,判断某内部数据单元的内容是否为 零是能通过取数到 A累加器,再判断A中的每一位是否为零来确定其值是否为零。3 编程将内部RAM的 20H-30H单元内容清零。解:设一个片内RAM指针R0

22、,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依 次将A中的零值传送到指针所指的片内 RAM单元,每传送一个字节,地址指针加 1,直到达到地址为 30H或达到计数器规定的17个字节为止。 程序1 :MOV R0,#20H ;设地址指针初值CLR A ;累加器清0CONT: MOV R0,A置0指针所指单元INC R0 ;地址指针加1CJNE R0,#31H,CONT指针未超过终点则继续SJMP $ ;暂停程序2:MOV R0,#20H ;设地址指针初值CLR A ;累加器清0MOV R7,#17 ;计数器赋初值,从20H到30H共17个字节CONT: MOV R0,A置0指针所指

23、单元 INC R0 ;地址指针加1DJNZ R7, CONT ;计数器减1, 非 0,则继续SJMP $ ;暂停4编程查找内部RAM的 32H41H单元中是否有0AAH这个数据,若有这一数据,则将 50H单元 置为0FFH否则将50H单元清零。解:设一个片内RAM指针R0,先指向首地址32H,比较只与#0AAH,若相等,则退岀循环,给 50H单元赋0FFH,若不相等,则 R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给 50H单元赋00H程序1:MOV R0,#32H ;设地址指针初值CONT:CJNER0,#0AAH,NEX比较查找值与指

24、针所指单元的值,不相等转移MOVA,#0FFH ;相等,则准备好要赋的标志值 0FFHSJMP DOWN转存到保存结果处NEXT: INC R0 ;修改地址指针CJNE R0,#42H,CONT若指针未越过终点,则继续MOV A,#00H ;查找失败,则将 00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入 50H单元SJMP $ ;暂停END程序2:MOV R7,#16 ;计数器赋初值,从20H到30H共16个字节MOV R0,#32H ;设地址指针初值CONT: CJNE R0,#0AAH,NEXTW较查找值与指针所指单元的值,不相等转移MOV A,#0FFH ;

25、相等,则准备好要赋的标志值 OFFHSJMP DOWN转存到保存结果处NEXT: INC R0 ;修改地址指针DJNZ R7,CONT ;计数器减1, 非 0,则继续MOV A,#00H ;查找失败,则将 00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入 50H单元SJMP $ ;暂停END5 .查找20H4FH单元中岀现00H的次数,并将查找结果存入 50H单元。 解:从20H到4FH共 48个字节MOV R7,#48 ;字节计数器赋初值MOV R0,#20H ;设地址指针初值CONT: CJNE R0,#00H,NEXT比较查找值与指针所指单元的值,不相等转移I

26、NC R6 ;相等,0的个数计数器加1NEXT: INC R0 ;修改地址指针DJNZ R7,CONT ;计数器减1, 非 0,则继续MOV 50H,R6 ;保存O的个数计数值到50H单元SJMP $ ;暂停END END6. 已知A=83H R0=17H (17H)=34H,写岀下列程序段执行之后的A中的内容。ANL A,#17HORL 17H,AXRL A,R0CPL AEND答:ANL A,#17H ;A=03HORL 17H,A ;(17H)=0011 0100 V 0000 0011=0011 0111 XRL A,R0 ;A= 0000 0011 V 0011 0111 =0011

27、 0100 CPL A ;A=1100 10117 .已知单片机的晶振频率为 12MHz分别设计延时为0.1s、1s的子程序。 答:已知单片机的 晶振频率为12MHz则机器周期为1us,延时子程序是通过执行指令序列中机器周期数来达到,如果 要0.1s,即100ms也就是100000us,所以需要机器周期数达到100000。要延时达到1S,可通过对延时为0.1秒的子程序调用10次来实现。DELAY100MS: MOV R6,#200 ;1 个机器周期D1: MOV R7,#250 ;1个机器周期D2: NOP ;1个机器周期DJNZ R7,D2 ;2 个机器周期,3*25仁753DJNZ R6,

28、D1 ;2 个机器周期,(1+753+2)*132=99792RET ;2 个机器周期,1+99792+2=99795,约 100msDELAY1S: MOV R7,#10 ;计数 10 次 1LOOP: ACALL DELAY100MS延时 100ms 子程序 99795+2DJNZ R7,LOOP ;未达到 10 次则继续 10*(2+99795+2) RET ; 返回 2+10*(2+99795+2)=9979928 内部RAM从 20H单元开始处有一数据块,以 ODF为结束标志,试统计该数据块的长度,将该 数据块送到外部数据存储器 7E01H开始的单元,并将长度存入 7E00H单元。解

29、:从20H的指针用R0,从外部RAM7E0开始的指针用DPTR计数器用R7 MOV R7,#0 ;字节计 数器赋初值MOV R0,#20H ;设片内RAM地址指针初值MOV DPTR,#7E01H设片外RAM地址指针初值CONT: MOV A,R0取片内RAh中的一个字节MOVX DPTR,A存入片外RAM旨针所指单元INC R7 ;长度计数器加1INC R0 ;片内RAM地址指针加1INC DPTR ;片外RAM地址指针加1CJNE A,#0DH,CONT未达到结束标志MOV A,R7 ;取块计数长度值MOVX DPTR,A保存SJMP $ ;暂停END9 .内部RAM从 DATA开始的区域

30、中存放着10个单字节十进制数,求其累加和,并将结果存入SUM 和口 SUM+单元。解:R7计数,R6保存累加和高8位,R0用作地址指针ORG 0000HLJMP MAINORG 100HSUM EQU 30HDATAA EQU 40HMAIN: MOV R7,#10 ;字节计数器赋初值MOV R0,#DATAA设片内RAM地址指针初值CLR A ;累加器清0MOV R6,A ;累加结果的高8位CONT: ADD A,R0加RAh中的一个字节到 ACCDA AJNC NEXT ;若无进位则不用管高8位INC R6 ;有进位,高8位加1NEXT: INC R0 ;片内RAM地址指针加1DJNZ R

31、7,CONT ;未完继续MOV SUM,A保存低8位MOV SUM+1,R6保存高8位SJMP $ ;暂停END10. 内部RAM从 DATA1和DATA2单元开始处存放着两个等长的数据块, 数据块的长度在LEN单元 中。请编程检查这两个数据块是否相等,若相等,将 0FFH写入RESULT元,否则将0写入RESULT 单元。解:从DATA1开始的指针用R0,从DATA2开始的指针用R1,计数器用R7 LEN EQU 10DATA1 EQU 30HDATA2 EQU 40HRESULT EQU 50HMOV R7,#LEN ;字节计数器赋初值MOV R0,#DATA1设片内RAM地址指针初值MO

32、V R1,#DATA2设片外RAM地址指针初值CONT: MOV A,R0取片内RAM R0所指的的一个字节MOV 7FH,R1将R1所指单元内容取到片内 RAM地址7FH中CJNE A,7FH,NOEQ ;比较,不相等则 结束INC R0 ;DATA1 RAM地址指针加1INC R1 ;DATA2 RAM地址指针加1DJNZ R7,CONT ;未完,继续MOV A,#0FFH ;相等,准备写入FFHSJMP DOWN转写入结果处NOEQ: MOV A,#0 ;不相等,准备写入00HDOWN: MOV RESULT,A呆存比较结果标志SJMP $ ;暂停END11. 编制程序,将内部 RAM

33、M1、M2 M3和M4单元中的无符号数 xl、x2、x3和x4相加,并把 和存入RO和R1(R0中为高8位)中。解:M1 EQU 30HM2 EQU 40HM3 EQU 45HM4 EQU 4FHMOV A,M1 ;取第一个数ADD A,M2 ;与第二个数相加JNC NEXT1 ;如果无进位,则转移至第三个相加MOV R0,#1 ;有进位,高8位置1NEXT1: ADD A,M3 ;与第三个数相加JNC NEXT2 ;没有进位,则转至第四个数相加INC R0 ;有进位,高8位加1NEXT2: ADD A,M4 ;与第四个数相加JNC NEXT3 ;没有进位,则转至结束INC R0 ;有进位,高

34、8位再加1NEXT3: MOV R1,A ;低 8 位保存到 R1SJMP $ ;暂停END第4章单片机的C51语言习题1. C语言的优点是什么? C程序的主要结构特点是什么?答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数 据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由 主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件, 也可以是汇编语言文件,C程序可与汇编语言混合编程。2. C51语言的变量定义包含哪些关键因素?为何这样考虑?答:C语言的变量定

35、义格式如下:存储种类数据类型存储类型变量名其中:存储种类与标准C语言相同,包括:自动型(auto)、外部型(extern)、静态型(static)、寄存器 型(register)。数据类型除了包含标准 C语言类型的字符型(char),整型(int),长整型(Iong),浮点型(float), 双精度型(double)夕卜,还有二进制位型(bit),特殊功能寄存器型(sfr) ,SFR可位寻址的位类型(sbit)。存储类型包括:片内 RAh区(data)、片内可位寻址区(bdata),片内RAh间接寻址区(idata),片 外 RAM页寻址区(pdata),片外 RAME (xdata)、ROM

36、区(code)。只所以比标准C语言多了存储类型,就是因为MC&51单片机的存储结构中有四个物理存储空间 (片内RAM片内ROM片外RAM片外ROM)三个逻辑地址空间(片内RAM片外RAM ROM)而且有 多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在 位置和寻址方式明确指定存储类型。3. C51与汇编语言的特点各有哪些?怎样实现两者的优势互补?答:C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰 富,编程工作量小,可使产品开发周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发; 汇编指令无关,易于掌握,上手快。

37、汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较 复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4 指出下面程序的语法错误:#in cludemai n()a=C;int a=7,Cdelay(10)void delay();cgar i ;for(i=O; i=255;” +”);答:#in cludemai n()a=C; /a和C必须先定义才可使用int a=7,C /缺分号,应该提在使用前说明de

38、lay(10) / 延时子程序必须先定义,或先有函数原型说明void delay();/作为函数定义,有函数定义不能嵌套的问题,/即不能在一个函数内定义另一个函数,而且“ ”前不应有分号/作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体cgar i ; / 字符型应该是 unsigned charfor(i=O; i=255;” +”);/” +” 应改成 i+/主函数没有结束,缺” ”5定义变量a, b, c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型 变量,c为指向int 型xdata 区的指针。答:char bdata a;float xdata b;

39、int xdata *c;6. 编程将8051的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中 (任意位置)。解:方法一:用嵌入式汇编语言实现#in cludevoid mai n() #pragma asmMOV A,20HMOV B,35HMUL ABMOV DPTR,#1234HMOVX DPTR,AINC DPTRMOV A,BMOVX DPTR,A#pragma en dasm方法二:单用C语言编程实现#in clude#in cludeint movdata(char);void mai n()un sig ned int xdata x;un sig n

40、ed char *ptr,a,b;ptr=0x25;a=*ptr;ptr=0x30;b=*ptr;x=a*b;7. 8051的片内数据存储器25H单元中存放有一个010的整数,编程求其平方根(精确到5位 有效数字),将平方根放到30H单元为首址的内存中。解:方法一:用C语言与汇编语言混合编程实现/用C语言编写的主函数 MAIN.C#in clude#in cludechar getdata(char);void mai n()char a=0x25,c;float f;c=getdata(a);f=sqrt(c);;用汇编语言编写的取数据子函数,只有一个地址参数在 R7中,返回值为指定地址单元

41、中的内容,用R7返回主函数。PUBLIC _GETDATADE SEGMENT CODERSEG DE_GETDATA: MOV A,R7 取地址参数MOV R0,AMOV A,R0MOV R7,A ;返回地址单元中的内容EXIT: RETEND方法二:单用C语言编程实现/MAIN.C#in clude#in cludeint movdata(char);void mai n()char n;char *ptr;float *ptr2;float f;ptr=0x25;n=*ptr;f=sqrt( n);ptr2=0x30;*ptr2=f;8将外部RAM10H15H单元的内容传送到内部 RAM

42、10H15H单元。 解:方法一:采用 C语言 与汇编语言混合编程/用C语言编写的主函数 MAIN.C#in cludechar movdata(char,char);void mai n()char a=0x10,b=0x06;movdata(a,b);;用汇编语言编写的移动数据子函数MOVDATA其中第一个参数在R5中为字节数PUBLIC _MOVDATADE SEGMENT CODERSEG DE_MOVDATA: MOV A,R7 取参数MOV R0,ALOOP: MOVX A,R0MOV R0,ADJNZ R5,LOOPEXIT: RETEND方法二:单用C语言编程实现/MAIN.C#

43、in cludeint movdata(char);void mai n()char n=6;char *ptr1=Ox1O;char xdata *ptr2;ptr2=0x20;while( n-)*ptr2+=*ptr1+;9.内部RAM 20H 21H和22H、23H单元分别存放着两个无符号的 24H和25H单元。解:方法一:#in cludevoid mai n()unsigned int *ptr; /设置一个内部 RAM指针un sig ned int x,y,z;ptr=0x20; / 指向 0x20 单元x=*ptr; / 取第一个数ptr=0x22; / 指向 0x22 单元

44、y=*ptr; / 取第二个数z=(xy)?x:y; / 将两数中的较大者赋给z ptr=0x24; / 指向地址为0x24的目标单元*ptr=z; /将大数存入目标单元方法二:R7中为首地址,第二个参数在16位数,将其中的大数置于#in clude#in cludevoid mai n()un sig ned int x,y,z;x=DBYTE0X20*256+DBYTE0X21; y=DBYTE0X22*256+DBYTE0X23;z=(xy)?x:y; /将两数中的较大者赋给zDBYTE0X24=z/256;DBYTE0X25=z%256;方法三:#in cludeun sig ned

45、int x _at_ 0x20;un sig ned int y _at_ 0x22;un sig ned int z _at_ 0x24;void mai n()z=(xy)?x:y;第4章单片机的C51语言习题1. C语言的优点是什么? C程序的主要结构特点是什么?答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数 据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由 主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件, 也可以是汇编语言文件,C程序可与

46、汇编语言混合编程。2. C51语言的变量定义包含哪些关键因素?为何这样考虑?答:C语言的变量定义格式如下:存储种类数据类型存储类型变量名其中:存储种类与标准C语言相同,包括:自动型(auto)、外部型(extern)、静态型(static)、寄存器 型(register) 。数据类型除了包含标准 C语言类型的字符型(char),整型(int),长整型(long),浮点型(float), 双精度型(double)夕卜,还有二进制位型(bit),特殊功能寄存器型(sfr) ,SFR可位寻址的位类型(sbit)。存储类型包括:片内 RAh区(data)、片内可位寻址区(bdata),片内RAh间接寻

47、址区(idata),片 外 RAM页寻址区(pdata),片外 RAME (xdata)、ROM区(code)。只所以比标准C语言多了存储类型,就是因为MC&51单片机的存储结构中有四个物理存储空间 (片内RAM片内ROM片外RAM片外ROM)三个逻辑地址空间(片内RAM片外RAM ROM)而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻 址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定存储类型。3. C51与汇编语言的特点各有哪些?怎样实现两者的优势互补?答:C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰 富,编程工作量小,可使产品开发

48、周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发; 汇编指令无关,易于掌握,上手快。汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较 复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4 指出下面程序的语法错误:#in cludemai n()a=C;int a=7,Cdelay(10)void delay();cgar i ;for(i=O; i=255;” +”);答:#in cludemai

49、n()a=C; /a和C必须先定义才可使用int a=7,C /缺分号,应该提在使用前说明delay(10) /延时子程序必须先定义,或先有函数原型说明void delay();/作为函数定义,有函数定义不能嵌套的问题,/即不能在一个函数内定义另一个函数,而且“ ”前不应有分号/作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体cgar i ; / 字符型应该是 unsigned charfor(i=O; i=255;” +”);/” +” 应改成 i+/主函数没有结束,缺” ”5定义变量a,b,c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型 变量,c为指向i

50、nt 型xdata 区的指针。答: char bdata a;float xdata b;int xdata *c;6. 编程将8051的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中 (任意位置)。解:方法一:用嵌入式汇编语言实现#in cludevoid mai n() #pragma asmMOV A,20HMOV B,35HMUL ABMOV DPTR,#1234HMOVX DPTR,AINC DPTRMOV A,BMOVX DPTR,A#pragma en dasm方法二:单用C语言编程实现#in clude#in cludeint movdata(char

51、);void mai n()un sig ned int xdata x;un sig ned char *ptr,a,b;ptr=0x25;a=*ptr;ptr=0x30;b=*ptr;x=a*b;7. 8051的片内数据存储器25H单元中存放有一个010的整数,编程求其平方根(精确到5位 有效数字),将平方根放到30H单元为首址的内存中。解:方法一:用C语言与汇编语言混合编程实现/用C语言编写的主函数 MAIN.C#in clude#in cludechar getdata(char);void mai n()char a=0x25,c;float f;c=getdata(a);f=sqr

52、t(c);用汇编语言编写的取数据子函数, 只有一个地址参数在 R7中,返回值为指定地址单元中的内容, 用R7返回主函数。PUBLIC _GETDATADE SEGMENT CODERSEG DE_GETDATA: MOV A,R7 取地址参数MOV R0,AMOV A,R0MOV R7,A ;返回地址单元中的内容EXIT: RETEND方法二:单用C语言编程实现/MAIN.C#in clude#in cludeint movdata(char);void mai n()char n;char *ptr;float *ptr2;float f;ptr=0x25;n=*ptr;f=sqrt( n)

53、;ptr2=0x30;*ptr2=f;8. 将外部 RAM 10H- 15H单元的内容传送到内部 RAM 10H-15H单元。解:方法一:采用C语言与汇编语言混合编程/用C语言编写的主函数 MAIN.C#in cludechar movdata(char,char);void mai n()char a=0x10,b=0x06;movdata(a,b);用汇编语言编写的移动数据子函数MOVDATA其中第一个参数在R7中为首地址,第二个参数在R5中为字节数PUBLIC _MOVDATADE SEGMENT CODERSEG DE_MOVDATA: MOV A,R7 取参数MOV R0,ALOOP

54、: MOVX A,R0MOV R0,ADJNZ R5,LOOPEXIT: RETEND方法二:单用C语言编程实现/MAIN.C#in cludeint movdata(char);void mai n()char n=6;char *ptr1=0x10;char xdata *ptr2;ptr2=0x20;while( n-)*ptr2+=*ptr1+;9内部RAM 20H 21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。解:方法一:#in cludevoid mai n()unsigned int *ptr; / 设置一个内部 RAM指针un s

55、ig ned int x,y,z;ptr=0x20; / 指向 0x20 单元x=*ptr; /取第一个数ptr=0x22; / 指向 0x22 单元y=*ptr; /取第二个数z=(xy)?x:y; /将两数中的较大者赋给zptr=0x24; / 指向地址为0x24的目标单元*ptr=z; /将大数存入目标单元方法二:#in clude#in cludevoid mai n()un sig ned int x,y,z;x=DBYTE0X20*256+DBYTE0X21;y=DBYTE0X22*256+DBYTE0X23;z=(xy)?x:y; /将两数中的较大者赋给zDBYTE0X24=z/

56、256;DBYTE0X25=z%256;方法三:#in cludeun sig ned int x _at_ 0x20;un sig ned int y _at_ 0x22;un sig ned int z _at_ 0x24;void mai n()z=(xy)?x:y;第5章 单片机的中断系统 习题1 什么是中断、中断源、中断优先级和中断嵌套?答:中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收 及外部事件(如键盘按键动作)等进行自动的检测判断。当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个弓I脚上电平的变化,一个脉冲

57、沿的发生或计数器 的计数溢岀等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这 样的过程称为中断。引发中断的事件称为中断源。将中断事件按轻重缓急分若干级别叫中断优先级。允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。2什么叫中断源? MCS-51有哪些中断源?各有什么特点?它们的中断向量地址分别是多少? 答:中断源即引发中断的事件。MCS-51单片机有5个中断源,它们是外部中断 0,定时器T0,外部中断1,定时器T1,串行口。 外部中断源是由引脚的触发

58、信号引起的中断,定时器中断源是由于定时器计数器的溢岀引发的中断,串行口是由于串行通信的发送或接收引发的中断。外部中断0,定时器T0,外部中断1,定时器T1,串行口五个中断源的中断向量地址依次为:0003H, 000BH 0013H, 001BH 0023H。3. MCS-51中断的中断响应条件是什么?答:(1)中断源有中断请求;(2) 此中断源允许位为1,即中断源可以向CPU发中断请求;(3) CPU开总中断,即EA=1;(4) 无同级或者更高级中断正在服务4. MCS-51的中断响应过程是怎样的?答:(1)将相应的中断优先级状态触发器置 1,以阻断后来的同级和低级中断请求;(2) 由硬件清除

59、相应的中断请求标志,串行口的发送和接收中断除外;(3) 执行一条硬件LCALL指令,即把程序计数器 PC的内容压入堆栈保存,再将相应的中断服务 程序的入口地址送入PC;5编写岀外部中断1为下跳沿触发的中断初始化程序。解:void In t1_i nit()IT1=1;EA=1;EX1=1; IE=0x84; IE|=0x84;6 有一外部中断源,接入INT0端,当其中有中断请求时,要求 CPU把一个从内部RAM30H单元 开始的50个字节的数据块传送到外部 RAM从 1000H开始的连续存储区。请编写对应的程序。解:#in cludevoid mai n()IT0=1 ;EA=1;EX0=1;while;void intxO() in terrupt 0 using 1char * ptr1=0x30;char xdata * ptr2=0x1000;for(i=0;i50;i+) *ptr2+=*ptr1+;7设fosc = 12MHz利用定时器,TO(工作在方式2)在P1.1引脚上获取输岀周期为 0.4ms的方 波信号,定时器溢岀时采用中断方式处理,请编写,T0的初始化程序及中断服务程序。解:f

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

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

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


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