MCSstc8051单片机引脚图的P0.5输出端接LED指示灯

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4613)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'单片机原理与应用习题',
blogAbstract:'&第一章& 绪论\r\n1-1单项选择\r\n1、计算机中最常用的字符信息编码是(&&& )。\r\n(A)ASCII&&&&& (B)BCD码&& (C)余3码&&&& (D)循环码\r\n2、-31D的二进制补码为.(&&&& )。\r\n(A)1110000B&& (B)B&&&& (C)B&&& (D)B\r\n3、十进制29的二进制表示为原码(&&&& )。\r\n(A)B& (B) B&&&& (C)B&& (D)B\r\n4、十进制0.625转换成二进制数是(& )。\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}05-1502-1602-1602-1602-1602-1602-1602-1602-1602-16最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01【图文】单片机__闪烁的LED_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机__闪烁的LED
阅读已结束,下载本文到电脑
想免费下载本文?
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢第01章 单片机基础
习题解答一、填空题1.MCS-51单片机有4个存储空间,它们分别是:
片内程序存储器
片外程序存储器
片内数据存储器
片外数据存储器
。2、MCS-51单片机的一个机器周期包括
个状态周期,
个振荡周期。设外接12MHz晶振,则一个机器周期为
μs。3.程序状态字PSW由
位组成,分别是
CY AC F0 RS1 RS0 OV — P
。4.在MCS-51单片机内部,其RAM高端128个字节的地址空间称为
特殊功能寄存区/SFR
区,但其中仅有
个字节有实际意义。5.通常MCS-51单片机上电复位时PC=
0000 H、SP=
H、通用寄存器采用第
组,这一组寄存器的地址范围是
H。6.MCS-51单片机堆栈遵循
的数据存储原则。7.在MCS-51单片机中,使用P2、P0口传送
信号,且使用P0口来传送
信号,这里采用的是
技术。8.MCS-51单片机位地址区的起始字节地址为
。9.对于并行口在读取端口引脚信号时,必须先对端口写
。10.PC的内容是
下一条要执行的指令地址
。二、简答题1.MCS-51单片机的引脚按照功能分为几类?并说明各引脚的功能。答:MCS-51单片机的引脚按照功能分为电源和晶振、I/O引线、控制线三类。(1)电源和晶振:Vcc(40):接+5V电源正端。Vss(20):接电源地端。XTAL1(19):接外部石英晶体的一端。XTAL2(18):接外部石英晶体的另一端。(2) I/O引线:MCS-51单片机共有32条I/O引线,分成P0-P3四组,4组端口除了可以做普通I/O口之外,P0口既可以作为8位数据总线还可以分时输出低8位地址,经锁存器锁存形成A0-A7;P1口作为I/O用;P2口还可以输出作为高8位地址A8-A15;P3口具有第二功能,P3.0-P3.7第二功能分别依次为RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD。(3)控制线:ALE(30):地址锁存有效信号输出端。/PSEN(29):片外程序存储器读选通信号输出端,低电平有效。RST/VPD(9):上电复位或掉电保护端。/EA(31):片外程序存储器选用端。该引脚低电平时,只能选用片外程序存储器,否则单片机上电或复位后选用片外程序存储器。2.MCS-51单片机的位寻址区的字节地址范围是多少?位地址范围是多少?答:20H-2FH
00H-7FH3.MCS-51单片机的三总线是由哪些口线构成的。答:P0口提供8位数据总线;P0口还可以分时输出低8位地址,经锁存器锁存形成A0-A7, P2口提供高8位地址A8-A15,合起来提供16位地址线。P3口和ALE、/PSEN、RST/VPD、/EA提供控制线。4. MCS-51单片机P0-P3端口在功能上各有什么用途和区别?当它们作为I/O口使用时,具有哪些应用特点?答:51单片机共有P0-P3四个端口,他们除了可以做普通I/O口之外,P0口既可以作为8位数据总线还可以分时输出低8位地址,经锁存器锁存形成A0-A7;P1口仅作为I/O用;P2口还可以输出作为高8位地址A8-A15;P3口具有第二功能,P3.0-P3.7第二功能分别依次为RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD。作为I/O口使用时的应用特点是: ? 4个并行I/O口均由内部总线控制,端口的功能复用会自动识别,不用用户选择。 ? P0是8位、漏极开路的双向I/O口,可分时复用为数据总线和低8位地址总线,可驱动8个LSTTL负载。作地址/数据总线口时,P0是一真正双向口,而作通用I/O口时,只是一个准双向口。? P1是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载。? P2是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载,可用作高8位地址总线。? P3是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载。P3口的所有口线都具有第二功能。? 单片机功能多,引脚数少,因而许多引脚都具有第二功能。? 单片机对外呈现三总线形式,由P2、P0口组成16位地址总线;由P0口分时复用为数据总线;由ALE、/PSEN、RST、/EA与P3口中的/INT0、/INT1、T0、T1、/WR、/RD共10个引脚组成控制总线。5.MCS-51单片机存储器在结构上有什么特点?在物理上和逻辑上各有那几个地址空间?
答:MCS-51单片机的存储器采用的是程序存储器与数据存储器截然分开的哈佛结构,即程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。物理上分为4个存储器空间:片内程序存储器、片外程序存储器片内数据存储器、片外数据存储器逻辑上分为3个地址空间:片内、片外统一编址的64KB程序存储器空间片内256B的数据存储器地址空间片外64KB的数据存储器空间6.简述MCS-51单片机00H-7FH片内RAM的功能划分,写出它们的名称以及所占用的地址空间,并说明它们的控制方法和应用特性。答:(1)工作寄存器组(00H——1FH)这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。(2)位寻址区(20H——2FH)16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位操作。(3)堆栈与数据缓冲区(30H——7FH)用于设置堆栈、存储数据7.请写出MCS-51单片机的五个中断源的入口地址。答:MCS-51单片机的五个中断源的入口地址如下: 名
称外部中断/INTO定时器T0中断外部中断/INT1 入 口 地 址
000BH 0013H定时器T1中断串行口接收/发送中断001BH 0023H8.MCS-51单片机的片内RAM用户区的字节地址范围是多少?主要用途是什么? 答:30H-7FH, 主要用于设置堆栈、存储数据9.单片机的复位电路有哪几种形式?试画图说明工作原理。答:MCS-51单片机通常采用上电自动复位、按键手动复位两种方式。如图所示。(a)
(b)图 复位电路图 (a)是常用的上电复位电路,利用电容器充电来实现复位。当加电时,电容C充电,电路有电流流过,构成回路,在电阻R上产生压降,RST引脚为高电平;当电容C充满电后,电路相当于开路,RST的电位与地相同,复位结束。可见复位的时间与充电的时间有关,充电时间越长复位时间越长,增大电容或电阻都可以增加复位时间。图 (b)是按键式复位电路。它的上电复位功能与图2-154(a)相同,但它还可以通过按键实现复位。按下按键后,通过两个电阻形成回路,使RST端产生高电平。按键的时间决定了复位的时间。10.试说明MCS-51单片机两种低功耗工作方式的异同。 答:MCS-51单片机两种低功耗工作方式由电源控制寄存器PCON(97H)中的PD、IDL两位来控制。当PD=1时,进入掉电方式,振荡器停止工作,芯片所有功能均停止,但片内RAM和SFR内容保持不变。退出掉电方式的唯一方式是硬件复位。当IDL=1时,进入待机方式,CPU时钟被切断,但中断系统、定时器和串行口的时钟信号继续保持,所有SFR保持进入空闲工作方式前的状态。退出待机方式的方式有中断退出和硬件复位退出。三、Proteus仿真在Proteus下,改进、丰富1.3节内容。答:流水灯的流水方式、每个LED的闪烁方式、闪烁时间等都可以改变。如果加上按键,可以实现按键控制。第02章 单片机指令系统与汇编语言程序设计 习题解答一、填空题1. MCS-51单片机指令系统中有
条指令。2. MCS-51单片机指令中,Rn表示
R0、R1、R2、R3、R4、R5、R6、R7中的一个
。3. MCS-51单片机指令中,@表示
。4. MCS-51单片机指令中,$表示
当前指令的首地址
。5. MCS-51单片机寻址方式有
立即数、直接地址、寄存器、寄存器间接、变址、相对、位寻址等七种寻址方式
。6. 指令MOVC
A, @A+PC的功能是
将A的内容与PC当前值相加作为程序存储器地址,再将该地址单元的内容传送到A
。7. 指令JBC CY, LOOP是
个机器周期指令。8. 指令DA
对A中当前值进行十进制调整
。9. 调用子程序时,将PC当前值保存到
。10. MCS-51单片机堆栈操作的基本原则是
。二、简答题1. MCS-51单片机指令一般由哪几个部分组成?各部分的功能是什么?答:MCS-51单片机指令一般由标号、操作码助记符、操作数、注释四部分组成。标号是一条指令的标志,是可选字段,与操作码之间用“:”隔开;设置标号的目的是为了方便调用或转移。标号的选择应遵从下列规定:? 标号由1~8个字母或数字组成,也可以使用一个下划线符号“_”。? 第一个字符必须是字母。? 指令助记符或系统中保留使用的字符串不能作为标号。? 标号后面需要有一个冒号。? 一条语句可以有标号,也可以没有标号,取决于程序中其它语句是否需要访问这条语句。操作码规定指令的功能,是一条指令的必备字段,如果没有操作码,就不能成为指令。它与操作数之间用“空格”隔开。操作数是指令操作的对象。分为目的操作数和源操作数两类,它们之间用“,”分隔。操作数是可选字段。一条指令可以有0、1、2、3个操作数。注释是对指令功能的说明解释。以“;”开始。2. 程序中,伪指令ORG和END的作用是什么?答:ORG用于定义汇编语言源程序或数据块存储的起始地址。END用于指示源程序到此全部结束。在汇编时,对END后面的指令不予汇编。因此,END语句必须放在整个程序的末尾,有且只能有一个。3. 简述堆栈指令PUSH和POP的操作过程。答:执行PUSH指令时,先将SP的内容加1,指向新的堆栈栈顶单元,然后将指定地址单元的内容送到堆栈栈顶单元。执行POP指令时,先将SP指向的堆栈栈顶单元内容送到指定地址单元,然后将SP的内容减1,修改堆栈栈顶单元。4. 若SP=25H,标号LABEL的值为3456H。指令“LCALL LABEL”的首地址为2345H,问执行长调用指令“LCALL
LABEL”后,堆栈指针和堆栈的内容发生什么变化?PC的值等于什么?答:PC当前值压入堆栈,并转向子程序,SP=27H, (26H)=48H,(27)=23H,PC=3456H(24H)=12H,(25H)=34H,(26H)=56H。问执行“RET”指令5. 已知SP=25H,PC=2345H,以后, SP=? PC=?答:SP=23H, PC=3412H6. 以下程序段执行后,A=
, (30H)=
30H,#0AHMOV
A,#0D6HMOV
R0,#30HMOV
R2,#5EHANL
A,@R0SWAP
A, #0FEHORL
30H, A答:答:A=E4H (30H)=EEH7. 比较内部RAM中30H和40H单元的二个无符号数的大小,将大数存入20H单元,小数存入21H单元,若二数相等,则使位空间的7FH位置1。答:
ORG 0000HLJMP MAINORG 0100HMAIN:MOV
A,30HCJNE
A,40H,LOOP1SETB
LOOP3LOOP1:
21H,40HSJMP
LOOP3LOOP2:
20H,40HMOV
21H,ALOOP3:
$END8. 设变量X存在内部RAM的20H单元中,其取值范围为0-5,编一查表程序求其平方值,并将结果存放在内部RAM 21H单元。答:
ORG 0000HLJMP STARTORG 1000HSTART: MOV DPTR, #TABLEMOV
A,20HMOVC A ,@A+DPTRMOV 21H, ASJMP $ORG 2000HTABLE: DB 0,1,4,9,16,25END9. 编写程序将内部RAM中起始地址为data的字节数据串送到外部RAM中起始地址为buffer的存储区域中,直到发现‘$’字符为止。答:
ORG 0000HLJMP STARTORG 0100HSTART: MOV R0,#dataMOV DPTR, #bufferLOOP1: MOV A,@R0CJNE A,#24H,LOOP2判断是否为$字符SJMP
LOOP3是,转结束LOOP2: MOVX @DPTR,A不是,传送数据INC R0INC DPTRSJMP LOOP1
;传送下一数据LOOP3: SJMP
$END10. 将一个字节的二进制数转换成 3 位非压缩型BCD码。设该二进制数在内部RAM 40H单元,转换结果放入内部RAM50H,51H,52H单元中(百位在50H,十位在51H,个位在52H)。 答:
0100HHEXBCD:
A, 40H?MOV B, #100?DIV
AB?MOV 50H, A?MOV A, #10?XCH
AB?MOV 51H, A?MOV 52H, B?SJMP $END三、Proteus仿真利用Proteus仿真实现2.3节中的内容。答:全自动洗衣机按键与指示灯Proteus仿真设全自动洗衣机控制面板上有8个控制按键,8个指示灯。按下一个按键,对应的指示灯点亮。电路如图所示。 参考程序如下。ORG
0000H;上电后PC=00000H,故在0000H单元存放转移指令 ;转移到应用程序
0030H应用程序从0030H开始存放;置输入状态;输入开关状态信息;输出开关状态驱动LED;延时子程序外循环变量;内循环变量;内循环体;外循环体 START: MOV
DELAY: MOV
DEL1: DJNZ
R5,DEL0SJMP
LOOP1循环END;汇编结束第03章 单片机C语言程序设计 习题解答一、填空题1.程序的基本结构有
顺序结构、分支结构、循环结构
。2.C51的存储器模式有
SMALL、COMPACT、LARGE
。3.C51中int型变量的长度为。4.C51中关键字sfr的作用,sbit的作用
定义51单片机片内可位寻址位
。5.函数定义由6.C51的表达式由7.C51表达式语句由表达式和组成。8.C51中“!”运算符的作用是。9.若函数无返回值,用10.若局部变量未初始化,其初值为二、简答题1.举例说明&和&&运算的差异。答:(1)&(按位与)是位运算符,是双目运算。当二个位都等于1时,结果等于1,其它的结果都等于0。(2)&&(逻辑与)是逻辑运算符。当两个及以上条件都同时成立的情况下“逻辑与”的运算结果才为“真”。例:假设a = 1;
b = 2;如果执行a&b,则结果为0;如果执行a&&b,则结果为1;2、说明全局变量和局部变量的差异。答:全局变量和局部变量的差异为:(1)作用域不同。全局变量对所有的函数是可见的,所有函数都可以使用它;局部变量只对定义它的函数可见,只能在定义它的函数中使用,其他函数不能使用它。(2)一个源程序中的各个全局变量不能同名,而各个函数的局部变量可以同名。在一个函数中,当全局变量与局部变量同名时,全局变量不起作用,局部变量起作用。(3)全局变量定义时未初始化,系统自动默认初值为0;局部变量定义时未初始化,其初值不确定。3、说明C51中变量的存储类型及其特点。答:C51中变量的存储类型有:(1)data,特点是:以直接寻址方式访问内部数据存储器,速度最快。(2)bdata,特点是:以直接寻址方式访问内部可位寻址数据存储器,允许位与字节混合访问。(3)idata,特点是:以间接寻址方式访问内部数据存储器,允许访问全部内部数据存储器。(4)pdata,特点是:分页访问外部数据存储器,用MOVX
@Ri指令访问。(5)xdata,特点是:访问外部数据存储器,用MOVX @DPTR指令访问。(6)code,特点是:访问程序存储器,用MOVC @A+DPTR指令访问。4、说明i++和++i的异同。答:(1)i++:先赋值,i再自加1。(2)++i:i先自加1,再赋值。例:假设i=3;如果执行x = i++; 则x = 3,i = 4。执行x = ++i; 则i = 4,x = 4。5、何为函数声明?如何进行函数声明?答:(1)函数声明即是声明被调函数的原型,包括被调函数名、函数类型(即返回值类型)、形参表(包括形参个数及其数据类型)。(2)声明函数原型可以按照写函数定义时的函数头,再加上分号即可。三、Proteus仿真1.在Proteus下,仿真实现3.6节内容。答:设在存储区,有10个数据:99,15,30,13,27,28,7,0,33,67。编写程序,将其按照从大到小的次序排列。并按次序在数码管上显示。为了简化硬件电路,选用译码、显示一体化显示模块。仿真电路如图3-8所示。 图3-8
数据排序仿真电路C语言参考程序如下。#include &reg51.h&//定义头文件 //定义常量#define uchar unsigned char
uchar A[10]= {99,15,30,13,27,28,7,0,33,67} ;//定义数组,为了显示直观,对0-99之间的十进制数进行排序int DIS[10] = {252,96,218,242,102,182,190,224,254,246};//定义数码管显示0-9的引脚值sbit pos_1 = P2^0;
//定义4位数码管第1位使能引脚sbit pos_2 = P2^1; //定义4位数码管第2位使能引脚sbit pos_3 = P2^2; //定义4位数码管第3位使能引脚sbit pos_4 = P2^3; //定义4位数码管第4位使能引脚void taxisfun (){uchar i,j,T//定义局部变量 //设置外循环
//排序函数
for (i=0; i&=8; i++) {for (j=0; j&=8-i; j++) {
//设置内循环,j&8-i 比用 j&=8 少用很多循环 if (A[j+1]&A[j]) {
Temp = A[j];
A[j] = A[j+1];
//当后一个数大于前一个数 //前后 2 数交换,前数送零时变量 //后数送前数 //零时变量送后数
A[j+1] = T
}}}}void delay(){int i,j;//定义两个内部循环变量 //设置外部循环//设置内部循环
//延迟函数
for ( i = 0;i &= 3; i++)
for ( j = 0; j &= 200; j++);}void off(){pos_1 = 1;pos_2 = 1;pos_3 = 1;pos_4 = 1;}void main(void)
//数码管4位全灭函数 //数码管第1位灭 //数码管第2位灭 //数码管第3位灭 //数码管第4位灭{int now_pos, now_//定义程序全局变量,now_pos为排序后的10个数字的排序序号,now_num记录显示结果循环次数taxisfun ();off();
//调用排序函数,对10个乱序数值进行从大到小排序 //数码管全灭,等待进入循环显示//程序进入循环阶段
while(1){ for (now_pos = 0; now_pos & 10; now_pos++) { //10个从大到小排序后结果显示
for (now_num = 0; now_num & 100; now_num++)//每个数值显示100次后,才显示下一个数值 {
P1 = DIS[now_pos];
//P1口输出当前显示数值的排序结果
pos_1 = 0;
//数码管第1位亮起 //显示延迟
//数码管4位全灭
P1 = DIS[A[now_pos] / 10]; //P1口显示排序后数值的十位
pos_3 = 0;
//数码管第3位亮起 //显示延迟 //数码管4位全灭 //P1口显示排序后数值的个位 P1 = DIS[A[now_pos] % 10];
pos_4 = 0;
//数码管第4位亮起 //显示延迟
//数码管4位全灭
} }};} 2. 在Proteus下,用汇编语言程序实现数据排序,并将排序结果通过数码管显示。答:设有N个数存放在LIST地址开始的内部RAM存储区中,编写程序将N个数按由小到大次序存放在原来的存储区内。仿真电路如图3-8所示。 数据排序的方法有很多种,常用的是“冒泡法”,基本思想是:将相邻两个数作比较,即第一个数和第二个数比较,第二个数和第三个数比较,依次类推。若符合从小到大顺序的,则不改变它们在内存中的位置;否则交换它们的位置。如此反复,直至完成排序。按“冒泡法”对N个数排序时,最多需要N-1次双重循环。但在多数情况下,不用N-1次循环,数据就排好了。为了提高排序效率,程序中可设一交换标志位,每次循环中,若有交换则设置该标志,表明排序未完成;若无交换,则清除该标志,表明排序已经完成。每次循环结束时,检查交换标志位,判断排序是否结束。参考程序如下:ORG
0000H上电后PC=00000H,故在0000H单元存放转移指令
SORT转向主程序N
0100H定义常量N=07H主程序从0100H开始SORT:
R2, #N-1设置比较次数MOV
R0, #LIST数据块起始地址LOOP1:MOV
R3, A ;外循环计数值内循环计数值 ;交换标志初值 ;取数据
LOOP2: MOV A, @R0MOV B, AINC R0CLR C;暂存B ;数据地址加1 ;清借位标志 ;两数比较
LESSXj&Xj-1转LESS
MOV A,BXCH A,@R0DEC R0MOV
R1,#02LESS: DJNZ
R3, LOOP2DJNZ
R2 ,LOOP3STOP: SJMP
$LOOP3: DJNZ
R1, LOOP1ORG
0050HLIST: DB 0,13,3,90,27,32,11END;取大数 ;两数交换位置 ;修改地址 ;保存小数 ;恢复数据指针 置交换标志为2 ;内循环计数减1,判一遍比较完成? ;外循环计数减1,判排序结束? ;循环等待 发生交换时,R1的内容为2,减1后不为0,转移;定义数据块从0050H开始 ;定义字节数据块汇编结束第4章 单片机中断系统 习题解答一、填空题1.MCS-51单片机有
个中断源。上电复位时,同级中断的自然优先级从高至低依次为
外中断0、定时器/计数器0、外中断1、定时器/计数器1、串行口 ,若IP=B,优先级别最高者为
、最低者为
定时器/计数器1
。2.外部中断请求有
触发两种触发方式。3.MCS-51单片机5个中断源的中断入口地址为:
0003H、000BH、0013H、001BH、4.当定时器/计数器1申请中断时,TF1为
,当中断响应后,TF1为
。当串口完成一帧字符接收时,RI为
,当中断响应后,RI为
清零。5.中断源扩展有三种方式,分别是
定时器/计数器扩展、查询方式扩展、中断控制芯片扩展
。二 简答题1.MCS-51单片机有几个中断源?各中断标志是如何产生的?如何撤销的?各中断源的中断矢量分别是什么?答:MCS-51单片机有5个中断源。外中断0/1电平触发方式,在对应引脚上检测到低电平将中断标志位IE0/1置1向CPU申请中断,边沿触发方式,在对应引脚上检测到负跳变将中断标志位IE0/1置1向CPU申请中断;定时器/计数器0/1在计数溢出时将TF0/1置1向CPU申请中断;串行口发送1帧结束将TI置1或接收1帧数据将RI置1向CPU申请中断。对于T0/T1和边沿触发的INT0/INT1中断标志在进入中断服务程序后自动撤销;对于电平触发的INT0/INT1需在中断申请引脚处加硬件撤销电路;对于串行口中断标志TI/RI需在进入中断服务程序后用软件CLR RI或CLR TI,撤销。它们的中断矢量分别是:0003H、000BH、0013H、001BH、0023H。2.简述MCS-51中断过程答:中断过程分中断申请、中断响应、中断处理、中断返回4个阶段。中断请求:各中断源根据自身特点施加合适的信号,将对应的中断标志位置1向CPU申请中断。中断响应:CPU对中断请求进行判断,形成中断矢量,转入响应的中断服务程序。 中断处理:根据各中断源要求执行响应中断服务程序。中断返回:中断服务程序结束后,返回主程序。3.简述外中断和INT1的2种触发方式(电平、边沿)的异同。答:相同点:都是在检测到有效信号后将中断标志位置1,向CPU申请中断。不同点:电平触发的有效信号是低电平;边沿触发的有效信号是负跳变,前一次检测到高电平,后一次检测到低电平。4.MCS-51单片机响应中断时,如何保护断点?如何转移到中断服务应用程序?答:保护断点:单片机在进入中断服务程序前先将当前PC以及其它响应寄存器压入堆栈。转入中断服务程序:单片机将当前中断源的中断矢量赋给PC,相当于一条长跳转指令。5.电路如图4-7所示。编写程序,用两级中断实现如下功能。电路正常工作时,两个LED同时点亮;若先按下按键K0后,LED1熄灭,LED0闪烁10次;若在LED0闪烁期间按下按键K1,则LED0熄灭,LED1闪烁,闪烁10次后,LED1熄灭,LED0继续闪烁。若先按下按键K1,则LED1闪烁,闪烁10次后,LED1熄灭。若在LED1闪烁其间,按下K0,不能中断LED1的闪烁;等到LED1闪烁结束后,LED0闪烁10次。闪烁结束后,恢复正常工作。 答:参考程序如下#include&reg51.h&#define uint unsigned int#define uchar unsigned charsbit LED0 = P1^0;sbit LED1 = P1^1;void flashled0();void flashled1();void delayms(uint i);main(){PX1=1;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;while(1);}void serint0() interrupt 0{LED1 = 0;for(i=0;i&10;i++)8051flashled0();} void serint1() interrupt 2{LED0 = 0;for(i=0;i&10;i++)flashled1();} void flashled0(){LED0 = 1;delayms(250);LED0 = 0;} void flashled1(){LED1 = 1;delayms(250);LED1 = 0;} void delayms(uint i){while(i--)for (j=0;j&125;j++);} 三、Proteus仿真1.在Proteus下,仿真实现4.5节内容。答:全自动洗衣机“启动/暂停”控制Ptoteus仿真在全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前洗衣进程,处理这些事件。用图4-6电路模拟全自动洗衣机中断过程。假设全自动洗衣机有8个流程,用8个指示灯表示;用8个按键进行选择控制。当某个流程工作时,对应的指示灯点亮。当按下按键SW1时,中断正在进行的流程,对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下SW1时,指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断的洗衣流程。Proteus仿真电路及程序如下。 图4-6 全自动洗衣机“启动/暂停”中断控制过程Proteus仿真 汇编语言参考程序如下:ORG
;在0000H单元存放转移指令AJMP
;转移至主程序
;INT0中断入口?
;转中断服务程序?
;主程序?MAIN:
;全灯灭?SETB
;边沿触发中断?
;允许外中断0中断?
;开中断开关LOOP: MOV
;输入洗衣流程控制按键状态CPL
;A的内容求反MOV
;输出驱动指示灯亮CALL
;延时SJMP
;主循环SJMP
;循环等待DELAY20MS:
;延时子程序程序入口
MOV R6,#200
;设置延时外循环数 LOOP1:
MOV R7,#200
;设置延时内循环数 LOOP2: NOP
;延时指令NOP
;延时指令NOP
;延时指令DJNZ R7,LOOP2
;判断延时内循环是否结束
DJNZ R6,LOOP1
;判断延时外循环是否结束
;延时子程序返回WBI:
;中断服务程序入口CLR
;关中断 MOV
;关闭LEDCALL
;读按键状况CPL
;取反 MOV
;送LED显示CALL
;循环闪烁?
;中断返回
;汇编结束C语言参考程序如下:#include&reg51.h&
void delayMs(unsigned int i)
while(i--)
{for(j = 0; j & 125; j++);
delayMs(20);
}exint0() interrupt 0
delayMs(20);
delayMs(20);}
while(P3^2==1);
} //包含头文件 //定义延时程序 //定义延时变量 //延时外循环 //延时外循环 //主程序 //关闭LED //设置中断0边沿触发 //打开中断0允许 //打开CPU中断允许 //设置主循环 //读取按键状态送LED显示//延时 //外中断0服务程序 //中断循环 //关中断 //关闭LED //延时 //读取按键状态送LED显示//延时 //循环闪烁 //开中断 2.在Proteus下,仿真实现简答题第5题内容。答:先在Proteus下画出电路图,程序如第5题所示。也可在此基础上进行扩展。 第05章 单片机定时计数器 习题解答一、填空题1. MCS-51单片机中有
位的定时器/计数器。2. 定时器/计数器T0可以工作于方式
0、1、2、3
3. 方式0为
位定时器/计数器。4. 若系统晶振频率为12MHz,则T0工作于定时方式1时最多可以定时
us。5. 欲对300个外部事件计数,可以选用定时器/计数器T1的模式
。6. TMOD中的M1M0= 11时,定时器工作于方式
。7. 若系统晶振频率为6MHz,则定时器可以实现的最小定时时间为
us。 8. MCS-51单片机工作于定时状态时,计数脉冲来自
单片机内部的机器周期
。9. MCS-51单片机工作于计数状态时,计数脉冲来自
单片机外部事件
。 10. 当GATE=0时,
则当软件控制位TR0=1时
启动T0开始工作。 二、简答题1.定时器/计数器T0和T1各有几种工作方式?简述每种工作方式的特点。如何控制定时器/计数器的工作方式?答:T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2方式0:是13位定时/计数器,由TLX的低5位(TLX的高3位未用)和THX高8位组成。方式1:TLX和THX组成16位定时/计数器。 方式2:方式2为自动重装初值的8位定时/计数器。方式3只适用于定时/计数器T0,当T0工作在方式3时,TH0和TL0被分为两个独立的8位计数器。TMOD用来控制定时计数器的工作方式,位结构如下:D7 GATED6 D5 M1D4 M0D3 GATD2 D1 M1D0 M0
A←T1方式字段→ ←T0方式字段→C/T:定时或计数功能选择位。1为计数方式, 0为定时方式。GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。 GATE=0,软件控制位TR0(TR1)=1启动定时/计数器开始计数。GATE=1,软件控制位TR0(TR1)=1,INT0(INT1)引脚为高电平时启动定时/计数器开始计数。 M1、M0:定时/计数器工作方式选择位,如下表所示。 M1 1 12.设MCS-51单片机的晶振频率fOSC=6MHz,分别讨论定时器/计数器0在各种工作方式下的最长定时时间。答:由fosc =6MHz可知,一个机器周期T=2us,由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。方式0:(213–0)×2us= 214us=16384us=16.384ms方式1:(216–0)×2us= 217us=131.072ms方式2、3:(28–0)×2us= 29us=0.512ms当 fosc =6MHz,即T=2us时各种方式下的定时时间,若fosc =12MHz,则最长定时时间将缩短一半。3.编写程序从P1.0 引脚输出频率为1KHz的方波。设晶振频率为6MHz。答:利用T1定时中断。fosc= 6MHz。1机器周期 =2 uS。1KHz方波周期 =1mS,半个方波周期=500uS。
500uS÷2uS =250若选择方式2 工作,计算初值:256-250=6ORG 0000HAJMP
1 工作方式 方式0 方式1 方式2 方式说明 13位定时/计数器 16位定时/计数器 具有自动重装初值的8位定时/计数器 方式3 T0为两个独立的8位计数器,T1为波特率发生器 ORG
001BH ;T1的中断矢量LJMP
T1INTMAIN: MOV
TMOD,#20HMOV
TH0, #6MOV
TL0, #6SETB
TR1HERE: AJMP HERE
;原地等待中断T1INT:CPL
;中断服务:P1.0取非RETI
;中断返回END4.利用定时器/计数器1定时中断控制P1.7驱动LED发光二极管亮1秒灭1秒地闪烁,设时钟频率为12MHz。 答:时钟频率为12MHz,1个机器周期1 us,1秒闪烁一次,0.5秒 P1.7求反1次。 0.5S=500ms=500000 us,方式1最大计数65536,让T1工作于方式1,计数50000次中断一次,初值=6=1H用R7记录中断次数,计满10个中断为500ms秒。ORG
0000H AJMP MAIN
ORG 001BHAJMP PT1INTORG 0030HSTART:MOV R7,#00HMOV
TMOD,#10H
TL1,#0B0H
TH1,#3CHSETB
TR1HERE: SJMP HEREPT1INT: MOV
TL1,#0B0H MOV
TH1,#03CH
INC R7CJNE R7,#10, PENDMOV R7, #00HCPL P1.7PEND:
RETIEND5.利用MCS-51单片机定时器/计数器设计一个数字秒表。定时范围:00-99秒;两位LED数码管显示。设时钟频率为6MHz。基本原理:利用定时器方式2产生0.5毫秒时间基准,循环2000次,定时 1秒。答:电路如图所示
把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;开始时,显示“00”,第1次按下SP1后就开始计时。第2次按SP1后,计时停止。第3次按SP1后,计时归零选择定时工作方式2;工作方式2就具有自动重装载功能,即自动加载计数初值,在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初
始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,由预置寄存器TH0以硬件方法自动给计数器TL0重新加载。汇编源程序TCNTA
;时间计数TCNTB
EQU 31HSEC
EQU 32HKEYCNT
EQU 33HSP1
BIT P3.5ORG 00HLJMP STARTORG 0BHLJMP INT_T0START:
MOV KEYCNT,#00HMOV SEC,#00HMOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,AMOV TMOD,#02HSETB ET0SETB EAWT:
JB SP1,WT;按键计数 ; ;直接寻址位为1转移(按键按下时SP1为0) LCALL DELY10MSJB SP1,WT
;接着SP1变为1INC KEYCNTMOV A,KEYCNTCJNE A,#01H,KN1SETB TR0
;TR0置1,启动定时器T0 , 允许定时/计数器计数
MOV TH0,#06HMOV TL0,#06HMOV TCNTA,#00HMOV TCNTB,#00HLJMP DKNKN1:
CJNE A,#02H,KN2CLR TR0LJMP DKNKN2:
CJNE A,#03H,DKNMOV SEC,#00HMOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,AMOV KEYCNT,#00HDKN:
JNB SP1,$LJMP WTDELY10MS:
;用于自动恢复定时初值 ;置T0定时初值250us
;可以不要 ;可以不要 ;直接寻址为0转移
MOV R6,#20D1:
MOV R7,#248DJNZ R7,$DJNZ R6,D1RET
;子程序返回 INT_T0:INC TCNTAMOV A,TCNTACJNE A,#100,NEXTMOV TCNTA,#00HINC TCNTBMOV A,TCNTBCJNE A,#4,NEXTMOV TCNTB,#00HINC SECMOV A,SECCJNE A,#100,DONEMOV SEC,#00HDONE:
MOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLE
;可以不要MOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLE
;可以不要MOVC A,@A+DPTRMOV P2,ANEXT:
RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ENDC语言源程序#include &AT89X51.H&unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; void main(void){unsigned char i,j;TMOD=0x02;ET0=1;EA=1;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1){if(P3_5==0){for(i=20;i&0;i--)for(j=248;j&0;j--);if(P3_5==0){keycnt++;
欢迎转载:
相关推荐:}

我要回帖

更多关于 迷人的8051单片机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信