




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章概论
1.什么是单片机、单片机系统、单片机应用系统?
答:单片机:又名微控制器,是将微型计算机中的中央处理器(CPU)、随机存储器
(RAM)、只读存储器(ROM)及I/O口电路等主要部件,结合连接它们的总线集成在一块
芯片上,即它是一块智能芯片。
单片机系统:单片机本身只是一块芯片,它并不能集成计算机的全部电路,因此需要加
上时钟、复位电路等,才能构成单片机最小应用系统;若最小系统资源不足时,还需扩展外
围电路和外围芯片等,从而构成能满足应用要求的单片机系统。
单片机应用系统:它是为实际的控制应用而设计的,该系统与控制对象结合在一起,是
满足嵌入式对象要求的全部电路系统。它在单片机的基础上配置了前/后向通道接口电路、
人机交互通道接口电路、串行通信接口等面向对象的接口电路。
另单片机系统和单片机应用系统都是软硬件结合的系统,缺一不可。
2.单片机有哪些特点?
答:单片机的特点很多,主要是体积小品种多,价格便宜,可靠性高,使用灵活,还有
(1)突出控制功能(2)ROM和RAM分开(3)单片机资源具有广泛的通用性(4)易于
扩展ROM、RAM、定时/计数器、中断源等资源。
3.为什么说AT89c51单片机是MCS-51系列的兼容机?AT89C51单片机有何优点?
答:AT89系列单片机是将FLASH存储器技术和MCS-51系列单片机的基本内核相结
合的单片机,且管脚也与之兼容,可以直接代换,所以说AT89c51是MCS-51系列的兼容
机。AT89C51单片机是AT89系列机的标准型单片机,它的优点主要有:内ROM是FLASH
存储器,已获得广泛应用的80C5I兼容,采用静态逻辑设计,操作频率范围宽,具有两个
软件选择的节电模式等。
4.AT89C51单片机由哪些主要功能部件组成?
答:CPU,RAM,ROM,I/O接口等。
5.面包板、电子电路实验板、PCB板在产品开发过程中的作用?它们各有什么优缺点?
答:它们都是单片机实际应用系统中的不可缺少的一部分,它们都是构成硬件系统连接
的载体介质。面包板可以多次利用,可是稳定性不高;电子电路实验板的稳定性由焊接质量
来决定,不可多次利用;PCB板最为可靠,可是如果不是量产,价格偏高,时间较长。
6.简述单片机应用研发过程和研发工具。
答;任务分析一方案论证一硬件设计一软件设计一仿真调试一实物制作与调试。
研发工具:调试仿真软件KEIL、在线仿真器、编程器或ISP下或器、PROTEUS仿真
平台、教学实验板等。
第二章AT89C51单片机内部结构基础
1.AT89C51单片机内部结构主要有哪些部件组成?它们的主要功能是什么?
答:AT89C51单片机内部结构主要有:
(1)中央处理器CPU,是单片机的核心,完成运算和控制功能;
(2)内部数据存储器(256字节),前面128个单元0()H~7FH存储内部数据,后面128
个单元80H~FFH被专用寄存器占用,用来实现对片内各部件进行管理、控制、监视;
(3)程序计数器PC,是一个16位专用寄存器,其内容为下一条执行指令的地址;
(4)Flash内部程序存储器(4K),用于存储程序、原始数据、表格等;
(5)4个并行I/O口(8位),实现数据的并行输入输出;
(6)串行通信口,实现单片机和其他数据设备之间的串行数据传送;
(7)2个定时器/计数器(16位),实现定时或计数功能:
(8)中断控制系统,共5个中断源,分高低两个优先级;
(9)一个片内振荡器和时钟电路,为单片机产生时钟脉冲序列;
(10)总线,用于连接各个部件和单片机系统的扩展。
2.请将AT89c51的40个引脚按4类(电源、时钟、控制和I/O引脚)分类。
答:电源(2):Vss接地端,Vcc接DC正电源线;
时钟(2):XTAL1,XTAL2
控制(4):RST复位输入,ALE/(/PROG)地址锁存允许/编程脉冲,/PSEN外ROM读选
通信号,(/ES)/VPP内外ROM选择/编程电源
I/O引脚(32):P0-P3并行8位I/O口
3.AT89c51单片机引脚/EA、RST、ALE、/PSEN的功能是什么?
答:/EA是片内外ROM选择瑞,ROM的寻址范围为64KB,而AT89C51内部只有4KB
ROM,当不够用时可在外扩展ROMo当/EA信号为低电平时,指访问外部ROM;当/EA
为高电平时,则先访问内部ROM,当PC值超过4KB时自动转向外部ROM中执行。
RST复位信号,当此引脚上的信号出现至少两个机器周期的高电平将使单片机复位。
ALE地址锁存控制信号,当系统扩展时,ALE用于控制把P0口输出的低8位地址送入
锁存器存起来,以实现低位地址和数据的分时传送。
/PSEN外部ROM的读选通信号,在访问外部ROM时,每个机器周期两次PSEN有效
(低电平),但在此期间内,每当访问外部数据存储器时,这两次有效的PSEN将不出现。
4.什么是单片机的振荡周期、状态时钟周期、机器周期和指令周期?它们之间有什么
关系?
答:单片机是按一定的时序进行工作的,而时序是通过XTAL1和XTAL2引脚跨接振
荡器与内部振荡电路共同产生固定频率的波形。我们把振荡频率的倒数称振荡周期。状态时
钟周期是指单片机时钟信号的周期,是振荡周期的两倍,又称状态周期。一个机器周期由6
个状态组成,即机器周期等于6个状态时钟周期或等于12个振荡周期。指令周期是指单片
机执行一条指令所占用的时间,根据指令的不同,可包含有1、2、4等机器周期的倍数。
5.当AT89c51单片机外接晶振为4MHz时,其振荡周期、状态时钟周期、机器周期、
指令周期的值各为多少?
答:振荡周期为0.25us,状态时钟周期为0.5us,机器周期为3us,指令周期根据指
令而不同可能是3us、6us、I2us等。
6.简述AT89c51单片机复位条件,并说明复位后寄存器中的数值状态。
答;当RST引脚上的复位信号保持至少两个机器周期的高电平时,即满足复位条件。
复位后程序计数器PC的值初始化为0000H,这样单片机在复位后就从程序存储器ROM
的0000H单元开始执行程序。另外其他的寄存器内容为:ACC,B,PSW,TCON,TL0,
THO,TL1,THI,SCON,TMOD均为OOH,ffiDPTR=0000H,SP=07H,P0~P3=0FFH,
IP=XX000000B,IE=OXXOOOOOB,PCON=OXXXOOOOBo参考表2・1。
7.参阅图2-5,分析上电复位过程。
答:图2-5中A是通过外部复位电容充电实现复位的,单片机上电的瞬间,电容两端
的电位不会突然变化,则RST的电位为Vcc(高电平),随着充电电流的减小,RST引脚电
位逐渐下降,而其维持高电平的时间取决于电容的充电时间,应大于两个机器周期。B图是
在A的基础上引入了按键复位,按下按键时RST为高(电阻分压),按键松开后RST逐渐
降为低电平,复位结束。
8.AT89c51单片机的ROM空间中,这6个地址(0、03H、OBH、13H、1BH、23H)
有什么特殊的意义和用途?用户应怎样合理安排?
答:他们都是特殊的地址单元,其中0000H是单片机复位后,系统开始取指、执行指
令的地址,即单片机复位后PC值为0000H;而03H、OBH、13H、1BH、23H是单片机5
个中断服务子程序的入口地址。相邻中断入口地址间隔8个单元。当程序使用中断时,在入
口地址处安放一条跳转指令,而相应的中断服务子程序从转移地址开始安放,若中断服务子
程序小于等于8个单元可直接存在入口地址开始的8个单元内。若没有用到中断功能,这些
单元就可以作为一般的程序存储器用。
9.画图说明AT89C51单片机的存储空间结构。
答:
程序存储器ROM结构内RAM存储器结构
10.AT89C51单片机的片内RAM是如何分区的,各有什么功能?
答:AT89C51单片机内RAM,最低32单元(00H-1FH)为工作寄存器区;工作寄存
器上面的16个单元(20H~2FH)构成固定的可位寻址存储区;用户RAM区(30H~7FH),
可作为数据缓冲区,用于存放各种数据和中间结果,同时没有使用的工作寄存器单元和可位
寻址单元都可作为数据缓冲区,同时该区也可作为堆栈区,栈底可以根据片内数据存储器的
使用情况由指令设定。
H.AT89C851单片机有多少专用寄存器?分布在何地址范围?若对片内84H读/写将会
产生什么结果?(提示:考虑84H为位地址、为字节地址两种情况)
答:AT89C51单片机有21个专用寄存器,零散分布在内部RAM的高128单元
(80H-FFH)o
84H位地址为P0.4位,对其进行读写就是对P0口的第五位进行读写;而84H为字节
地址时因为该单片机本身未对84H定义专用寄存器,因此不能对84H字节地址进行读写。
12.分别说明程序计数器PC和堆栈指针SP的作用?复位后PC和SP中值各为何?在
程序设计时,有时为什么要对SP赋值?
答:程序计数器PC时一个16位的计数器,其内容为将要执行的指令的首地址,寻址
范围达64KB,PC具有自动加1功能,以实现程序的顺序执行。PC穴可寻址,无法对它进
行读写。堆栈指针SP的内容就是堆栈栈顶的存储单元地址,向堆栈中每存一个数,SP中的
值就自动加1,每取一个数就自动减1,SP始终指在栈顶地址。
复位后,PC=0000H,使单片机从0000H单元开始执行,SP=O7H,这样堆栈就要从08H
开始,而08H属于工作寄存器区,若程序要用到这些寄存器组则要将SP设置大些,因此堆
栈最好在内部的RAM(30H-7FH)中开辟。
13.开机复位后,CPU作用的是哪组工作寄存器?它们的地址是什么?CPU如何确定
和改变当前工作寄存器?
答:开机复位后,CPU作用的时第0组工作寄存器,它们的地址是内部RAM的00H~07H,
CPU若要确定当前工作寄存器,则读出专用寄存器PSW的RS1和RSO内容;若要改变当
前工作寄存器,则需要修改PSW的RS1和RSO的内容。
14.位地址3EH和字节地址3EH有何区别?位地址3EH具体在片内RAM中什么位?
答:字节地址3EH是内RAM低128字节中的一个字节存储单元。而位地址是针对可
位寻址区域而言的,位寻址区占用了字节地址的20H-2FH共16个字节,字节地址20H中
的20H.0〜20H.7位地址是00H~08H,因此位地址3EH是字节地址27H中的第7位。
第三章AT89C51指令系统
1.简述下列基本概念:指令,指令系统,机器语言,汇编语言。
答:指令是单片机CPU执行某种操作的命令。
指令系统是一台计算机所能执行的指令集合。
机器语言即二进制代码语言,是计算机可以直接识别。
汇编语言是用助记符、字符串和数字等来表示指令的程序语。
2.简述AT89s51单片机的指令格式
答:该单片机的指令由两部分组成,即操作码和操作数。操作码用来规定指令进行什么
操作,而操作数则是指令操作的充象,操作数可能是一个具体的数据,也可能是指出到哪里
取得数据的地址或符号。指令格式一般为:
[标号:]操作码[操作数1][,操作数2][,操作数3][;注释]
3.简述AT89s51的寻址方式和所能涉及的寻址空间
答:共有7种寻址方式,见表3-2。
分别是:(1)寄存器寻址:寻址范围为通用寄存器组,共4组32人,但只能使用当前寄
存器组,因此使用前需要通过对PSW种的RSI、RSO位的状态进行设置;(2)直接寻址:寻
址范围为内部RAM,包括低128位用户RAM区和高128位专用寄存器;(3)寄存器间接寻
址:寻址范围为内部RAM低128位,外部RAM64KB(低256单元可以使用DPTR和R0、
R1作为间接寻址寄存器,而其他单元只能用DPTR作为间接寻址寄存器);(4)立即寻址:
直接给出立即数,不涉及寻址空间;(5)变址寻址:只对程序寄存器进行寻址;(6)相对寻址:
以PC的内容为基值,加上指令机器代码中'相对地址'形成新的PC值转移;(7)位寻址:
寻址空间包括内部RAM位寻址区(20〜2FH)和专用寄存器的可寻址位。
4.要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式?
答:访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方式,
且用DPTR可以访问64KB,而用R0或者R1只可访问低256字节。
5.在AT89s51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90Ho
请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行每条指令后的结果。
答:
指令指令说明源操作数寻址方式结果
MOVA,40H将内部RAM中40H内容传送到累加器A中
(A)一(40H)直接寻址(A)=48H
MOVRO,A再将A中内容传送给R0
(R0)-(A)寄存器寻址(R0)=48H
MOVPI,#OFOH将立即数OFOH送到P1口,即PI.4~PI.7位1,其余为0
(P1)-0F0H立即数寻址(P1)=OFOH
MOV@R0,30H将30H中的内容,传放到以R0单元内容为地址的单元中
((R0))-(30H)直接寻址((R0))=(48H)=38H
MOVDPTR,#3848H将立即数3848传送给DPTR数据指针
(dptr)-3848H立即数寻址(DPTR)=3848H
MOV40H,38H将内部RAM中38H内容传送到40H单元中
(40H)-(38H)直接寻址(40H)=40H
MOVRO,30H将30H中的内容给R0寄存器
(R0)-(30H)直接寻址(R0)=38H
MOVP0,R0将RO的内容传送到P0
(P0)-(RO)寄存器寻址(P0)=38H
MOVA,@R0将RO内容为地址的该单元内容传送给A
(A)一((R0))寄存器间接寻址(A)=40H
MOVP2,Pl将Pl的内容传送给P2
(P2)-(Pl)直接寻址(P2)=0F0H
6.指出下列指令的源操作数的寻址方式
MOVA,65H直接寻址
MOVA,#65H立即数寻址
MOVA,@R0寄存器间接寻址
MOVA,R2寄存器寻址
MOVCA,@A+PC变址寻知:
7.内部RAM和特殊功能寄存器各用什么寻址方式?
答:内部RAM有寄存器寻址方式、直接寻址方式和间接寻址方式;
特殊功能寄存器除A外只能进行直接寻址。
8.已知:(A)=5BH,(RI)=30H,(30H)=0CEH,(Pl)=71H,(PSW)=80H,(PC)
=2000H,(205CH)=46H,(SP)=30H,(B)=78Ho分别求各条指令执行后的结果(要求
进行二进制运算验证)及标志位Cy、P的影响。
(1)MOVA,@R1(A)=0CEHP=1,C不变
(2)MOV40H,30H(40H)=OCEHP和C不变
(3)MOVP1,R1(P1)=3OHP和C不变
(4)MOVCA,@A+PC(A)=46HP=1,C不变
(5)PUSHB(3IH)=78H,(SP)=31HP和C不变
(6)POPDPH(DPH)=0CEH,(SP)=29HP和C不变
(7)XCHDA,@R1(A)=05EH,(30H)二CBHP=1,C不变
(8)ADDA,30H(A)=29HP=1,C=1
(9)ADDCA,Pl(A)=CDHP=l,C=0
(10)SUBBA,P1(A)=E9HP=LC=1
(11)ANLP1,#OFH(P1)=O1HP和C不变
(12)CLRPSW.7C=0
(13)RLCA(A)=B7HP=0,C=0
(14)ORLC,90HC=1,P不变
9.对下面一段程序加上机器码和注释,并说明程序运行后寄存器A、R0和内部RAM
50H、51H、52H单元的内容。
MOV50H,#50H755050;(50H)-50H
MOVA,50HE550;(A)-(50H)
MOVRO,AF8;(R0)—(A)
MOVA,#30H7430:(A)70H
MOV@R0,AF6;((R0))一(A)
MOVA,#50H7450;(A)TOH
MOV51H,AF551;(51H)-(A)
MOV52H,OOH755200;(52H)-OOH
答:运行后寄存器(A)=50H,(R0)=50H,(50H)=30H,(51)=50H,(52H)=00H
10.区别下列各指令中20H的含义,在每条指令后加上注释。
MOVA,#20H将20H立即数传送给A
MOV45H,20H将内部RAM中20H单元的内容传送到45H中
MOVC,20H.0将内部RAM中20H单元内容的第0位(最低位〕传送给C
MOVC,20H将内部RAM中20H位地址内容传送给C
11.写出完成以下功能的指令
将立即数30H送到R1;
将内RAM30H中的数据送到内RAM78H单元;
将立即数30H送到以R0中内容为地址的存储器中;
将R2中的内容送到P1:
将内RAM60H单元的数据送到外RAM60H单元;
将内RAM60H单元的数据送到外RAM1060H单元;
将ROMIOOOH单元的内容送到内RAM30H单元;
使ACC.7置位;
使累加器的低4位清零;
使P1.2与CY相与,结果送CY;
立即数45H、93H进行逻辑与、或、异或操作;
两立即数求和:1C0H+45H,结果按高低8位存在30H、31H中。
答案:(l)MOVRl,#30H(2)MOV78H,30H
(3)MOV@R0,#30H(4)MOVP1,R2
(5)MOVA,60H;;
movp2,#0;
movr0,#60h;
movx@rO,a
(6)MOVA,60H;;
movdptr,#1060;
movx@dptr,a
(7)MOVA,#00H
MOVDPTR,#IOOOH
MOVCA,@A+DPTR
MOV30H,A
(8)SETBACC.7
(9)ANLA,#OFOH
(10)ANLC,pl.2
(11)与:MOVA,#45H
ANLA,#59H
或:MOVA,#45H
ORLA,#59H
异或:PMOVA,#45H
XRLA,#59H
CLRC
MOVR2,#I
MOVA,#0C0H
ADDA,#45H
MOV31H,A
MOVA,R2
ADDCA,#0
MOV30H,A
12.写出下列指令执行过程中堆栈的变化
设堆栈初值为X:
MOVR6,#11H(SP)=X(堆栈不变)
MOVR7,#23H(SP)=X(堆栈不变)
ACALL200H(SP)=X+2
;(X+l)=第4条指令的首址PC低8位(X+2)=第4条指令的首址PC高8位
POP50H(SP)=X-1
POP51H(SP)=X-2
SJMP$
ORG200H
RET
答:执行过程中,前面两条为立即寻址指令,堆栈不变;执行第三条ACALL指令时,
首先将程序寄存器PC的当前值加2,接着先后将PC的低八位和高八位分别进栈,(SP尸
(SP)+2;然后再将PC内容中的低11位用200H来替代,同时程序跳到第七条ORG200H中,
接着RET表示子程序返回,将原先压入堆栈的PC值弹出,(SP)=(SP)-2;最后两条POP指
令执行后将SP所指地址中的内容赋给50FLSP减1后再将SP所指地址中的内容赋给51H,
SP内容再减1给SP,最后程序结束。
13.请写出能实现下列功能的程序段:
(1)一个16位数据,高低字节分别放在20H和21H中,试将该数乘以2
MOVA,21H
CLRC
RLCA
MOV21H.A
MOVA,20H
RLCA
MOV20H,A
(2)16位二进制数由高位到低位放在30H和31H单元,将其内容加1;
MOVA,31H
ADDA,#()1H
MOV31H,A
MOVA,30H
ADDCA,#00H
MOV30H,A
(3)将DPTR中的数据减5;
CLRC
MOVA,DPL
SUBBA,#05H
MOVDPL,A
MOVA,DPH
SUBBA,#00H
MOVDPh,A
(4)有3个位变量X,Y,Z,请编写程序实现Y=X+YZ的逻辑关系式。
XBIT30H
YBIT31H
ZBIT32H
MOVC,Y
ANLC,Z
MOV20H,C
MOVC,X
ORLC,20H
MOVY,C
笫四章AT89C51汇编语言程序设计
1.将一个按高低字节存放在21H、20H中的一个双字节乘以2后,再按高低次序将结
果存放到22H、21H、20H单元
ORGO
STAR:CLRC
MOV20H,#0E2H:设低字节的数据是E2H
MOV21H.#OF3H;设高字节的数据是F3H
MOVA,20H
MOVB.#2H
MULAB
MOV20H,A
MOV23H,B
MOVA,21H
MOVB.#2H
MULAB
ADDCA,23H
MOV21H,A
MOV22H,B
SJMP$
END
2.试编程,将片外RAM1000H-1050H单元的内容置为55H。
MOVP2,#10H
MOVRO,#00H
MOVA,#55H
MOVX@R0,A
MOVR0,#50H
L0:MOVX@R0,A
DJNZRO,LO
SJMP$
END
3.试编程统计数据区长度的程序,设数据区从片内RAM30H单元开始,该数据区以0
结束,统计结果放入2FH中。
MOVR0,#30H
L0:MOVA,@R0
JZL1
INCRI
INCRO
SJMPLO
LI:MOV2FH,R1
4.试编写程序,将片外RAM2000H~200FH数据区中的数据由大到小排列起来。
ORGO
L0:MOVP2,#20H
MOVR0,#00H
MOVR7,#OFH
CLRFO
LOOP:MOVXA,@R0
MOV31H,A
INCRO
MOVXA,@R0
CLRC
CJNEA,31H,L1
LI:JCL2
DECRO
MOVX@R0,A
MOVA,31H
INCRO
MOVX@R0,A
SETBFO
L2;DJNZR7,LOOP
JBFO,LO
SJMP$
END
5.若晶振频率位6MHZ,试计算下面延时子程序的延时时间
DELAY:MOVR7,#0F6H:I个机器周期
LP:MOVR6,#0FAH:1个机器周期
DJNZR6,$;2个机器周期
DJNZR7,LP;2个机器周期
RET;2个机器周期
答:机器周期为2us,则有:[1+(1+2X250+2)X246+2]X2us=247482us
6.试分别编写延时20ms和1s的程序
设晶振频率为12M
20ms:
ORGO
MOVR1,#102
LI:MOVRO,#48
L2:NOP
NOP
DJNZR0,L2
NOP
DJNZRI,LI
NOP
NOP
NOP
NOP
NOP
NOP
NOP
END
Is:
ORGO
MOVR2,#50
LO:MOVRI,#100
LI:MOVRO,#49
L2:NOP
NOP
DJNZR0,L2
NOP
DJNZRI,LI
DJNZR2,L0
SJMP$
END
7.试编写利用调用子程序的方法延时Imin的程序。
ORG0H
MOVR2,#60
AO:LCALLDLY
DJNZR2,A0
SJMP$
DLY:MOVR2,#50
L0:MOVRI,#100
LI:MOVR0,#49
L2:NOP
NOP
DJNZR0,L2
NOP
DJNZRI,LI
DJNZR2,L0
RET
END
8.用查表程序求0〜6之间的整数的立方。已知整数存在A中,查表结果存入片内RAM
31H中。
ORGO
MOVA,#DATA
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV30H,A
SJMP$
TAB:DB0,1,8,27,64,125,216
END
若立方数超过一个字节,在两个字节以内,由以下程序实现。
ORG0000H
MOVA,#5
RLA
MOVRO,A
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV31H.A;高位
MOVA,R0
INCA
MOVCA,@A+DPTR
MOV30H,A;低位
SJMP$
TAB:DW0,1,8,27,64,125,216
END
9.编写程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并将查找结果存
入51H单元。
MOVR1,#OOH
MOVR0,#30H
MOVR2,#21H
L0:MOVA,@RO
CJNEA,#OFFH,L1
INCRI
LI:INCRO
DJNZR2,L0
MOV51H,RI
SJMP$
END
10.试用子程序求多项式:Y=(A+B)2+(B+C)2(要求:两数之和不能超过16)
XEQU30H;X代表A
YEQU31H;Y代表B
ZEQU32H;Z代表C
FEQU33H;F中存放计算结果Y
MOVR1,X
MOVR2,Y
LCALLLO
MOVR3,A
MOVRI,Y
MOVR2,Z
LCALLL0
ADDA,R3
MOVF,A
Sjmp$
L0:MOVA,RI
ADDA,R2
MOVB,A
MULAB
RET
end
11.已知(60H)=33H,(61H)=43H,试写出程序的功能和运行结果,
ORGOOOOh
SS:MOVR0,#61H
MOVR1,#70H
ACALLCRR
SWAPA
MOV@R1,A
DECRO
ACALLCRR
XCHDA,@RI
SJMP$
CRR:MOVA,@R0
CLRC
SUBBA,#30h
CJNEA,#OAH,NEQ
AJMPBIG
NEQ:JCCEN
BIG:SUBBA,#07H
CEN:RET
该程序的运行结果是:(60H)=33H,(61H)=43H,(70H)=C3H
12.内部RAM的30H单元开始存放着一组无符号数,其数目存放在21H单元中。试编
写程序,求出这组无符号数中的最小的数,并将其存入20H单元中。
MOVR0,#30H
MOVA,@R0
MOV20H,A
DEC21H
LOOP:INCRO
MOVA,@R0
CJNEA,2OH,L1
LI:JNCL2
MOV20H,A
L2:DJNZ21H,LOOP
SJMP$
END
13.写程序实现散转功能:
(R2)=0转向RRO
(R2)=l转向RR1
(R2)=2转向RR2
ORGO
MOVR2,#2H;设(R2)=2
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
JMP@A+DPTR
TAB:DBRRO-TAB
DBRR1-TAB
DBRR2-TAB
RRO:MOVA,#1;RRO:将立即数1赋给A
SJMPENDF
RR1:MOVA,#2;RR1:将立即数2赋给A
SJMPENDF
RR2:MOVA,#3;RR2:将立即数3赋给A
SJMPENDF
ENDF:SJMP$
14.试按子程序形式编程,招单字节二进制数高4位、低4位分别转换成两个字节的
ASCII码。
MOVA.RO;将R0中的内容作为贝转换对象
ANLA,#OFH;取低四位
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV20H.A;低四位转换后存放于20H中
MOVA,RO
ANLA,#OFOH;取高四位
SWAPA
MOVCA,@A+DPTR
MOV21H.A;高四位转换后存放于21H中
TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB4IH,42H,43H,44H,45H,46H
第五章AT89C51输入/输出(I/O)口及其简单应用
1.AT89C51四个I/O口使用时有哪些分工和特点?试作比较,并填写下表。
I/O口相同的结构不同的结构基本功能第二功能SFR字节地址位地址范围驱动能力
P0都有锁存器、输入缓冲器和输出驱动器多路选择开关输入输出数据线
/低8位地址线8OH8O~87H强,8个LSTTL输入,8个引脚最大吸收电流26mA
Pl输入输出90H90~97H4个LSTTL输入,8个引脚最大吸收流15mA
P2多路选择开关输入输出高8位地址线A0HA0-A7H
P3选择输出功能输入输出第二功能BOHBO〜B7H
2.AT89C51的4个I/O口作为输入口时,为什么要先写“1”?
答:AT89C51读操作时,为读入正确的引脚信号,必须先保证场效应管截止。因为场
效应管导通,引脚电平为0,显然,从引脚输入的任何外部信号都被场效应管强迫短路,严
重时可能因有大电流流过场效应管,而将它烧坏。为保证场效应管截止,必须先向锁存器写
“1”,使场效应管截止。
3.P0口作输出口时,为什么要外加上拉电阻?
答:因为当P0口作数据传输作用时,输出驱动器是开漏电路,需要外加上拉电阻。
4.为什么当P2口作为扩展程序存储器的高8位地址后,就不宜作I/O口用?
答:P2口虽然有地址/数据的双重作用,可是在同一时间只能在一个状态下工作,如
果有外部ROM,访问的操作连续不断,P2口作为高8位要不断的传送地址,因此不宜再作
为数据传输用,如果是外RAM,则根据对其读写的频繁度来决定是否将P2口作为数据传
输。
5.I/O口直接驱动数码管显示时,选择共阴型数码管还是共阳型数码管?为什么?试根
据I/O口的驱动能力及发光二极管的额定电流参数,确定图5-9中限流电阻的阻值。
答:选择共阳型数码管,因为共阳数码管是用低电平(“0”)点亮的,而单片机输出低电
平的吸收电流大:而共阴数码是用高电平(“1”)点亮的,而单片机输出高电平的驱动电流
小,所以采用共阳数码管。其中图5-9中的电阻可以选择300欧姆的,因为去除数码管的
2V左右的压降,要保证10mA的电流,限流电阻的阻值约是300欧姆。
6.试依图5-4简述P0口的工作原理。
答:从P0口的位结构图中(图5-4),可以知道它包含输出锁存器,输入缓冲器(2个),
输出驱动器和一个多路开关及输驱动的上拉电路。P0口可以作为通常的I/O口进行数据
的读操作和输出操作,同时还可以作为地址/数据线来复用,它的工作原理如下:
输入/输出操作:多路开关连接C端,和锁存器连接,起输出/Q与Q0就接通,且内部
信号使得与门输入端2为0,那么起输出3端也就为0,使Q1截止,输出驱动器处在开漏
状态,这时只要外接一个上拉电阻,就能够有效的进行输出/读操作;
地址(低8位)/数据线品用:将多路开关和B端连接,则Q1的输入就是地址/数据信
号,Q0位其取反的信号,此时A点的信号就是引脚输出的地址/数据信号。
第六章AT89C51中断系统与定时器/计数器
1.什么叫中断?设置中断有什么优点?
答:单片机执行程序的过程中,为响应内部和外部的随机发生的事件,CPU暂时终止
执行当前程序,转去处理突发事件,处理完毕后,再返回来继续执行原来终止了的程序,这
一过程称为中断。设置中断使单片机能够及时的响应并处理运行过程中内部和外部的突发事
件,解决单片机快速CPU与慢速外设间的矛盾,提高单片机工作效率及其可靠性。
2.写出AT89c51单片机5个中断源的入口地址、中断请求标志名称、位地址和所在的
特殊功能寄存器。
中断源入口地址中断请求标志名称中断请求标志位地址所在特殊寄存器
INT00003HIE089HTCON
T0000BHTF08DHTCON
INT10013HIE18BHTCON
TI001BHTF18FHTCON
串行口0023HTI、RI99H、98HSCON
3.开AT89c51单片机的外中断0,如何操作?写出操作指令。
答:SETBEA
SETBEX0
或MOVIE,#l000000IB
4.中断处理过程包括哪4个步骤?简述中断处理过程。
答:中断过程可以分为四步,分别是中断请求、中断响应、中断服务和中断返回。当中
断源要CPU为其服务时,先发出一个中断请求信号,CPU不断查询口断请求标志,一旦查
询到某个中断请求标志置位,则根据中断响应条件去响应请求,从而转去执行中断服务程序。
但转去中断程序时,要求先保护现场,将相关的在服务子程序可能改变的存储单元内容压入
堆栈保护,然后再去执行中断服务程序主体,最后中断返回,再返回前将原先的堆栈内容出
栈,即恢复现场。
5.中断响应需要哪些条件?
答:条件:(1)已经开总中断(EA=1)和相应中断源的中断;(2)未执行同级或更高
级的中断;(3)当前执行指令的指令周期已经结束;(4)正在执行的不是RET1指令和访问
IE、IP的指令,否则要再执行一条指令后才能响应。
6.为什么在执行RETI或访问IE、IP指令时,不能立即响应中断?
答:因为RETI牵涉到堆栈操作,中断响应也牵涉到堆栈,它们是同一堆栈,且要开放
同级中断,中断系统状态正在发生变化;IE和IP指令是中断控制相关存储器,修改后还需
要一段稳定的时间。所以不能立即响应中断。这也是中断响应的限制条件。
7.在响应中断过程中,PC的值如何变化?
答:响应中断的过程中,PC值随程序改变,在保护现场时将下条指令首地址压入堆栈,
然后将中断的入口地址给PC,进入中断服务程序;中断返回时,从堆栈取出断点地址给PC。
8.在89c51单片机内存中应如何安排程序区?
答:(1)从。号地址开始存放程序,按地址号从小到大安排;(2)在使用中断功能时,
一般3~30H留作中断使用,其他程序在30H以后的存储空间。因为5个中断源入口地址间
隔只有8个单元,一般的中断服务程序代码长度都超过8,所以在各中断入口地址安排一条
无条件转移指令,转入中断服务程序。
89c51片内有4kB的程序存储单元,其地址为OOOOH〜OFFFH,单片机启动复位后,程
序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。
但在程序存储中有些特殊的单元:其中一组是0000H〜0002H单元,系统复位后,PC
为OOOOH,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在
这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序;另一组是
0003H〜002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H
—000AH外部中断0中断地址区,(JOOBH—0012H定时/计数器0中断地址区,001SH
OO1AH外部中断1中断地址区,OD1BH—OO22H定时,计数器1中断地址区,0023H—002AH
串行中断地址区。这40个单元是专门用于存放中断处理程序的入口地址单元,中断响应后,
按中断的类型,自动转到各自的中断区去执行程序。从上面可以看出,每个中断服务程序只
有8个字节单元,用8个字节来存放一个中断服务程序显然是不可能的。因此以上地址单元
不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,我们是在中断响
应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间
去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程
序。
9.为什么一般的中断服务程序要在中断入口地址处设一条转移指令?
答:因为每个中断的地址区只有8个单元,而一般的中断服务程序都大于8个单元的内
容,所以需要在另外的空间来存储中断服务程序,因此需要在中断入口地址处设一条转移指
令转入别处的中断服务程序空间。
10.AT89C51单片机中断优先级有几级?优先级和优先权如何区别?
答:两级。
优先级分为高优先级和低优先级。当几个中断源同时请求时,CPU先服务高优先级的
中断,可由程序编程决定。优先权是将同一优先级的所有中断源按先后进行排序,其中外部
中断0最高,串行口中断最低,车编程决定。
11.试分析以下中断源得到服务程序的先后顺序的可行性。若能,应如何设置中断源的
中断优先级?若不行,请讲出理由。
(1)TO、Tk/INTO、/INTk串行口
可行,将TO和T1设置为高优先级,其他为低优先级
(2)串行口、/INTO、TO、/INTI、T1
可行,将串行口中断设置为高优先级,其他为低优先级
(3)/INTO、Tl>/INTI、TO、串行口
不行,囚为该单片机的优先级只有两级,然后综合考虑优先权该排列顺序不可行
(4)/INTO、/INTI、串行口、Tl、TO
不行,两级优先级+优先权
(5)串行口、Tl、ZINTK/INTO、TO
不行,两级优先级+优先权
(6)TO、/INTI、Tl、/INTO、串行口
可行,将TO、INTI和T1设置为高优先级,其他为低优先级
(7)/INTO、串行口、TO、Tl、/INTI
不可行,两级优先级+优先权
12.AT89C51单片机外中断采用电平触发方式时,如何防止CPU重复响应外中断?
答:采用电平触发方式时,应该在硬件电路上和中断服务程序中采取撤除中断请求信号
的措施。其中硬件电路如图所示:
当外部设备有低电平触发方式的外中断请求时,中断信号经反相器,加到锁存器CP端,
作为CP脉冲。由于D端直接接地为0,Q端输出低电平,触发/INTO产生中断。当CPU相
应中断后,在该中断服务程序中安排两条指令:
ANLP1,#OFEH
ORLP1,#01H
使P1.0输出一个负脉冲信号,其延时时间为2个机器周期,加到锁存器Sp端(强迫置
1端),足以使锁存器置位,撤销引起重复中断的INTO低电平信号,从而撤除中断请求。
13.AT89C5I单片机响应中断的优先顺序应依什么原则?
答:先优先级从高到低,同优先级的再按优先权从高到低的响应原则。
14.什么叫保护现场?需要俣护哪些内容?什么叫恢复现场?恢复现场与保护现场有
什么关系?需遵循什么原则?
答:一旦进入中断服务程序,将与断点处有关且在中断服务程序中可能改变的存储单元
内容通过PUSHdireci指令压入堆栈保护,以便中断返回时恢复,称之为保护现场;与保护
相对应的,在返回前通过POPdirect指令恢复现场,再将保护现场压入堆栈的内容弹出送到
原来相关的存储单元后再中断返回。使用堆栈保护现场、恢复现场要遵循堆栈先进后出的操
作规则。
15.已知有5台外围设备,分别为EXI-EX5,均需要中断。现要求EXI-EX3合用INTO,
余下的合用INT1,且用P1.0-PL4查询,试画出连接电路,并编制程序,当5台外设请求
中断(中断信号为低电平)时,分别执行相应的中断服务子程序SEVER1~SEVER5。
答:
连接电路如上图,外围设备有中断信号时,对应的P1.0〜P1.4口为高电平信号输出。
通过或门判断是否有中断,又因单片机的外部中断信号是低电平有效,所以需要再添加一个
反相器使得中断信号有效。
程序如下:
ORG0000H
SJMPSTAR
ORG03H
SJMPINTOS
ORGI3H
SJMPINT1S
ORG30H
STAR:MOVIE,#85H;开总中断,外部中断0和1
MOVTCON,#OOH;低电平触发
SJMP$
INTOS:MOVC,P1.0
JCSEVERI
MOVC,P1.1
JCSEVER2
MOVC,P1.2
JCSEVER3
RETI
INTIS:MOVC,P1.3
JCSEVER4
MOVC,P1.4
JCSEVER5
RETI
SEVER1:.......
SEVER2:.......
SEVER3:.......
SEVER4:.......
SEVER5:……
END
16.如何理解加法计数器和减法计数器?
答:加法计数器是指一个指令周期或外部脉冲时将加法计数器内容加1,而减法刚好相
反,当溢出时产生中断。
17.定时器/计数器在什么情况下是定时器?在什么情况下是计数器?
答:当TMOD寄存器中的C,(T)位内容为1时,为计数器工作方式使用;当其内容
为0时为定时器工作方式使用。
18.定时器/计数器有哪些控制位?各控制位的含义和功能是什么?
答:定时器/计数器的工作由两个特殊寄存器来控制,各有8位。其中TMOD是工作方
式寄存器,高四位和低四位分别用于控制TO和TI,作用相同,因此这里就介绍低四位,它
们分别是:MO,Ml这两位用于工作方式选择,对应于定时器状态而言:C/(T)位是计数/定
时方式选择位;GATE是门控位,用于定时器启动信号源的选择。另外还有一个控制寄存器
TCON,其中低四位用于外部中断信号控制,高四位用于定时器/计数器控制,其中:TR1
定时器/计数器1启动标志;TR0定时器/计数器0启动标志。
19.定时器/计数器的工作方式如何设定?
答:其工作方式由TMOD寄存器中的C/(T)位来确定,内容为1时为计数器工作方
式使用;内容为0时为定时器工作方式使用。在定时工作方式下,又由Ml和M0两位来选
择定时器工作方式。
20.试归纳89c51单片机的延时器/计数器0、1、2三种工作方式的特点、初始化设置
及使用方法。
答:MlM0=00,工作方式0,为13位计数器,由TL低5位和TH的8位组成,13位
计满溢出;MIM0=01,工作方式1,为16位计数器,由TL为低8位,TH为高8位组成;
MlM0=10,工作方式2,为8位i-数器,其中TL作为计数器,TH作为预置寄存器,当TL
的计数溢出时自动将TH的预置值装入TL计数器中;M1MO=11,工作方式3。
21.定时器/计数器的最大定时容量、定时容量、初值之间的关系如何?
答:定时器/计数器的最大定时容量是指从。开始到最终溢出的容量,在方式0和方式2
下最大定时容量分别为213=8192和28=256,而定时容量是根据当前初值到最终溢出的容
量;而初值就是指当前定时器/计数器在定时/计数开始之前赋予的数值,定时容量就是最大
容量和初值的差。
22.已知FOSC=6MHZ,试编写程序,使P1.7输出高电平宽40us,低电平宽360us的
连续矩形脉冲。
答:利用TO分别定时器40us和360us来控制P1.7
初值计算过程:根据晶振得机器周期为2us,初值(T0)=28-40/2=ECH(40us)初值(TO)
=28-360/2=4CH(360us)
程序如下:
ORG0000H
SJMPMAIN
ORGOBH
SJMPTOS
ORG30H
MAIN:CLRP1.7
MOVTMOD,#22H
MOVTH0,#0ECH
MOVTL0,#0ECH
SETBEA
SETBETO
SETBTRO
HERE:SJMP$
T0S:CPLP1.7
MOVC,P1.7
JCL1
MOVTHO,#OECH
MOVTL0,#0ECH
SJMPL2
LI:MOVTH0,#04CH
MOVTL0,#04CH
L2:RETI
END
23.已知FOSC=6MHZ,试编写程序,利用TO工作在方式2,使PI.0和Pl.1分别输
出周期为1ms和400us的方波。
答:程序如下:采用200us定时
初值计算过程:根据晶振得机器周期为2us,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司设备搬运合同样本
- 佣金 居间服务合同标准文本
- 做被子合同标准文本
- 保安入职合同标准文本
- 供货商食品合同标准文本
- ktv 私人装修合同样本
- 个人申请劳务合同标准文本
- 保洁和保安合同标准文本
- 保暖厂房建造合同样本
- pet采购合同样本
- 6《请帮我一下》(第1课时)课件-2024-2025学年道德与法治一年级下册课件(统编版2024)
- 2020-2021学年江苏省南京外国语河西初级中学等三校七年级(下)期中数学试卷
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 10万吨橡塑一体化能源再生项目环评报告表
- 35KV集电线路铁塔组立专项方案
- 板的配筋面积表
- 《城市规划设计计费指导意见》----中规协秘字[2022]第022号-----(2022.6.1)
- 小儿推拿常用穴位教案
- 中考化学命题研究中考真题分析及备考策略
- 财务预算管理(共25页)(英文版).ppt
- 安捷伦1120高效液相使用、维护与保养规程
评论
0/150
提交评论