资源描述
第一章.单片机具有哪些特点
(1)片内存储容量越来越大。
(2抗干扰性好,可靠性高。
(3)芯片引线齐全,容易扩展。
(4)运行速度高,控制功能强。
(5)单片机内部的数据信息保存时间很长,有的芯片可以到达100年以上。
1 . 89C51单片机内包含哪些主要逻辑功能部件?
答:80C51系列单片机在片内集成了以下主要逻辑功能部件:
(l)CPU(中央处理器):8位
⑵片内RAM:128B
(3)特殊功能寄存器:21个
(4)程序存储器:4KB
(5)并行I/O 口 :8位,4个
(6)串行接口:全双工,1个
(7)定时器/计数器:16位,2个
(8)片内时钟电路:1个.什么是微处理器(CPU)、微机和单片机?
答:微处理器本身不是计算机,但它是小型计算机或微机的控制和处理局部。
微机那么是具有完整运算及控制功能的计算机,除了微处理器外还包括存储器、接口适配 器以及输入输出设备等。
单片机是将微处理器、一定容量的RAM、ROM以及I/O 口、定时器等电路集成在一块芯 片上,构成的单片微型计算机。
2 .微型计算机怎样执行一个程序?
答:通过CPU指令,提到内存当中,再逐一执行。
3 .什么是嵌入式系统?他有哪些类型?为什么说单片机是典型的嵌入式系统?
答;嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用 相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断 创新的知识集成系统。
它有嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统等。
嵌入式系统的出现最初是基于单片机的。它从体系结构到指令系统都是按照嵌入式 应用特点专门设计的,能最好的满足面对控制对象,应运系统的嵌入、现场的可靠运行 以及非凡的控制品质要求。因此,她是典型的嵌入式系统。
第二章1.89C51单片机内包含哪些主要逻辑功能部件?
答:80C51系列单片机在片内集成了以下主要逻辑功能部件:
(DCPU(中央处理器):8位
MOV 2EH, 21
MOV 2DH, 2220、编程,进行两个16位数的减法:6F5DH-13B4H,结果存入内部RAM的30和31H单元,
30H存低八位。
CLR
C
MOV
A, #5DII
;被减数的低8位一A
MOV
R2,
#B4H
;减数低8位一R2
SUBB
A,
R2
;被减数减去减数,差一A
MOV
3011,
A
;低8位结果-30H
MOV
A, #6FH
;被减数的高8位一A
MOV
R2,
#13H
;减数高8位一R2
SUBB
A,
R2
;被减数减去减数,差一A
MOV
31H,
A
;高8位结果一30H
注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位
21、编程,假设累加器A满足以下条件,那么程序转至LABEL存储单元,设A中为无符号数。
(1) A210
CJNE A, #OAH, LI
;(A)与10比拟,不等转LI
LJMP LABEL
;相等转LABEL
LI: JNC LABEL 或者: CLR C
SUBB A, #OAH
JNC LABEL
(2) A>10
;(A)大于 10,转 LABEL
CJNE A, #OAH, LI
;(A)与10比拟,不等转LI
RET
;相等结束
LI: JNC LABEL
;(A)大于 10,转 LABEL
RET
或者:
CLR C
SUBB A, #OAH
JNC LI
RET
LI: JNZ LABEL
RET
(3) AW10
;(A)小于10,结束
CJNE A, #0All, LI
;(A)与10比拟,不等转L1
L2: LJMP LABEL
;相等转label
LI: JC L2; (A)小于 10,转 L2RET
或者:
CLR CSUBB A, #0AH
JC LABELJZ LABEL
RET22、(SP) =2311, (PC) =341211
参看书上80页23、(SP) =27H, (26H) =48H, (27H) =23H, (PC) =345611
参看书上79页24、不能。ACALL是短转指令,可调用的地址范围是2KB。
在看这个题的时候同时看一下AJMP指令。同时考虑调用指令ACALL和LCALL指令和RET 指令的关系。
25、编程,查找内部RAM中20H-50H单元中是否有0AAH这一数据,假设有那么将51h单元 置为01H,如无,那么将51H单元清零。
MOV R2, #3111;数据块长度一R2MOV RO, #20H;数据块首地址f RO
LOOP: MOV A, @R0
;待查找的数据一A
CLR C
;清进位位
SUBB A, #OAAH ;待查找的数据是OAAH吗
JZ LI
;是,转LI
INC R0
;不是,地址增1,指向下一个待查数据
DJNZ R2,
LOOP ;数据块长度减1,不等于0,继续查找
MOV 51H, RET
#00H;等于0,未找到,00H-51H
LI: MOV 51H,
#01H;找到,01Hf 51H
RET
26、编程查找内部RAM的20H-50H单元中出现00H的次数并将结果存入51H中。
MOV R2, #3111;数据块长度fR2MOV RO, #20H;数据块首地址一RO
LOOP: MOV A, @R0;待查找的数据一AJNZ LI;不为 0,转 LI
INC 51H;为 0, OOH 个数增 1
LI: INC RO ;地址增1,指向下一个待查数据DJNZ R2, LOOP ;数据块长度减1,不等于0,继续查找
RET27、外部数据RAM中有一个数据块,首地址为SOURCE,要求将该数据传送到内部RAM以 DTST开头的区域在,直到遇到数字字符¥时结束。
MOV DPTR, #SOURCE
;源首地址f DPTR
;目的首地址一RO
MOV RO, #DIST
LOOP:
MOVX A, ©DPTR
;传送一个字符
MOV @R0, A
INC DPTR
;指向下一个字符
INC RO
CJNE A, #24H,
LOOP;传送的是字符吗?不是,传送下一个字符
RET
28、 R3和R4中存有一个十六位的二进制数,高位在3中,低位在4中,编程求 其补,并存回原处。
MOV A, R3 ;取该数高8位f A29、己知30H和31H中存有一个十六位的二进制数,高位在前,低位在后,编程将它 们乘2,并存回原处。
ANL
A, #80H
;取出该数符号判断
JZ
LI
;是正数,转L1
MOV
A, R4
;是负数,将该数低8位一A
CPL
A
;低8位取反
ADD
A, #0111
;加1
MOV
R4, A
;低8位取反加1后f R4
MOV
A, R3
;将该数高8位一A
CPL
A
;高8位取反
ADDC
A, #00H
;加上低8位加1时可能产生的进位
MOV
R3, A
;高8位取反加1后一R3
LI: RET
CLR C;清进位位C30、内存中有两个4字节以压缩的BCD码形式存放的十进制数,一个放在30H-33H的 单元中,一个放在40H-43H的单元中,编程求他们的和,结果放在30H-33H的单元中。
MOV
A, 31H
;取该数低8位fA
RLC
A
;带进位位左移1位
MOV
31H, A
;结果存回31H
MOV
A, 30H
;取该数高8位fA
RLC
A
;带进位位左移1位
MOV
3011, A
;结果存回30H
MOV R2, #0411;字节长度-R2MOV RO, #30H; 一个加数首地址一RO
MOV RI, #4011;另一个加数首地址一RIRET
CLR C
;清进位位
LOOP: MOV A, @R0;
取一个加数
ADDC A, @R1
;两个加数带进位位相加
DA A
;十进制调整
MOV @R0, A
;存放结果
INC R0
;指向下一个字节
INC RI
*
DJNZ R2, LOOP
;数据块长度减I,不等于0,继续查找
31、编程,把片外RAM从200011开始存放的8个数传送到片内3011开始的单元中。
MOV
R2, #08H;数据块长度一R2
MOV
R0, #30H
;数据块目的地址一R0
MOV
DPTR, #200011 ;数据块源地址一DPTR
LOOP: MOVX
A, @ DPTR
;传送一个数据
MOV
@R0, A
INC
DPTR
;指向下一个数据
INC
R0
•
DJN2
:R2, LOOP
;数据块长度减1,没传送完,
继续传送
RET
35、解:
(1000H) =53H
(1001H) =54H(1002H)
=41H
(100311)=52H
(100411)=54H(100511)
=1211
(1006H)=34H
(100911) =7011
(1007H)=30H(1008H)
=00H
36、阅读以下程序说明其功能
MOV
R0, #40H
;40H-R0
MOV
A, @R0
;98H->A
INC
R0
;41H-R0
ADD
A, @R0
;98H+ (41H) =47H->A
INC
R0
MOV
@R0, A
;结果存入42H单元
CLR
A
:清A
ADDC
A, #0
;进位位存入A
INC
R0
MOV
@R0, A
;进位位存入43H
功能:将40H, 41H单元中的内容相加结果放在42H单元,进位放在43H单元,(R0W43H,
(A) =1, (4011) =9811, (4111) =AFH, (4211) =4711, (4311) =01H37、同上题
MOV A,
6111
;F2H-*A
MOV
B, #02H
;02H-B
ML'L
AB
;F2H X02H=E4HfA
ADD
A, 6211
;积的低8位加上CCHfA
MOV
63H, A
;结果送62H
CLR
A
;清A
ADDC
A, B
;积的高8位加进位位fA
MOV
64H, A
;结果送64H
功能:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8 位放在 64H 单元。(A) =02H, (B) =0放,(61H) =F2H, (62H) =CCH, (63H)=BOH, (64H) =0211MOV A, XXH
ORL A, #80HMOV XXII, A
40、(2) MOV A, XXHMOVRO, A
XRLA, RO第五章
1、什么是中断和中断系统?其主要功能是什么?
答:当CPU正在处理某件事情的时候,外部发生的某一件事件请求CPU迅速去处理,于 是,CPU暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后, 再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件 称为中断系统。功能:
(1) 使计算机具有实时处理能力,能对外界异步发生的事件作出及时的处理
(2) 完全消除了 CPU在查询方式中的等待现象,大大提高了 CPU的工作效率
(3) 实现实时控制2、试编写一段对中断系统初始化的程序,使之允许INTO, INTI, TO,串行口中断,且 使T0中断为高优先级中断。
解:MOV IE, #09711
MOV IP, #02H3、在单片机中,中断能实现哪些功能?
答:有三种功能:分时操作,实时处理,故障处理4、89c51共有哪些中断源?对其中端请求如何进行控制?
答:⑴89C51有如下中断源①:外部中断0请求,低电平有效
②:外部中断1请求,低电平有效③T0:定时器、计数器0溢出中断请求
©T1:定时器、计数器1溢出中断请求⑤TX/RX:串行接口中断请求
(2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实 现各种中断控制功能5、什么是中断优先级?中断优先处理的原那么是什么?
答:中断优先级是CPU相应中断的先后顺序。原那么:
(1) 先响应优先级高的中断请求,再响应优先级低的
(2) 如果一个中断请求已经被响应,同级的其它中断请求将被禁止
(3) 如果同级的多个请求同时出现,那么CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求
查询顺序:外部中断0—定时器0中断一外部中断1 一定时器1中断一串行接口中断 6、说明外部中断请求的查询和响应过程。
答:当CPU执行主程序第K条指令,外设向CPU发出中断请求,CPU接到中断请求信号 并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU 在每个S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查 询中断标志,如果查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级 进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应 的中断服务程序。中断服务完毕后,CPU返回到主程序第K+1条指令继续执行。
7、89C51在什么条件下可响应中断?
答:
(1) 有中断源发出中断请求
(2) 中断中允许位EA=L即CPU开中断
(3) 申请中断的中断源的中断允许位为1,即中断没有被屏蔽
(4) 无同级或更高级中断正在服务
(5) 当前指令周期已经结束
(6) 假设现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完毕
8、简述89c51单片机的中断响应过程。
答:CPU在每个机器周期S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期 间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1 期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC, 以便进入相应的中断服务程序。一旦响应中断,89C51首先置位相应的中断“优先级生 效”触发器,然后由硬件执行一条长调用指令,把当前的PC值压入堆栈,以保护断点, 再将相应的中断服务的入口地址送入PC,于是CPU接着从中断服务程序的入口处开始 执行。对于有些中断源,CPU在响应中断后会自动清除中断标志。
9、在89c51内存中,应如何安排程序区?
答:主程序一般从0030H开始,主程序后一般是子程序及中断服务程序。在这个大家还 要清除各个中断的中断矢量地址。
10、试述中断的作用及中断的全过程。
答:作用:对外部异步发生的事件作出及时的处理
过程:中断请求,中断响应,中断处理,中断返回11、当正在执行某一个中断源的中断服务程序时,如果有新的中断请求出现,试问在什 么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?
答:(1)符合以下6个条件可响应新的中断请求:
a)有中断源发出中断请求b)中断允许位EA=1,即CPU开中断
c)申请中断的中断源的中断允许位为1,即中断没有被屏蔽d)无同级或更高级中断正 在被服务e)当前的指令周期已结束
f)假设现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已被执 行完12、89C51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求? 答:有两种方式:电平触发和边沿触发
电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输入电平。假设为 低电平,使lEl(IEO)置“1”,申请中断;假设为高电平,那么lEl(IEO)清零。
边沿触发方式:CPU在每个机器周期S5P2期间采样外部中断请求引脚的输入电平。如 果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接 着下一个机器周期采样到外部中断请求为低电平,那么使lEl(IEO)置“1”申请中断;否 那么,IEl(IE0)S0o13、89c51单片机有五个中断源,但只能设置两个中断优先级,因此,在中断优先级安 排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能: 假设可能,那么应如何设置中断源的中断级别:否那么,请简述不可能的理由。
(1)定时器3定时器1,外中断0,外中断1,串行口中断。
可以,MOV IP, #OAH⑵ 串行口中断,外中断0,定时器0,外中断1,定时器1。 可以,MOV IP,#10H (3)外中断0,定时器1,外中断1,定时器0,串行口中断。
不可以,只能设置一级高级优先级,如果将INTO, T1设置为高级,而T0级别 高于 INT1.
(4)外中断0,外中断1,串行口中断,定时器0,定时器1。 可以,MOV IP,#15H
(5)串行口中断,定时器0,外中断0,外中断1,定时器1。 不可以
(6)外中断0,外中断1,定时器0,串行口中断,定时器1。不可以
⑺ 外中断0,定时器1,定时器0,外中断1,串行口中断。 可以,MOV IP, #09H 14、89C51各中断源的中断标志是如何产生的?又是如何清0的? CPU响应中断时,中 断入口地址各是多少?
答:各中断标志的产生和清“0”如下:
(1) 外部中断类外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0和外部中断1输
入信号。
外部中断0请求信号,由P3.2脚输入。通过ITO来决定中断请求信号是低电平有效还 是下跳变有效。一旦输入信号有效,那么向CPU申请中断,并且使IEO=1。硬件复位。
外部中断1请求信号,功能与用法类似外部中断0
(2) 定时中断类定时中断是为满足定时或计数溢出处理需要而设置的。当定时器/计数器中的计数结构 发生计数溢出的,即说明定时时间到或计数值已满,这时就以计数溢出信号作为中断请 求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上 设置引入端,但在计数方式时,中断源可以由外部引入。
TFO:定时器TO溢出中断请求。当定时器TO产生溢出时,定时器TO请求标志TFO=1, 请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位。
TF1:定时器T1溢出中断请求。功能与用法类似定时器TO
(3) 串行口中断类串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发 生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可 能引发中断。
RI或TI:串行口中断请求。当接收或发送一串帧数据时,使内部串行口中断请求标志 RI或TI=1,并请求中断。响应后必须软件复位。
CPU响应中断时,中断入口地址如下:
中断源入口地址外部中断00003H
定时器TO中断OOOBH外部中断10013H
定时器T1中断001B11串行口中断0023H
15、中断响应时间是否为确定不变的?为什么?
答:中断响应时间不是确定不变的。由于CPU不是在任何情况下对中断请求都予以响应 的;此外,不同的情况对中断响应的时间也是不同的。下面以外部中断为例,说明中断 响应的时间。
在每个机器周期的S5P2期间,端的电平被所存到TCON的IE0位,CPU在下一个机器 周期才会查询这些值。这时满足中断响应条件,下一条要执行的指令将是一条硬件长调 用指令“LCALL”,使程序转入中断矢量入口。调用本身要用2个机器周期,这样,从外 部中断请求有效到开始执行中断服务程序的第一条指令,至少需要3个机器周期,这是 最短的响应时间。
如果遇到中断受阻的情况,这中断响应时间会更长一些。例如,当一个同级或更高级的 中断服务程序正在进行,那么附加的等待时间取决于正在进行的中断服务程序:如果正在 执行的一条指令还没有进行到最后一个机器周期,附加的等待时间为「3个机器周期; 如果正在执行的是RETI指令或者访问IE或IP的指令,那么附加的等待时间在5个机器 周期内。
假设系统中只有一个中断源,那么响应时间为3~8个机器周期。
16、中断响应过程中,为什么通常要保护现场?如何保护?
答:因为一般主程序和中断服务程序都可能会用到累加器,PSW寄存器及其他一些寄存 器。CPU在进入中断服务程序后,用到上述寄存器时,就会破坏它原来存在寄存器中的 内容;一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先 保护现场,然后再执行中断处理程序,在返回主程序以前再恢复现场。
保护方法一般是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在 保护现场和恢复现场时,为了不使现场受到破坏或者造成混乱,一般规定此时CPU不响 应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场之前要关中断,在 恢复现场之后开中断。如果在中断处理时允许有更高级的中断打断它,那么在保护现场之 后再开中断,恢复现场之前关中断。
17、清表达中断响应的CPU操作过程,为什么说中断操作是一个CPU的微查询过程? 答:在中断响应中,CPU要完成以下自主操作过程:
a)置位相应的优先级状态触发器,以标明所响应中断的优先级别b)中断源标志清 零(TI、RI除外)c)中断断点地址装入堆栈保护(不保护PSW)
d)中断入口地址装入PC,以便使程序转到中断入口地址处在计算机内部,中断表现为CPU的微查询操作。89c51单片机中,CPU在每个机器周期 的S6状态,查询中断源,并按优先级管理规那么处理同时请求的中断源,且在下一个机 器周期的S1状态中,响应最高级中断请求。
但是以下情况除外:
a) CPU正在处理相同或更高优先级中断b)多机器周期指令中,还未执行到最后一个机器周期
c)正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时,要延后一条 指令18、在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?
答:在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机 内部,中断表现为CPU的微查询操作。89c51单片机中,CPU在每个机器周期的S6状态 下,查询中断源,并按优先级管理规那么处理同时请求的中断源,且在下一个机器周期的 S1状态中,响应最高级中断请求。
在以下情况下,还需要有另外的等待:
a) CPU正在处理相同或更高优先级中断b)多机器周期指令中,还未执行到最后一个机器周期
c)正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时,要延后一条指 令
第6章习题答案1、定时器模式2有什么特点?适用于什么场合?
答:(1)模式2把TLO(或TL1)配置成一个可以自动重装载的8位定时器/计数器。TLO 计数溢出时不仅使溢出中断标志位TFO置1,而且还自动把THO中的内容重新装载到TLO 中。TLO用作8位计数器,THO用以保存初值。
(2)用于定时工作方式时间(TFO溢出周期)为,用于计数工作方式时,最大计数长 度(THO初值=0)为28二256个外部脉冲。
这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别适于 作串行波特率发生器。
2、单片机内部定时方式产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为 12MHZ,请编程实现。
T0 低 5 位:1BH
TO 高 8 位:FFH
MOV TMOD, #00H
MOV TLO, #1B1I
MOV THO, #OFFH
SETB TRO
答:
;设置定时器TO工作于模式0
;设置5ms定时初值
;启动TOLOOP:JBC TFO, L1;查询到定时时间到?时间到转LI
SJMP LOOP ;时间未到转LOOP,继续查询LI: MOV TLO, #1BH;重新置入定时初值
MOV THO, #OFFHCPL P1.0;输出取反,形成等宽矩形波
SJMP LOOP ;重复循环3、89c51定时器有哪几种工作模式?有何区别?
答:有四种工作模式:模式0,模式1,模式2,模式3
(1) 模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。TL低 5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。
定时时间(213-初值)X振荡周期义12;计数长度位213=8192个外部脉冲
(2) 模式1:与模式0的唯一差异是寄存器TH和TL以全部16位参与操作。定 时时间t二(216-初值)义振荡周期义12;计数长度位216=65536个外部脉冲
(3) 模式2:把TLO和TL1配置成一个自动重装载的8位定时器/计数器。TL用 作8位计数器,TH用以保存初值。TL计数溢出时不仅使TFO置1,而且还自动将TH中 的内容重新装载到TL中。
定时时间t=(28-初值)义振荡周期义12;计数长度位28=256个外部脉冲
(4) 模式3:对T0和T1不大相同假设设T0位模式3, TLO和THO被分为两个相互独立的8位计数器。TLO为8位计数器, 功能与模式0和模式1相同,可定时可计数。
THO仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1, 启动和关闭仅受TR1控制。
⑵片内RAM:128B
(3)特殊功能寄存器:21个
(4)程序存储器:4KB
(5)并行1/0 口 :8位,4个
(6)串行接口:全双工,1个
(7)定时器/计数器:16位,2个
(8)片内时钟电路:1个. 89C51的EA端有何用途?
答:/EA端接高电平时,CPU只访问片内flash. com并执行内部程序,存储器。/EA端 接低电平时,CPU只访问外部ROM,并执行片外程序存储器中的指令。/EA端保持高电 平时,CPU执行内部存储器中的指令。
2 . 89C51的存储器分哪几个空间?如何区别不同空间的寻址?
答:ROM (片内ROM和片外ROM统一编址)(使用MOVC)(数据传送指令)(16bits地 址)(64KB)
片外 RAM (MOVX) (16bits 地址)(64KB)
片内 RAM (MOV) (8bits 地址)(256B).简述89C51片内RAM的空间分配。
答:片内RAM有256B
低128B是真正的RAM区
高128B是SFR (特殊功能寄存器)区.简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。
答:片内 RAM 区从 OOH~FFH (256B)
其中20H~2FH (字节地址)是位寻址区
对应的位地址是00H~7FH.如何简捷地判断89c51正在工作?
答:用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?) ALE (地址锁存允许)(Address Latch Enable)输出是fosc的6分频 用示波器观察ALE是否有脉冲输出(判断8051芯片的好坏?)
观察PSEN (判断8051能够到EPROM或ROM中读取指令码?)
因为/PSEN接外部EPROM (ROM)的/0E端子
0E=Output Enable (输出允许). 89c51如何确定和改变当前工作寄存器组?
答:PSW (程序状态字)(Program Status Word)中的 RS1 和 RSO
可以给出4中组合
用来从4组工作寄存器组中进行选择
PSW 属于 SFR (Special Function Register)(特殊功能寄存器)定时器T1无工作模式3,但TO在工作模式3时T1仍可设置为0~2。
4、89C51内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?
答:89c51单片机内有两个16位定时器/计数器,即TO和口。
TO由两个8位特殊功能寄存器TI10和TLO组成;T1由Till和TL1组成。
5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器时,对外界计数频率 有何限制?
答:定时时间与定时器的工作模式,初值及振荡周期有关。
作计数器时对外界计数频率要求最高为机器振荡频率的l/24o6、简述定时器4种工作模式的特点,如何选择设定? 答:
(1) 模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。TL低 5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。
定时时间t= (213-初值)X振荡周期X 12;计数长度位213=8192个外部脉冲置TMOD中的M1M0为00
(2) 模式1:与模式0的唯一差异是寄存器TH和TL以全部16位参与操作。定 时时间t=(216-初值)X振荡周期X 12;计数长度位216=65536个外部脉冲置TMOD中的M1M0为01
(3) 模式2:把TLO和TL1配置成一个自动重装载的8位定时器/计数器。TL用 作8位计数器,TH用以保存初值。TL计数溢出时不仅使TFO置1,而且还自动将TH中 的内容重新装载到TL中。
定时时间t=(28-初值)X振荡周期X12;计数长度位28二256个外部脉冲置TMOD中的M1M0为10
(4) 模式3:对T0和T1不大相同假设设T0位模式3, TLO和THO被分为两个相互独立的8位计数器。TLO为8位计数器, 功能与模式0和模式1相同,可定时可计数。
THO仅用作简单的内部定时功能,它占用了定时器口的控制位TR1和中断标志位TF1, 启动和关闭仅受TR1控制。
定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为0~2。
置TMOD中的M1M0为117、当T0用作模式3时,由于TR1已被T0占用,如何控制T1的开启和关闭?
答:用T1控制位C/T切换定时器或计数器工作方式就可以使T1运行。定时器T1无工 作模式3,将T1设置为工作模式3,就会使T1立即停止计数,关闭。
8、以定时器/计数器1进行外部时间计数,每计数1000个脉冲后,定时器/计数器1转 为定时工作方式,定时10ms后又转为计数方式,如此循环不止。假定 为6WHZ,用模式 1编程。
解:T1为定时器时初值:
T1为计数器时初值:
所以:
L1:M()V
MOV MOV SETB
TMOD, #5011 TH1,#OFCH TL1, #18H TRI
;设置T1为计数方式且工作模式为1 ;置入计数初值
LOOP1:JBC TF1,L2
SJMP L00P1
L2:CLR TRI
MOV MOV MOV SETB
TMOD, #10H
TI11,#OECH
TL1,
TRI
#78H
L00P2:JBC
SJMP
;启动T1计数器
;查询计数溢出?有溢出(计数满1000个)转L2
;无溢出转L00P1,继续查询
;关闭T1
;设置T1为定时方式且工作与模式1
;置入定时10ms初值
TF1,L1
LOOP2
;启动T1定时
;查询10ms时间到?时间到,转L1
;时间未到,转L00P2,继续查询
9、一个定时器定时时间有限,如何实现两个定时器的串行定时以满足较长定时时间的 要求?
答:当一个定时器溢出时•,设置另一个定时器的初值为0开始定时丁10、使用一个定时器,如何通过软硬件结合方法实现较长时间的定时?
答:设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计, 从而得到较长的时间。
11、89C51定时器作定时和计数时其计数脉冲分别由谁提供?
答:作定时器时计数脉冲由89C51片内振荡器输出经12分频后的脉冲提供,作计数时 计数脉冲由外部信号通过引脚P3. 4和P3. 5提供。
12、89C51定时器的门控信号GATE设置为1时定时器如何启动?
答:只有(或)引脚为高电平且由软件使TRO (或TR1)置1时,才能启动定时器工作。 13、89c51单片机的fosc=6MHz,请利用TO和PL 0输出矩形波。矩形波高电平宽 50 u s,低电平宽300 us。
解:T0采用模式2作为5011s定时时的初值:
MOV
L2:CLR
MOV MOV SETB
TMOD, #0211
P1.0
THO, #6AH
TLO, #6AH
TRO
所以作300 ns定时时的初值:
;设置定时器TO工作于模式2;PL0输出低电平
;启动TO
;置入定时300 us初值LOOP1:JBC TFO, L1;查询300 us时间到?时间到,转L1
SJMP L00P1 ;时间未到,转L00P1,继续查询L1:SETB P1.0;P1.0 输出高电平
CLR TRO;关闭 T0MOV THO, #0E7H;置入定时300 u s初值
MOV TLO, # 0E7HSETB TRO;启动 TO
L00P2: JBC TFO, L2 ;查询50 u s时间到?时间到,转L2SJMP L00P2;时间未到,转L00P2,继续查询
14、89c51单片机的fosc=12MHz,用T1定时。试编程由PL 0和PL 1引脚分别输 出周期为2ms和500 U s的方波。
解:采用模式0作定时初值:
所以MOV R2, #04H;R2为“250 hs”计数器,置入初值4CLRP1.0;PL0输出低电平
CLRPl. 1;P1.1输出低电平MOV TMOD, #0011
L2: MOV TH1,#OF8H
MOV TL1,#O6H
SETB TRI
LOOP: JBC TF1,L1
MOV TMOD, #0011
L2: MOV TH1,#OF8H
MOV TL1,#O6H
SETB TRI
LOOP: JBC TF1,L1
;置入定时250 us初值
;启动T1SJMP LOOP
SJMP LOOP
;时间未到,转LOOP,继续查询
;查询250 us时间到?时间到,转L1L1:CPL PL 1;P1. 1输出取反,形成周期为500 us
CLR TRI ;关闭 T1DJNZ R2, L2; “250 us”计数器减1,到1ms吗?未到转L2
CPL P1.0 ;PL0输出取反,形成周期为2ms方波MOV R2, #04H;重置“ 250 u s ”计数器初值4
LJMP L2;重复循环15、单片机8031的时钟频率为6MHz,假设要求定时值分别为0. 1ms, 1ms, 10ms,定时器0工
作在模式0、模式1和模式2时,其定时器初值各应是多少?
解:
(1) 0. 1ms模式0:
T0 低 5 位 0H10B=0EHTO 高 8 位:11111110B=FEH
模式1:
模式2:
(2) 1ms模式0:
T0 低 5 位 01100BRCHT0 高 8 位:U110000B=FOH
模式1:
模式2:
在此情况下最长定时为512 u s,无法一次实现定时1ms,可用0. 1ms循环10次
(3) 10ms模式0:
TO 低 5 位 11000B=18HTO 高 8 位:01100011B=631I
模式L模式2:在此情况下最长定时为512 y s,无法一次实现定时10ms,可用0. 1ms循环100 次
16、89c51单片机的定时器在何种设置下可提供三个8位计数器定时器?这时,定时器1 可作为串行口波特率发生器。假设波特率按 9600b/s, 4800b/s, 2400b/s, 1200b/s, 600b/s, lOOb/s 来考虑,那么此时可选用的波特率是 多少(允许存在一定误差)?设fosc=12MHz。
解:当T0为模式3, T1为模式2时,可提供3个8位定时器。
可选
展开阅读全文