单片机原理与应用及c51程序设计答案.docx
《单片机原理与应用及c51程序设计答案.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用及c51程序设计答案.docx(21页珍藏版)》请在冰豆网上搜索。
![单片机原理与应用及c51程序设计答案.docx](https://file1.bdocx.com/fileroot1/2023-7/19/9a0a497d-4b82-4b9f-975d-2160e4e8c43a/9a0a497d-4b82-4b9f-975d-2160e4e8c43a1.gif)
单片机原理与应用及c51程序设计答案
单片机原理与应用及c51程序设计答案
【篇一:
单片机原理与c51语言程序设计与基础教程_课后习题答案】
p>习题
填空题
1.一般而言,微型计算机包括、四个基本组成部分。
2.单片机是一块芯片上的微型计算机。
以地应用范畴。
3.atmel公司生产的cmos型51系列单片机,具有
代替rom作为程序存储器,
4.单片机根据工作温度可分为、和三种。
民用级的温度范围是0℃
一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。
5.在单片机领域内,ice的含义是。
选择题
1.单片机的工作电压一般为v?
a5vb3v
c1vd4v
2.单片机作为微机的一种,它具有如下特点:
a具有优异的性能价格比b集成度高、体积小、可靠性高
c控制功能强,开发应用方便d低电压、低功耗。
3.民用级单片机的温度范围是:
a-40℃~85℃b0℃一70℃
c-55℃-125℃d0℃一50℃
4.mcs-51系列单片机最多有
a3b4c5d6
5.下列简写名称中不是单片机或单片机系统的是
amcubscmcicedcpu
问答题
1.单片机常用的应用领域有哪些?
2.我们如何学习单片机这么技术?
3.单片机从用途上可分成哪几类?
分别由什么用处?
填空题
1.运算器、控制器、存储器、输入输出接口
2.单片机嵌入式系统
3.mcs-51flashrom
4.民用级(商业级)工业级军用级
5.在线仿真器
选择题1、a2、abcd3、b4、c5、d
问答题
1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领
域,大致可分如下几个范畴:
(1)在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
(2)在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
(3)在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
(4)在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
(5)单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
2.首先,大概了解单片机的机构,例如本书的第2章则是主要讲了单片机的内部结构以及资源。
对单片机的内部结构有了初步了解之后,读者就可以进行简单的实例练习,从而加深对单片机的认识。
其次,要有大量的实例练习。
其实,对于单片机,主要是软件设计,也就是编程。
目前最流行的用于51系列单片机地编程软件是keil。
keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用c语言编程,那么keil几乎就是你的不二之选,即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
第三,要多结合外围电路,如流水灯、数码管、独立键盘、矩阵键盘、ad或da(原理一样)、液晶、蜂鸣器进行练习,因为,这样可以直观的看到程序运行的结果,当然,我们也可以用proteus这个软件对硬件进行仿真,这样也可以直观的看到结果。
在实际学习过程中,可以根据自己的项目需求去选择,从而减少了学习周期。
最后,就是结合自己的实际情况,开发一个完全具有个人风格,功能完善的电子产品,尽情享受单片机带来的欢乐和成就感。
同时,不必为软件、硬件基础知识不扎实而烦恼,单片机中用到的编程语言很简单,可以说主要是配置一些寄存器,不涉及太复杂的算法和语法,电子元器件也以简单应用居多,本书接下来的几章将主要介绍硬件和软件基础知识,这些对于单片机开发来说基本已经够用了。
另一方面,在做单片机实验的过程中会慢慢地积累、一步步地巩固相关的基础知识,在实践中有针对性的学习肯定比纯粹地看书效果更好。
所以,完全不必担心你的基础不够扎实。
3.单片机从用途上可分成专用型单片机和通用型单片机两大类。
专用型单片机是为某种专门用途而设计的,如dvd控制器和数码摄像机控制器芯片等。
在用量不大的情况下,设计和制造这样的专用芯片成本很高,而且设计和制造的周期也很长。
我们通常所用的都是通用型单片机,通用型单片机把所有资源(如rom、i/o等)全部提供给用户使用。
当今通用型单片机的生产厂家已不下几十家,种类有几百种之多。
第2章
答案填空题
1.3248r0~r72.时钟电路复位电路
3.指令寄存器ir程序计数器pc数据指针dptr堆栈指针sp
4.sbufscon5.低电平下跳变
选择题
1.abc
2.c按cpu查询顺序确定。
即1、外部中断02、定时中断03、外部中断14、定时中断15、串行中断
3.a4.c5.d6.c
问答题
1.所谓中断,是指cpu在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起cpu中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。
中断响应的过程如下:
(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。
(2)寻找中断入口,根据6个不一样的中断源所产生的中断,查找6个不一样的入口地址。
这6个中断源的编号和入口地址如表2.13所示各中断服务程序入口地址仅间隔8字节,编译器在这些地址放入无条件转移指令,跳转到服务程序的实际地址。
。
以上工作是由计算机自动完成的,与编程者无关。
(3)执行中断处理程序。
2.p0口既可作一般i/o端口使用,又可作地址/数据总线使用;p1口是一个准双向并行口,作通用并行i/o口使用;p2口除了可作为通用i/o使用外,还可在cpu访问外部存储器时作高八位地址线使用;p3口是一个多功能口除具有准双向i/o功能外,还具有第二功能。
3.堆栈是一种后进先出(lifo)的线性表,使用单片机内部ram单元存储一些需要回避的数值数据或地址数据。
堆栈好像堆放货物的仓库一样,存取数据时采用“后进先出”(即“先进后出”)的原则。
堆栈指针sp是用来存放当前堆栈栈顶指向的存储单元地址的一个8位特殊功能寄存器,地址是81h。
堆栈只有两种操作:
入栈和出栈。
不论数据是入栈还是出栈,都是对栈顶单元(sp指向的单元)进行操作的。
堆栈是向上生成的。
入栈时sp内容是增加的,出栈时sp的内容是减少的。
堆栈区域的大小可用软件对sp重新定义初值来改变,但堆栈深度以不超过片内ram空间为限。
系统复位后,sp的值为07h,若不重新定义,则以07h单元为栈底,入栈的内容从地址为08h单元开始存放。
堆栈主要是为子程序调用和中断操作而设立的,常用的功能有两个:
保护断点和保护现场。
在单片机系统中,既有与子程序调用和中断调用相伴随的自动入栈和出栈,又有堆栈的入栈和出栈指令(push和pop)。
此外,堆栈还具有传递参数等功能。
第3章答案
1立即寻址寄存器寻址间接寻址直接寻址变址寻址相对寻址位寻址
2累加器apcdptr
300H,0,0,0,04指令5一二三
6转移指令的pc值加上它的字节数
7dph=3ch,dpl=5fh,sp=4fh
选择题ccadc
问答题
1
(1)分析问题:
首先必须明确求解问题的意义和任务。
对项目背景和要完成的任务进行详细地了解和分析,将一个实际的问题转化为单片机可以处理的问题。
(2)确定算法:
根据实际问题的要求和指令系统的特点,决定所采用的计算公式和计算方法。
这是正确编程的基础,比程序设计语言本身更为重要。
(3)绘制框图:
根据所选定的算法,制定出运算步骤和顺序,把运算过程画成程序框图。
这样使程序清晰,结构合理,便于调试。
(4)分配资源:
要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。
(5)编写程序:
编写程序就是采用汇编语言来实现上面已确定的算法,也即是将由人类自然语言组织的程序框图转化为计算机语言组织的源代码。
(6)仿真调试:
利用单片机各种开发工具对所编写的程序进行测试,检验程序是否完成了指定的功能。
测试过程要尽可能仔细,保证程序中的各条支路都得到了检验。
(7)软件优化:
在完成指定功能的基础上,进行程序优化,以进一步缩短程序量、减少运算时间和节省工作单元。
(8)状态固化:
完成前期工作之后,将程序烧录到eeprom等程序存储器上,保证单片机系统每次上电后都能正确运行程序。
(9)文档说明:
将程序的功能和使用方法,程序的基本结构和所采用的主要算法以及程序必要说明和注意事项等问题整理成一个文档,不仅便于用户使用,而且便于对程序的维护和扩充。
2.
(1)bit位标量:
利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。
它的值是一个二进制位,不是0就是1,类似一些高级语言中的boolean类型中的true和false。
(2)sbit可寻址位:
利用它能定义内部ram中的可寻址位或特殊功能寄存器中的可寻址位。
(3)sfr特殊功能寄存器:
利用它能定义8051系列单片机内部的所有特殊功能寄存器,
(4)sfr16特殊功能寄存器:
sfr16和sfr一样用于操作特殊功能寄存器,所不一样的是它用于操作占两个字节的寄存器,如定时器t0和t1。
3.变址寻址
变址寻址是以某个寄存器的内容为基础,然后在这个基础上再加上地址偏移量,形成真正的操作数地址,需要特别指出的是用来作为基础的寄存器可以是pc或是dptr,地址偏移量存储在累加器a中。
相对录址
相对寻址主要是针对跳转指令而言的。
对于跳转指令,跳转去的目标指令的地址是通过正在执行的指令地址来确定的,一般是采用正在执行的指令地址加上偏移量的方式。
即:
转移目的地址=当前pc值+相对偏移量rel。
偏移量可以是正也可以是负,偏移量是采用有符号数的存储形式即补码的形式来存储的。
位寻址
位寻址方式是指将要访问的数据是一个单独的位,指定位数据的方式有:
通过位地址、通过字节地址加点及位数、通过寄存器名加点及位数、通过位的名称。
4.1)sp=sp+1=61h
sp=sp+1=62h(61h)=pc的低字节=03h(62h)=pc的高字节=20h
2)pc=3456h3)可以4)2kb=2048byte
5.62h,30h,70h6.0cbh7.交换a、b的内容
编程题
1.mova,45h
anla,#0fhorla,#0fhmov45h,a
2.start:
loop:
movr0,#30hmovmovcjnemovljmpincdjnzmovretr2,#20ha,@r0a,#0aah,next51h,#01hexitr0r2,loop51h,#00hnext:
exit:
3.org
main:
第4章0000hmova,30haddmovmovaddcmova,40h40h,aa,31ha,41h41h,a;第二字节加法并送结果;最低字节加法并送结果ljmpmain;跳转到主程序中mova,32haddca,42hmovmovaddcmovend42h,aa,33ha,43h43h,a;第四字节加法并送结果,进位位在cy中;第三字节加法并送结果
填空题
1.serialwindow#serialwindow#22.编译链接
3.createhexfile4.targetxtal(mhz)5.small、compact、large
选择题
1.bd2.b3.d4.b5.a
简答题
1.一般来说,一个单片机软件开发的过程是这样的:
2.
(1)建立工程;
(2)设置工程;(3)建立c源文件;(4)编译、连接;(5)调试;(6)运行。
程序调试一般用单步执行,全速执行,在线汇编,断点设置等方法。
3.keil提供了一个集成开发环境(ide:
integrateddevelopmentenvironment)uvision,它包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器。
这样在开发应用软件的过程中,编辑、编译、汇编、连接、调试等各阶段都集成在一个环境中,先用编辑器编写程序,接着调用编译器进行编译,连接后即可直接运行。
这样避免了过去先用编辑器进行编辑,然后退出编辑状态进行编译,调试后又要调用编辑器的重复过程,因此可以缩短开发周期。
【篇二:
单片机c51程序设计实验报告书】
txt>一、实验目的:
学会设计proteus7仿真电路,学习p1口的使用方法和延时子程序的编写用keiluvision3编程实现发光二极管的流水点亮。
二、实验原理:
p1口为8位准双向i/o口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。
p1口作为输出,接8个发光二极管d1~d8经限流电阻分别接至8个引脚。
本实验仿真电路图、流程图如下:
三、实验代码:
#includereg51.h
#includeintrins.h//移位库函数包含于此头文件中voiddelay(unsignedintd)//定义延时子函数{while(--d0);}voidmain()
{unsignedchari,sel;while
(1){sel=0xfe;for(i=0;i=8;i++){p1=sel;//显示变量赋给p1口delay(50000);//延时sel=_crol_(sel,1);//改变显示变量}}}
四、实验结论:
用while语句实现发光二极管循环流水点亮,从上到下一次点亮。
实验二c51分支程序设计
一、实验目的:
学习多分支选择结构和switch语句,了解循环的嵌套。
二、实验原理:
dowhile循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。
本实验仿真电路图、流程图如下:
(仿真电路图)
(流程图)
三、实验代码:
#includereg51.hvoidmain(){chara;do
{p1=0xff;a=p1;a=a0x03;switch(a){case0:
p2=0x0e;break;case1:
p2=0x0d;break;case2:
p2=0x0b;break;case3:
p2=0x07;break;}}while
(1);}
四、实验结论:
多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。
实验三外部中断实验
一、实验目的:
掌握外部中断的原理以及中断处理程序的编写方法。
二、实验原理:
外部中断0和外部中断1均为下降沿触发,当外部中断0发生时,p0端口的电平反向,当外部中断1发生时,p1端口的电平反向,led状态取反,引脚p3.2、p3.3是外部中断int0和int1的输入端,本实验仿真电路图、流程图如下:
(仿真电路图)
(主程序)(中断服务程序)
三、实验代码:
#includereg51.h#includestdio.h
voidiso(void)interrupt0
{p0=~p0;}//p0端口反向voidis1(void)interrupt2
{p1=~p1;}//p1端口反向voidmain()
{p0=0x00;p1=0xff;scon=0x50;tmod=0x22;th1=0xf3;tr1=1;
it0=1;it1=1;//设置下降沿触发方式ex0=1;ex1=1;ea=1;//中断允许while
(1);}
四、实验结论:
利用外中断程序可控制led的亮灭,p0口、p1口电平反向,led状态取反。
实验四定时/计数器实验
一、实验目的:
学习定时计数器的使用和编写方法,进一步掌握中断处理程序的方法以及对示波器的了解。
二、实验原理:
启动定时器t1延时10ms,当定时时间到产生中断,执行中断程序,led熄灭,t1再延时10ms,点亮led,如此循环,本实验仿真电路图、流程图如下:
(仿真电路图)
【篇三:
单片机原理及应用作业答案】
1.单片机是把组成微型计算机的各功能部件即(微处理器(cpu))、(存储器(rom和ram))、(总线)、(定时器/计数器)、(输入/输出接口(i/o口))及(中断系统)等部件集成在一块芯片上的微型计算机。
2.什么叫单片机?
其主要特点有哪些?
解:
将微处理器(cpu)、存储器(存放程序或数据的rom和ram)、总线、定时器/计数器、输入/输出接口(i/o口)、中断系统和其他多种功能器件集成在一块芯片上的微型计机,称为单片微型计算机,简称单片机。
单片机的特点:
可靠性高、便于扩展、控制功能强、具有丰富的控制指令、低电压、低功耗、片内存储容量较小、集成度高、体积小、性价比高、应用广泛、易于产品化等。
第1章mcs-51单片机的结构与原理
15.mcs-51系列单片机的引脚中有多少根i/o线?
它们与单片机对外的地址总线和数据总线之间有什么关系?
其地址总线和数据总线各有多少位?
对外可寻址的地址空间有多大?
解:
mcs-51系列单片机有4个i/o端口,每个端口都是8位双向口,共占32根引脚。
每个端口都包括一个锁存器(即专用寄存器p0~p3)、一个输入驱动器和输入缓冲器。
通常把4个端口称为p0~p3。
在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用i/o端口使用。
在具有片外扩展存储器的系统中,p2口作为高8位地址线,p0口分时作为低8位地址线和双向数据总线。
mcs-51系列单片机数据总线为8位,地址总线为18位,对外可寻址空间为64kb。
25.开机复位后,cpu使用的是哪组工作寄存器(r0-rn)?
它们的地址是什么?
cpu如何确定和改变当前工作寄存器组(r0-rn)?
解:
开机复位后,cpu使用的是第0组工作寄存器。
它们的地址是00h-07h。
cpu通过对程序状态字psw中rs1和rs0的设置来确定和改变当前工作寄存器组。
27.mcs-51单片机的时钟周期、机器周期、指令周期是如何定义的?
当主频为12mhz的时候,一个机器周期是多长时间?
执行一条最长的指令需要多长时间?
解:
时钟周期又称为振荡周期,由单片机内部振荡电路osc产生,定义为osc时钟频率的倒数。
时钟周期又称为节拍(用p表示)。
时钟周期是时序中的最小单位。
一个状态有两个节拍,
机器周期定义为实现特定功能所需的时间。
mcs-51的机器周期由12个时钟周期构成。
执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。
由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。
mcs-51的指令可能包括1~4个不等的机器周期。
当mcs-51的主频为12mhz时,一个机器周期为1?
s。
执行一条指令需要的最长时间为4?
s。
第2章mcs-51单片机指令系统与汇编语言程序设计
4.假定累加器a中的内容为30h,执行指令1000h:
movca,@a+pc后,把程序存储器(1031h)单元的内容送入累加器a中。
7.指出下列各指令在程序存储器中所占的字节数
(1)movdptr,#1234h3字节
(2)movxa,@dptr1字节
(3)ljmploop3字节
(4)movr0,a1字节
(5)ajmploop2字节
1
(6)mova,30h2字节
(7)sjmploop2字节
(8)movb,#30h2字节
15.设堆栈指针(sp)=60h,片内ram中的(30h)=24h,(31h)=10h。
执行下列程序段后,61h,62h,30h,31h,dptr及sp中的内容将有何变化?
push30h
push31h
popdpl
popdph
mov30h,#00h
mov31h,#0ffh
解:
结果为:
61h、62h单元为堆栈单元,其内容已被弹出栈。
(31h)=0ffh(dptr)=2410h(sp)=60h
17.完成以下的数据传送过程
(1)r1的内容传送到r0。
(2)片外ram20h单元的内容送r0。
(3)片外ram20h单元的内容送片内ram20h单元。
(4)片外ram1000h单元的内容送片内ram20h单元。
(5)rom2000h单元的内容送r0。
(6)rom2000h单元的内容送片内ram20h单元。
(7)rom2000h单元的内容送片外ram20h单元。
解:
(1)r1的内容传送到r0;
mova,r1
movr0,a
(2)片外ram20h单元内容送r0;
movr1,#20h
movxa,@r1
movr0,a
(3)片外ram20h单元的内容送片内ram20h单元;
movr0,#20h
movxa,@r0
mov20h,a
(4)片外ram1000h单元的内容送片内ram20h单元;
movdptr,#1000h
movxa,@dptr
mov20h,a
(5)rom2000h单元的内容送r0单元;
clra
movdptr,#2000h
movca,@a+dptr
movr0,a
(6)rom2000h单元的内容送片内ram20h单元;
clra
movdptr,#2000h
movca,@a+dptr
mov20h,a