单片机原理及应用_第二版(林立_张俊亮编著)课后习题2.pdf

上传人:无*** 文档编号:91535088 上传时间:2023-05-27 格式:PDF 页数:60 大小:5.99MB
返回 下载 相关 举报
单片机原理及应用_第二版(林立_张俊亮编著)课后习题2.pdf_第1页
第1页 / 共60页
单片机原理及应用_第二版(林立_张俊亮编著)课后习题2.pdf_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《单片机原理及应用_第二版(林立_张俊亮编著)课后习题2.pdf》由会员分享,可在线阅读,更多相关《单片机原理及应用_第二版(林立_张俊亮编著)课后习题2.pdf(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、4位的。其中最成功的是I N T E L的8 0 3 1,此后在8 0 3 1上发展出了 M C S 51系列M C U系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了 1 6位单片机,但因为性价比不理想并未得到很广泛的应用。9 0年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随 着I N T E L i 9 6 0系列特别是后来的A R M系列的广泛应用,3 2位单片机迅速取代1 6位单片机的高端地位,并且进入主流市场。然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推出高性能、大容量、多功能的新型8位单片机。目前,单片机正朝

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

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

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

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

7、 0011 0111;可见,同一个数用不同进制表示,其结果也不同。5.写出下列十进制数在8位微机中的原码,反码和补码形式。(1)+36原码 0010 0100B反码 0010 0100B补码 0010 0100B(2)-3 6原码 1010 0100B反码 1101 1011B补码 1101 1100B(3)+127原码 0111 1111B反码 0111 HUB补码 o iii HUB(4)-128原码 1000 0000B反码 o iii HUB补码 1000 0000B(5)-121原码 m i IOOIB反码 1000 0110B补码 1000 0111B6.对于二进制数1000 1O

8、 O 1B,若理解为无符号数,则该数对应十进制数为多少?若理解为有符号数,则该数对应十进制为多少?若理解为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

9、1001(4)0011 1100 和1111 0000与 0011 0000或 1111 1100异或 1100 11008 .P r o t eu s I SI S的工作界面中包含哪几个窗口?菜单栏中包含哪几个选项?答:Proteus ISIS的工作界面主要包括标题栏、菜单栏、工具栏、状态栏、方位控制按钮、仿真进程控制按钮、对象选择窗口,原理图编辑窗口和预览窗口等。主菜单栏包含文件、查看、编辑、工具、设计、图形、源文件、调试、库、模板、系统、帮助选项。isis UHTITLED-ISIS Professional 目回区F ile Vi ew Edi t Library Tools Desi

10、 gn Graph SoTirce Debug Template System Help口 百IH 胆山 昌图 固谓 至 口 电 工 力11氢/麟户3名 於 去 国 理4心 八|130I睡预览窗口/口04CAO5+挑选元件按钮:淀管理按钮.原理图编辑窗口模型选择工S栏.方 向 工 具 栏.9 .利 用I SI S模块开发单片机系统需要经过哪几个主要步骤?答:(1)启 动ISIS;(2)绘制电路原理图;(3)输入单片机程序;(4)进行源代码调试;(5)仿真运行。10.何谓PCB?利用ARES模块进行PCB设计需要经过哪几个主要步骤?答:PCB(Printed Circuit Board),中文名

11、称为印制电路板,又称印刷电路板、印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印刷术制作的,故 被 称 为“印刷”电路板。利 用ARES模块进行PCB设计的主要步骤:(1)启动 ARES;(2)元器件布局;(3)元器件布线;(4)铺铜;(5)三维效果图;(6)C A D C A M 输出。第2章MCS-51单片机结构及原理习题1.M SC51单片机内部由哪些功能部件组成,各有什么功能?答:以8 0 c 5 1单片机为例,其内部功能部件有:控制器:是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能;

12、运算器:根据控制器发来的信号,执行算术逻辑运算操作;存储器:包括程序存储和数据存储器;定时器计数器:2个1 6位定时器/计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统:可响应三个内部中断源和两个外部中断源的中断请求;输入输出接口:4个8位并行口和一个全双工串行口;2.M S C 5 1单片机外部引脚的名称是什么?各有什么功能?答:(1)电源及晶振引脚V C C(4 0脚):+5 V电源引脚V S S(2 0脚):接地引脚X T A L M 1 9脚);外 接 晶 振 引 脚(内置放大器输入端)X T A L 2(1 8脚):外 接 晶 振 引 脚(内置放大器输出端)(2)控制引脚R

13、ST/LD为复位/备用电源引脚 A L E/P R 0 G(3 0)为地址锁存使能输出/编程脉冲输入一P S E N(2 9):输出访问片外程序存储器读选通信号-E A/V P P (3 1):外部R O M允许访问/编程电源输入(3)并 行I/O 口引脚PO.O-PO.7(3932 脚)PO 口;Pl.0Pl.7(1 8 脚)P1 口;P2.0P2.7(2128 脚)P2 口;P3.0P3.7(1017 脚)P3 口。3.51系列单片机的封装有哪些类型?请说明每一种封装引脚之间的距离。答:51系列单片机的封装有:4 0 引脚双列直插封装(DIP-dual in-line package),引

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

15、通常的微机系统存储器结构有哪儿种?M C S-5 1单片机存储器属于哪一类?C S-5 1可寻址多大空间?答:通常的微机系统存储器结构有两种结构,即哈佛结构和冯诺依曼结构(也叫普林斯顿结构),M C S-5 1单片机存储器属于,M C S-5 1可寻址空间是两个6 4 K B,即6 4 K B的程序存储空间和6 4 K B的数据存储空间。6.片 内R A M中 低1 2 8个单元划分为哪三个主要部分?各部分的主要功能是什么?答:片内R A M中 低1 2 8个单元划分为三个部分:工作寄存器区(0 0 H-1 F H),四组,每 组8个,可作用工作寄存器切换使用;可位寻址区(2 0 H-2 F

16、H),1 6 B,位地址为0 0 H-7F H,用作为按位寻址的空间;用户R A M区(3 0 H-7F H),8 0 B,用作普通R A M单元或堆栈。7.程序状态字寄存器PS W各位的定义是什么?答:程序状态字寄存器PS W各位的定义如下:PSK.7 RSK.8 FSLS FSC.4 KK.3 WK.2 fS L l K E.0CYACF0RS1RSO0VFLPPS W.7:进/借位标志C Y,加法有进位时置1,减法有借位时置1;PS W.6:辅助进位标志A C,加法运算低四位向高上四位有进位时置1;PS W.5、PS W.1:用户标志位F 0 和用户标志位F 1,保存用户的位数据;PS

17、W.4、PS W.3:工作寄存器选择控制位R S 1 和 R S O,0 0 至 1 1 分别选择四组工作之一作为当前工作寄存器PS W.2 :溢出标志位0 V,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于2 5 5 即乘积在B A 中,或除法运算除数为0)时置1PS W.0:奇偶标志位P,累加器A中 1 的个数为奇数时置l o8 .什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为1 2 M H z 时 一,一个机器周期为多少微秒?答:时钟周期又叫振荡周期或拍,用 P 表示,是 M C S-5 1 单片机中最小的时间单位,在一个时钟周期内,C PU 完成一个最基本

18、的动作。机器周期:由 1 2 个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由广4 个机器周期构成。当振荡频率为1 2 M H z 时 一,一个机器周期为1 微秒。9 .P0、Pl、P2 和 P3 口的结构和功能分别是什么?答:P0 口的每一位由1 个锁存器、2 个三态缓冲器、1 个输出控制电 路(非 门 X、与门、电子开关M U X、输出驱动电路构成,其功能既可以作为通用I/O 口实现输入/输出功能,也可作为单片机地址线的低8位和数据线实现外部扩展功能。在用作输入输出口时一,需外接上拉电阻。P1 口的每一位由1个锁存器、1个场效应管驱动器V和2个三态

19、门缓冲器构成,其作用是用作输入输出口P2 口的每一位由1个锁存器、2个三态缓冲器、1个输出控制单元、1个输出驱动单元构成,其功能是用作输入输出口,或地址总线的高8位。P3 口的每一位由1个锁存器、2个三态缓冲器、1个第二功能控制单元、1个输出驱动单元构成,其作用是用作输入输出口或第二功能。10.80C51单片机引脚ALE的作用是什么?当80C51不外接存储器时,ALE上的输出的脉冲频率是多少?答:80C51单片机引脚ALE的作用是对外部存储寻址时锁存P0 口输出的低8位地址,当80C51不外接存储器时,ALE上的输出的脉冲频率是 fosc/6o第3章 单片机的汇编语言与程序设计习题1.MCS-

20、51单片机有哪儿种寻址方式?适用于什么地址空间?答:M C S-5 1 单片机有7 种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。直接寻址方式:操作数的地址由指令直接给出,适用于片内R A M的所有地址空间;如 M O V A,6 8 HM O V A,PS W寄存器寻址方式:指令给出的是寄存器的编码,操作数在编码指定的寄存器中,适用于片内0 0 H 至 1 F H 的3 2 个字节,用 R 0,R 7表示,通过PS W 的 R S 1 和 R S O 选择组号确定对应3 2 个字节中的其中8个,还有累加器A,以及乘除法指令中的A 和 B寄存器,位寻址

21、方式中的布尔累加器C;M O V A,R IM UL A BI N C DP TR寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片内R A M 的全部空间,其中5 2 系列中的8 0 H 至 F F H 只能用寄存器间接寻址;如 M O V A,R 0M O V A,R 1M O VX A,DP TR立即寻址方式:操作数本身在指令中直接,给出适用于用8 位立即数对片内R A M 所有地址单元赋值,也可用1 6位立即数对DP TR 赋值;如M O VA,#0 E 2 HM O V DP TR,#2 0 0 0 H变址寻址方式:以DP TR或P C作为基地址寄

22、存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器R O M,仅有三条指令如下:M O VC A,A+DP TRM O VC A,A+P CJ M P A+DP TR位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片内R A M中地址2 0 H至2 F H中 的1 6个字节中的1 2 8个位地址空间和8 0 H至F F H中地址中可以被8整除的所有S F R中的每个位地址空间;如M O V C,7F HM O V F O,CM O V C,A CC.7相对寻址方式:为相对转移指令而设,指令中直接给出转移的相

23、对偏移量,其转移目标在当前指令T 28至+1 2 7字节范围内的地址空间。如S J M P S TA R TH E R E:S J M P H E R E;等效于:S J M P$2 .M CS-5 1 单片机的P S W程序状态字中无Z E R O(零)标志位,怎样判断某内部数据单元的内容是否为零?答:M CS-5 1 单片机的P S W程序状态字中无Z E R O (零)标志位,判断某内部数据单元的内容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。3 .编程将内部R A M 的 2 0 H 3 0 H 单元内容清零。解:设一个片内R A M 指针R 0,先指

24、向首地址2 0 H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片内R A M单元,每传送一个字节,地址指针加1,直到达到地址为3 0 H 或达到计数器规定的1 7个字节为止。程序1:M O VR O,#2 0 H;设地址指针初值CL RA;累加器清0CO N T:M O V R 0,A;置 0 指针所指单元I N CR O;地址指针加1CJ N E R O,#3 1 H,CO N T;指针未超过终点则继续S J M P$;暂停程序2:M O V R O,#2 0 H ;设地址指针初值CL R A ;累加器清0M O VR 7,#1 7;计数器赋初值,从 2 0 H

25、到 3 0 H 共 1 7个字节CO N T:M O V R 0,A ;置 0 指针所指单元I N C R 0;地址指针加1DJ N Z R 7,CO N T;计数器减1,非 0,则继续S J M P$;暂停4.编程查找内部R A M 的 3 2 H4 1 H 单元中是否有O A A H 这个数据,若有这一数据,则将5 0 H 单元置为O F F H,否则将5 0 H 单元清零。解:设一个片内R A M 指针R 0,先指向首地址3 2 H,比较 R 0 与#O A A H,若相等,则退出循环,给 5 0 H 单元赋O F F H,若不相等,则 R 0 加 1 为继续比较下一个字节做准备,直到达

26、到地址为4 1 H 或达到计数器规定的 1 6个字节为止还没找到,则给5 0 H 单元赋0 0 H程序1:M O V R O,#3 2 H ;设地址指针初值CO N T:CJ N E R O,#O A A H,N E X T;比较查找值与指针所指单元的值,不相等转移M O V A,#O F F H ;相等,则准备好要赋的标志值O F F HS J M P DO WN ;转存到保存结果处N E X T:I N C R O;修改地址指针CJ N E R O,#4 2 H,CO N T;若指针未越过终点,则继续M O VA,#0 0 H;查找失败,则将O O H 存入结果标志单元DO WN:M O

27、V5 0 H,A;将比较结果标志存入5 0 H 单元S J M P$;暂停E N D程序2:M O VR 7,#1 6;计数器赋初值,从 2 0 H 到 3 0 H 共1 6个字节M O VR O,#3 2 H;设地址指针初值CO N T:CJ N E R 0,#O A A H,N E X T;比较查找值与指针所指单元的值,不相等转移M O VA,#O F F H;相等,则准备好要赋的标志值O F F HS J M P DO WN;转存到保存结果处N E X T:I N CR O;修改地址指针DJ N Z R 7,CO N T;计数器减1,非 0,则继续M O VA,#0 0 H;查找失败,则

28、将0 0 H 存入结果标志单元DO WN:M O V5 0 H,A;将比较结果标志存入5 0 H 单元S J M P$;暂停E N D5.查找2 0 H4 F H 单元中出现O O H 的次数,并将查找结果存入5 0 H 单元。解:从 2 0 H 至 lj 4 F H 共 4 8 个字节M O VR 7,#4 8;字节计数器赋初值M O VR O,#2 0 H;设地址指针初值CO N T:CJ N E R 0,#0 0 H,N E X T;比较查找值与指针所指单元的值,不相等转移I N CR 6;相等,。的个数计数器加1N E X T:I N CR 0;修改地址指针DJ N Z R 7,CO

29、N T;计数器减1,非 0,则继续M O V5 0 H,R 6;保 存 0的个数计数值到5 0 H 单元S J M P s;暂停E N DE N D6.已知A=8 3 H,R 0=1 7H,(1 7H)=3 4 H,写出下列程序段执行之后的A中的内容。A N L A,#1 7HO R L 1 7H,AX R L A,R 0CP L AE N D答:A N L A,#1 7H ;A=0 3 HO R L 1 7H,A ;(1 7H)=0 0 1 1 0 1 0 0 V 0 0 0 00 0 1 1=0 0 1 1 0 1 1 1_ XRL A,R0;A=0000 0011 V 0011 0111

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

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

32、元。解:从2 0 H的指针用R 0,从外部R A M 7E 0 1开始的指针用D P T R,计数器用R 7M O VR 7,#0;字节计数器赋初值M O VR O,#2 0 H;设片内R A M地址指针初值M O VD P T R,#7E 0 1 H ;设片外R A M地址指针初值C O N T:M O VA,R 0;取片内R A M中的一个字节M O V XD P T R,A;存入片外R A M指针所指单元I N CR 7;长度计数器加1I N CR O;片内R A M地址指针加1I N CD P T R;片外R A M地址指针加1C JN E A,#O D H,C O N T;未达到结束

33、标志M O VA,R 7;取块计数长度值M O V XD P T R,A;保存S JM Ps;暂停E N D9 .内部R A M从D A T A开始的区域中存放着1 0个单字节十进制数,求其累加和,并将结果存入S U M和S U M+1单元。解:R 7计数,R 6保存累加和高8位,R 0用作地址指针0 R G0 0 0 0 HL JM P M A I N0 R G1 0 0 HS U M E Q U3 0 HD A T A A E Q U4 0 HM A I N:M O VR 7,#1 0;字节计数器赋初值M O VR O,#D A T A A;设片内R A M地址指针初值C L RA;累加器

34、清0M O VR 6,A;累加结果的高8位C O N T:A D DA,R 0;加R A M中的一个字节到A C CD AAJN CN E X T;若无进位则不用管高8位I N CR 6;有进位,高8位加1N E X T:I N CR O;片内R A M地址指针加1D JN Z R 7,C O N T;未完继续M O VS U M,A;保存低8位M O VS U M+1,R 6;保存高8位S JM P$;暂停E N D1 0.内部R A M从D A T A 1和D A T A 2单元开始处存放着两个等长的数据块,数据块的长度在L E N单元中。请编程检查这两个数据块是否相等,若相等,将0 F

35、F H写入R E S U L T单元,否则将0写入R E S U L T单元。解:从D A T A 1开始的指针用R O,从D A T A 2开始的指针用R 1,计数器用R 7L E N E Q U1 0D A T A 1 E Q U3 0 HD A T A 2 E Q U4 0 HR E S U L T E Q U5 0 HE N DM O VR 7,#L E N;字节计数器赋初值M O VR O,#D A T A 1;设片内R A M地址指针初值M O VR I,#D A T A 2;设片外R A M地址指针初值C O N T:M O VA,R 0;取片内R A M R 0所指的的一个字节

36、M O V7F H,R 1;将R 1所指单元内容取到片内R A M地址7 F H中C JN E A,7F H,N O E Q;比较,不相等则结束I N CR O;D A T A 1 R A M地址指针加1I N CR I;D A T A 2 R A M地址指针加1D JN ZR 7,C O N T;未完,继续M O VA,#O F F H;相等,准备写入F F HS JM PD O W N;转写入结果处N O E Q:M O VA,#0;不相等,准备写入0 0 HD O W N:M O VR E S U L T,A;保存比较结果标志S JM P$;暂停1 1.编制程序,将内部R A M 中 M

37、 l、M 2、M 3 和 M 4 单元中的无符号数x l、x 2、x 3 和 x 4 相加,并把和存入R O 和 R I (R O 中为高8 位)中。解:M l E Q U3 0 HM 2 E Q U4 0 HM 3 E Q U4 5 HM 4 E Q U4 F HM O VA,M l;取第一个数A D DA,M 2;与第二个数相加JN CN E X T 1;如果无进位,则转移至第三个相加M O VR 0,#l;有进位,高8 位置1N E X T 1:A D DA,M 3;与第三个数相加JN CN E X T 2;没有进位,则转至第四个数相加I N CR O;有进位,高 8 位加1N E X

38、T 2:A D DA,M 4;与第四个数相加JN CN E X T 3;没有进位,则转至结束I N CR O;有进位,高 8 位再加1N E X T 3:M O VR I,A;低8 位保存到R 1S JM P$;暂停E N D第 4 章单片机的C 5 1 语言习题1.C 语言的优点是什么?C 程序的主要结构特点是什么?答:c 语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和

39、c 语言源文件,也可以是汇编语言文件,C 程序可与汇编语言混合编程。2.C 5 1 语言的变量定义包含哪些关键因素?为何这样考虑?答:C 语言的变量定义格式如下:存储种类数据类型 存储类型变量名其中:存储种类与标准C语言相同,包括:自动型(a u t o)、外部型(ex t ern)静态型(s t a t i c)、寄存器型(reg i s t er)。数据类型除了包含标准C 语言类型的字符型(ch a r),整型(i n t),长整型(lo n g),浮点型(f lo a t),双精度型(do u b le)外,还有二进制位型(b i t),特殊功能寄存器型(s f r),SF R 可位寻址

40、的位类型(s b i t)。存储类型包括:片 内 R AM区(da t a)、片内可位寻址区(b da t a),片内R AM间接寻址区(i da t a),片外R AM页寻址区(p da t a),片外R AM区(x da t a)R O M 区(co de)o只所以比标准C 语言多了存储类型,就是因为MC S-5 1单片机的存储结构中有四个物理存储空间(片内RA M 片内R O M,片外R AM,片外R O M),三个逻辑地址空间(片内R AM,片 外R AM,R O M),而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定

41、存储类型。3.C 5 1与汇编语言的特点各有哪些?怎样实现两者的优势互补?答:C 5 1是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰富,编程工作量小,可使产品开发周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发;汇编指令无关,易于掌握,上手快。汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4.指出下面程序的语法错误:

42、#in c l u d e m a in ()a=C;in t a=7,Cd e l a y(1 0)vo id d e l a y ();c ga r i;f o r(i=0;i=2 5 5 ;)答:#in c l u d e m a in ()a=C;/a 和 C必须先定义才可使用in t a=7,C 缺分号,应该提在使用前说明d e l a y(l O)延时子程序必须先定义,或先有函数原型说明vo id d e l a y ();作为函数定义,有函数定义不能嵌套的问题,即不能在一个函数内定义另一个函数,而 且“”前不应有分号作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体c

43、ga r i;字符型应该是 u n sign e d c ha rf o r(i=0;i=2 5 5;+”);/+”应改成 i+主函数没有结束,缺 “5 .定义变量a,b,c,其中a 为内部R A M 的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c 为指向in t 型 xd a t a 区的指针。答:c ha r b d a t a a;f l o a t xd a t a b;in t xd a t a *c;6 .编程将8 0 5 1 的内部数据存储器2 0 H 单元和3 5 H 单元的数据相乘,结果存到外部数据存储器中(任意位置)。解:方法一:用嵌入式汇编语言实现#includ

44、evoid main()#pragma asmMOV A,20HMOV B,35HMUL ABMOV DPTR,#1234HMOVX DPTR,AINC DPTRMOV A,BMOVX DPTR,A#pragma endasm方法二:单用c语言编程实现#in c l u d e#in c l u d e in t m o vd a t a(c ha r);vo id m a in()(u n sign e d in t xd a t a x;u n sign e d c ha r *pt r,a,b;pt r=0 x2 5;a=*pt r;pt r=0 x3 0;b=*pt r;x=a*b;)

45、7.8 0 5 1的片内数据存储器2 5 H单元中存放有一个。1 0的整数,编程求其平方根(精确到5位有效数字),将平方根放到3 0 H单元为首址的内存中。解:方法一:用C语言与汇编语言混合编程实现用C语言编写的主函数M A I N.C#in c l u d e#in c l u d e c ha r ge t d a t a(c ha r);vo id m a in ()c ha r a=0 x2 5,c;f l o a t f;c=ge t d a t a(a);f=sq r t(c););用汇编语言编写的取数据子函数,只有一个地址参数在R 7中,返回值为指定地址单元中的内容,用R 7返回

46、主函数。P U B L I C _ G E T D A T AD E S E G M E N T C O D ER S E G D E_ G E T D A T A:M O VA,R 7 ;取地址参数M O V R O,AM O V A,R 0M O V R 7,A ;返回地址单元中的内容E X I T:R E TE N D方法二:单用C语言编程实现/M A I N.C#in c l u d e#in c l u d e in t m o vd a t a(c ha r);vo id m a in ()(c ha r n;c ha r *pt r;f l o a t *pt r 2;f l o

47、 a t f;pt r=0 x2 5;n=*pt r;f=sq r t(n);pt r 2=0 x3 0;*pt r 2=f;)8.将外部R A M 1 0 H1 5 H单元的内容传送到内部R A M 1 0 H1 5 H单元。解:方法一:采用C语言与汇编语言混合编程用C语言编写的主函数M A I N.C#in c l u d e c ha r m o vd a t a (c ha r,c ha r);vo id m a in ()c ha r a=0 xl 0,b=0 x0 6;m o vd a t a(a,b);;用汇编语言编写的移动数据子函数M O V D A T A,其中第一个参数在R

48、 7中为首地址,第二个参数在R 5中为字节数P U B L I C _ M O V D A T AD E S E G M E N T C O D ER S E G D E_ M O V D A T A:M O V A,R 7 ;取参数M O V R O,AL O O P:M O V X A,R 0M O V R 0,AD J N Z R 5,L O O PE X I T:R E TE N D方法二:单用C语言编程实现/M A I N.C#in c l u d e in t m o vd a t a(c ha r);vo id m a in ()(c ha r n=6;c ha r *pt r

49、1=0 x1 0;c ha r xd a t a *pt r 2;pt r 2=0 x2 0;whil e(n一)*pt r 2+=*pt r l+;)9.内部R A M 2 0 H、2 1 H和2 2 H、2 3 H单元分别存放着两个无符号的1 6位数,将其中的大数置于2 4 H和2 5 H单元。解:方法一:#in c l u d e vo id m a in ()(u n sign e d in t *pt r;/设置一个内部 R A M 指针u n sign e d in t x,y,z;pt r=0 x2 0;指向 0 x2 0 单元x=*pt r;取第一个数pt r=0 x2 2;指

50、向 0 x2 2 单元y=*pt r;取第二个数z=(x y)?x:y;/将两数中的较大者赋给zpt r=0 x2 4;/指向地址为0 x2 4的目标单元*pt r=z;将大数存入目标单元)方法二:#include#includevoid main()(unsigned int x,y,z;x=DBYTE0X20*256+DBYTE0X21;y=DBYTE0X22*256+DBYTE0X23;z=(xy)?x:y;将两数中的较大者赋给zDBYTE0X24=z/256;DBYTE0X25=z%256;)方法三:#includeunsigned int x _at_ 0 x20;unsigned

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁