1、第一章.单片机具有哪些特点(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)、微机和单片机?答:微处理器本
2、身不是计算机,但它是小型计算机或微机的控制和处理局部。微机那么是具有完整运算及控制功能的计算机,除了微处理器外还包括存储器、接口适配 器以及输入输出设备等。单片机是将微处理器、一定容量的RAM、ROM以及I/O 口、定时器等电路集成在一块芯 片上,构成的单片微型计算机。2 .微型计算机怎样执行一个程序?答:通过CPU指令,提到内存当中,再逐一执行。3 .什么是嵌入式系统?他有哪些类型?为什么说单片机是典型的嵌入式系统?答;嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用 相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断 创新的知识集成系统。它
3、有嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统等。嵌入式系统的出现最初是基于单片机的。它从体系结构到指令系统都是按照嵌入式 应用特点专门设计的,能最好的满足面对控制对象,应运系统的嵌入、现场的可靠运行 以及非凡的控制品质要求。因此,她是典型的嵌入式系统。第二章1.89C51单片机内包含哪些主要逻辑功能部件?答:80C51系列单片机在片内集成了以下主要逻辑功能部件:(DCPU(中央处理器):8位MOV 2EH, 21MOV 2DH, 2220、编程,进行两个16位数的减法:6F5DH-13B4H,结果存入内部RAM的30和31H单元,30H存低八位。CLRCMOVA, #5
4、DII;被减数的低8位一AMOVR2,#B4H;减数低8位一R2SUBBA,R2;被减数减去减数,差一AMOV3011,A;低8位结果-30HMOVA, #6FH;被减数的高8位一AMOVR2,#13H;减数高8位一R2SUBBA,R2;被减数减去减数,差一AMOV31H,A;高8位结果一30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位21、编程,假设累加器A满足以下条件,那么程序转至LABEL存储单元,设A中为无符号数。(1) A210CJNE A, #OAH, LI;(A)与10比拟,不等转LILJMP LABEL;相等转LABELLI: JNC LABEL 或者
5、: CLR CSUBB A, #OAHJNC LABEL(2) A10;(A)大于 10,转 LABELCJNE A, #OAH, LI;(A)与10比拟,不等转LIRET;相等结束LI: JNC LABEL;(A)大于 10,转 LABELRET或者:CLR CSUBB A, #OAHJNC LIRETLI: JNZ LABELRET(3) AW10;(A)小于10,结束CJNE A, #0All, LI;(A)与10比拟,不等转L1L2: LJMP LABEL;相等转labelLI: JC L2; (A)小于 10,转 L2RET或者:CLR CSUBB A, #0AHJC LABELJZ
6、 LABELRET22、(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 ROLOOP:
7、 MOV A, R0;待查找的数据一ACLR C;清进位位SUBB A, #OAAH ;待查找的数据是OAAH吗JZ LI;是,转LIINC R0;不是,地址增1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找MOV 51H, RET#00H;等于0,未找到,00H-51HLI: MOV 51H,#01H;找到,01Hf 51HRET26、编程查找内部RAM的20H-50H单元中出现00H的次数并将结果存入51H中。MOV R2, #3111;数据块长度fR2MOV RO, #20H;数据块首地址一ROLOOP: MOV A, R0;待查找的数据一AJNZ L
8、I;不为 0,转 LIINC 51H;为 0, OOH 个数增 1LI: INC RO ;地址增1,指向下一个待查数据DJNZ R2, LOOP ;数据块长度减1,不等于0,继续查找RET27、外部数据RAM中有一个数据块,首地址为SOURCE,要求将该数据传送到内部RAM以 DTST开头的区域在,直到遇到数字字符时结束。MOV DPTR, #SOURCE;源首地址f DPTR;目的首地址一ROMOV RO, #DISTLOOP:MOVX A, DPTR;传送一个字符MOV R0, AINC DPTR;指向下一个字符INC ROCJNE A, #24H,LOOP;传送的是字符吗?不是,传送下一
9、个字符RET28、 R3和R4中存有一个十六位的二进制数,高位在3中,低位在4中,编程求 其补,并存回原处。MOV A, R3 ;取该数高8位f A29、己知30H和31H中存有一个十六位的二进制数,高位在前,低位在后,编程将它 们乘2,并存回原处。ANLA, #80H;取出该数符号判断JZLI;是正数,转L1MOVA, R4;是负数,将该数低8位一ACPLA;低8位取反ADDA, #0111;加1MOVR4, A;低8位取反加1后f R4MOVA, R3;将该数高8位一ACPLA;高8位取反ADDCA, #00H;加上低8位加1时可能产生的进位MOVR3, A;高8位取反加1后一R3LI:
10、RETCLR C;清进位位C30、内存中有两个4字节以压缩的BCD码形式存放的十进制数,一个放在30H-33H的 单元中,一个放在40H-43H的单元中,编程求他们的和,结果放在30H-33H的单元中。MOVA, 31H;取该数低8位fARLCA;带进位位左移1位MOV31H, A;结果存回31HMOVA, 30H;取该数高8位fARLCA;带进位位左移1位MOV3011, A;结果存回30HMOV R2, #0411;字节长度-R2MOV RO, #30H; 一个加数首地址一ROMOV RI, #4011;另一个加数首地址一RIRETCLR C;清进位位LOOP: MOV A, R0;取一个
11、加数ADDC A, R1;两个加数带进位位相加DA A;十进制调整MOV R0, A;存放结果INC R0;指向下一个字节INC RI*DJNZ R2, LOOP;数据块长度减I,不等于0,继续查找31、编程,把片外RAM从200011开始存放的8个数传送到片内3011开始的单元中。MOVR2, #08H;数据块长度一R2MOVR0, #30H;数据块目的地址一R0MOVDPTR, #200011 ;数据块源地址一DPTRLOOP: MOVXA, DPTR;传送一个数据MOVR0, AINCDPTR;指向下一个数据INCR0DJN2:R2, LOOP;数据块长度减1,没传送完,继续传送RET3
12、5、解:(1000H) =53H(1001H) =54H(1002H)=41H(100311)=52H(100411)=54H(100511)=1211(1006H)=34H(100911) =7011(1007H)=30H(1008H)=00H36、阅读以下程序说明其功能MOVR0, #40H;40H-R0MOVA, R0;98H-AINCR0;41H-R0ADDA, R0;98H+ (41H) =47H-AINCR0MOVR0, A;结果存入42H单元CLRA:清AADDCA, #0;进位位存入AINCR0MOVR0, A;进位位存入43H功能:将40H, 41H单元中的内容相加结果放在4
13、2H单元,进位放在43H单元,(R0W43H,(A) =1, (4011) =9811, (4111) =AFH, (4211) =4711, (4311) =01H37、同上题MOV A,6111;F2H-*AMOVB, #02H;02H-BMLLAB;F2H X02H=E4HfAADDA, 6211;积的低8位加上CCHfAMOV63H, A;结果送62HCLRA;清AADDCA, B;积的高8位加进位位fAMOV64H, A;结果送64H功能:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8 位放在 64H 单元。(A) =02H, (B) =0放,(61H)
14、 =F2H, (62H) =CCH, (63H)=BOH, (64H) =0211MOV A, XXHORL A, #80HMOV XXII, A40、(2) MOV A, XXHMOVRO, AXRLA, RO第五章1、什么是中断和中断系统?其主要功能是什么?答:当CPU正在处理某件事情的时候,外部发生的某一件事件请求CPU迅速去处理,于 是,CPU暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后, 再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件 称为中断系统。功能:(1) 使计算机具有实时处理能力,能对外界异步发生的事件作出及时的处理(2)
15、完全消除了 CPU在查询方式中的等待现象,大大提高了 CPU的工作效率(3) 实现实时控制2、试编写一段对中断系统初始化的程序,使之允许INTO, INTI, TO,串行口中断,且 使T0中断为高优先级中断。解:MOV IE, #09711MOV IP, #02H3、在单片机中,中断能实现哪些功能?答:有三种功能:分时操作,实时处理,故障处理4、89c51共有哪些中断源?对其中端请求如何进行控制?答:89C51有如下中断源:外部中断0请求,低电平有效:外部中断1请求,低电平有效T0:定时器、计数器0溢出中断请求T1:定时器、计数器1溢出中断请求TX/RX:串行接口中断请求(2)通过对特殊功能寄
16、存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实 现各种中断控制功能5、什么是中断优先级?中断优先处理的原那么是什么?答:中断优先级是CPU相应中断的先后顺序。原那么:(1) 先响应优先级高的中断请求,再响应优先级低的(2) 如果一个中断请求已经被响应,同级的其它中断请求将被禁止(3) 如果同级的多个请求同时出现,那么CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求查询顺序:外部中断0定时器0中断一外部中断1 一定时器1中断一串行接口中断 6、说明外部中断请求的查询和响应过程。答:当CPU执行主程序第K条指令,外设向CPU发出中断请求,CPU接到中断请求信号 并
17、在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU 在每个S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查 询中断标志,如果查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级 进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应 的中断服务程序。中断服务完毕后,CPU返回到主程序第K+1条指令继续执行。7、89C51在什么条件下可响应中断?答:(1) 有中断源发出中断请求(2) 中断中允许位EA=L即CPU开中断(3) 申请中断的中断源的中断允许位为1,即中断没有被屏蔽(4) 无同级或更高级中断正在服务(5
18、) 当前指令周期已经结束(6) 假设现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完毕8、简述89c51单片机的中断响应过程。答:CPU在每个机器周期S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期 间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1 期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC, 以便进入相应的中断服务程序。一旦响应中断,89C51首先置位相应的中断“优先级生 效”触发器,然后由硬件执行一条长调用指令,把当前的PC值压入堆栈,以保护断点, 再将相应的中断服务的入口地址送入PC,
19、于是CPU接着从中断服务程序的入口处开始 执行。对于有些中断源,CPU在响应中断后会自动清除中断标志。9、在89c51内存中,应如何安排程序区?答:主程序一般从0030H开始,主程序后一般是子程序及中断服务程序。在这个大家还 要清除各个中断的中断矢量地址。10、试述中断的作用及中断的全过程。答:作用:对外部异步发生的事件作出及时的处理过程:中断请求,中断响应,中断处理,中断返回11、当正在执行某一个中断源的中断服务程序时,如果有新的中断请求出现,试问在什 么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?答:(1)符合以下6个条件可响应新的中断请求:a)有中断源发出中断请求b)中断
20、允许位EA=1,即CPU开中断c)申请中断的中断源的中断允许位为1,即中断没有被屏蔽d)无同级或更高级中断正 在被服务e)当前的指令周期已结束f)假设现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已被执 行完12、89C51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求? 答:有两种方式:电平触发和边沿触发电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输入电平。假设为 低电平,使lEl(IEO)置“1”,申请中断;假设为高电平,那么lEl(IEO)清零。边沿触发方式:CPU在每个机器周期S5P2期间采样外部中断请求引脚的输入电平。如 果在
21、相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接 着下一个机器周期采样到外部中断请求为低电平,那么使lEl(IEO)置“1”申请中断;否 那么,IEl(IE0)S0o13、89c51单片机有五个中断源,但只能设置两个中断优先级,因此,在中断优先级安 排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能: 假设可能,那么应如何设置中断源的中断级别:否那么,请简述不可能的理由。(1)定时器3定时器1,外中断0,外中断1,串行口中断。可以,MOV IP, #OAH 串行口中断,外中断0,定时器0,外中断1,定时器1。 可以,MOV IP,#10H (3)
22、外中断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
23、) 外部中断类外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0和外部中断1输入信号。外部中断0请求信号,由P3.2脚输入。通过ITO来决定中断请求信号是低电平有效还 是下跳变有效。一旦输入信号有效,那么向CPU申请中断,并且使IEO=1。硬件复位。外部中断1请求信号,功能与用法类似外部中断0(2) 定时中断类定时中断是为满足定时或计数溢出处理需要而设置的。当定时器/计数器中的计数结构 发生计数溢出的,即说明定时时间到或计数值已满,这时就以计数溢出信号作为中断请 求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上 设置引入端,但在计数方式时,中断源可以由外
24、部引入。TFO:定时器TO溢出中断请求。当定时器TO产生溢出时,定时器TO请求标志TFO=1, 请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位。TF1:定时器T1溢出中断请求。功能与用法类似定时器TO(3) 串行口中断类串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发 生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可 能引发中断。RI或TI:串行口中断请求。当接收或发送一串帧数据时,使内部串行口中断请求标志 RI或TI=1,并请求中断。响应后必须软件复位。CPU响应中断时,中断入口地址如下:中断源入口地址外部中断00003H
25、定时器TO中断OOOBH外部中断10013H定时器T1中断001B11串行口中断0023H15、中断响应时间是否为确定不变的?为什么?答:中断响应时间不是确定不变的。由于CPU不是在任何情况下对中断请求都予以响应 的;此外,不同的情况对中断响应的时间也是不同的。下面以外部中断为例,说明中断 响应的时间。在每个机器周期的S5P2期间,端的电平被所存到TCON的IE0位,CPU在下一个机器 周期才会查询这些值。这时满足中断响应条件,下一条要执行的指令将是一条硬件长调 用指令“LCALL”,使程序转入中断矢量入口。调用本身要用2个机器周期,这样,从外 部中断请求有效到开始执行中断服务程序的第一条指令
26、,至少需要3个机器周期,这是 最短的响应时间。如果遇到中断受阻的情况,这中断响应时间会更长一些。例如,当一个同级或更高级的 中断服务程序正在进行,那么附加的等待时间取决于正在进行的中断服务程序:如果正在 执行的一条指令还没有进行到最后一个机器周期,附加的等待时间为3个机器周期; 如果正在执行的是RETI指令或者访问IE或IP的指令,那么附加的等待时间在5个机器 周期内。假设系统中只有一个中断源,那么响应时间为38个机器周期。16、中断响应过程中,为什么通常要保护现场?如何保护?答:因为一般主程序和中断服务程序都可能会用到累加器,PSW寄存器及其他一些寄存 器。CPU在进入中断服务程序后,用到上
27、述寄存器时,就会破坏它原来存在寄存器中的 内容;一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先 保护现场,然后再执行中断处理程序,在返回主程序以前再恢复现场。保护方法一般是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在 保护现场和恢复现场时,为了不使现场受到破坏或者造成混乱,一般规定此时CPU不响 应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场之前要关中断,在 恢复现场之后开中断。如果在中断处理时允许有更高级的中断打断它,那么在保护现场之 后再开中断,恢复现场之前关中断。17、清表达中断响应的CPU操作过程,为什么说中断操作是一个CPU的
28、微查询过程? 答:在中断响应中,CPU要完成以下自主操作过程:a)置位相应的优先级状态触发器,以标明所响应中断的优先级别b)中断源标志清 零(TI、RI除外)c)中断断点地址装入堆栈保护(不保护PSW)d)中断入口地址装入PC,以便使程序转到中断入口地址处在计算机内部,中断表现为CPU的微查询操作。89c51单片机中,CPU在每个机器周期 的S6状态,查询中断源,并按优先级管理规那么处理同时请求的中断源,且在下一个机 器周期的S1状态中,响应最高级中断请求。但是以下情况除外:a) CPU正在处理相同或更高优先级中断b)多机器周期指令中,还未执行到最后一个机器周期c)正在执行中断系统的SFR操作
29、,如RETI指令及访问IE、IP等操作时,要延后一条 指令18、在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?答:在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机 内部,中断表现为CPU的微查询操作。89c51单片机中,CPU在每个机器周期的S6状态 下,查询中断源,并按优先级管理规那么处理同时请求的中断源,且在下一个机器周期的 S1状态中,响应最高级中断请求。在以下情况下,还需要有另外的等待:a) CPU正在处理相同或更高优先级中断b)多机器周期指令中,还未执行到最后一个机器周期c)正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时
30、,要延后一条指 令第6章习题答案1、定时器模式2有什么特点?适用于什么场合?答:(1)模式2把TLO(或TL1)配置成一个可以自动重装载的8位定时器/计数器。TLO 计数溢出时不仅使溢出中断标志位TFO置1,而且还自动把THO中的内容重新装载到TLO 中。TLO用作8位计数器,THO用以保存初值。(2)用于定时工作方式时间(TFO溢出周期)为,用于计数工作方式时,最大计数长 度(THO初值=0)为28二256个外部脉冲。这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别适于 作串行波特率发生器。2、单片机内部定时方式产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为
31、 12MHZ,请编程实现。T0 低 5 位:1BHTO 高 8 位:FFHMOV TMOD, #00HMOV TLO, #1B1IMOV THO, #OFFHSETB TRO答:;设置定时器TO工作于模式0;设置5ms定时初值;启动TOLOOP:JBC TFO, L1;查询到定时时间到?时间到转LISJMP LOOP ;时间未到转LOOP,继续查询LI: MOV TLO, #1BH;重新置入定时初值MOV THO, #OFFHCPL P1.0;输出取反,形成等宽矩形波SJMP LOOP ;重复循环3、89c51定时器有哪几种工作模式?有何区别?答:有四种工作模式:模式0,模式1,模式2,模式3
32、(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-初值)
33、义振荡周期义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只访问片内flas
34、h. 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 (特殊功能寄存器)区.简述布尔
35、处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。答:片内 RAM 区从 OOHFFH (256B)其中20H2FH (字节地址)是位寻址区对应的位地址是00H7FH.如何简捷地判断89c51正在工作?答:用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?) ALE (地址锁存允许)(Address Latch Enable)输出是fosc的6分频 用示波器观察ALE是否有脉冲输出(判断8051芯片的好坏?)观察PSEN (判断8051能够到EPROM或ROM中读取指令码?)因为/PSEN接外部EPROM (ROM)的/0E端子0E=Output Enabl
36、e (输出允许). 89c51如何确定和改变当前工作寄存器组?答:PSW (程序状态字)(Program Status Word)中的 RS1 和 RSO可以给出4中组合用来从4组工作寄存器组中进行选择PSW 属于 SFR (Special Function Register)(特殊功能寄存器)定时器T1无工作模式3,但TO在工作模式3时T1仍可设置为02。4、89C51内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?答:89c51单片机内有两个16位定时器/计数器,即TO和口。TO由两个8位特殊功能寄存器TI10和TLO组成;T1由Till和TL1组成。5、定时器用作定时器时,其
37、定时时间与哪些因素有关?作计数器时,对外界计数频率 有何限制?答:定时时间与定时器的工作模式,初值及振荡周期有关。作计数器时对外界计数频率要求最高为机器振荡频率的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振荡周期
38、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和
39、中断标志位TF1, 启动和关闭仅受TR1控制。定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为02。置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
40、MOV MOV SETBTMOD, #5011 TH1,#OFCH TL1, #18H TRI;设置T1为计数方式且工作模式为1 ;置入计数初值LOOP1:JBC TF1,L2SJMP L00P1L2:CLR TRIMOV MOV MOV SETBTMOD, #10HTI11,#OECHTL1,TRI#78HL00P2:JBCSJMP;启动T1计数器;查询计数溢出?有溢出(计数满1000个)转L2;无溢出转L00P1,继续查询;关闭T1;设置T1为定时方式且工作与模式1;置入定时10ms初值TF1,L1LOOP2;启动T1定时;查询10ms时间到?时间到,转L1;时间未到,转L00P2,继续查
41、询9、一个定时器定时时间有限,如何实现两个定时器的串行定时以满足较长定时时间的 要求?答:当一个定时器溢出时,设置另一个定时器的初值为0开始定时丁10、使用一个定时器,如何通过软硬件结合方法实现较长时间的定时?答:设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计, 从而得到较长的时间。11、89C51定时器作定时和计数时其计数脉冲分别由谁提供?答:作定时器时计数脉冲由89C51片内振荡器输出经12分频后的脉冲提供,作计数时 计数脉冲由外部信号通过引脚P3. 4和P3. 5提供。12、89C51定时器的门控信号GATE设置为1时定时器如何启动?答:只有(或)引脚为高电平且
42、由软件使TRO (或TR1)置1时,才能启动定时器工作。 13、89c51单片机的fosc=6MHz,请利用TO和PL 0输出矩形波。矩形波高电平宽 50 u s,低电平宽300 us。解:T0采用模式2作为5011s定时时的初值:MOVL2:CLRMOV MOV SETBTMOD, #0211P1.0THO, #6AHTLO, #6AHTRO所以作300 ns定时时的初值:;设置定时器TO工作于模式2;PL0输出低电平;启动TO;置入定时300 us初值LOOP1:JBC TFO, L1;查询300 us时间到?时间到,转L1SJMP L00P1 ;时间未到,转L00P1,继续查询L1:SE
43、TB P1.0;P1.0 输出高电平CLR TRO;关闭 T0MOV THO, #0E7H;置入定时300 u s初值MOV TLO, # 0E7HSETB TRO;启动 TOL00P2: 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输出
44、低电平MOV TMOD, #0011L2: MOV TH1,#OF8HMOV TL1,#O6HSETB TRILOOP: JBC TF1,L1MOV TMOD, #0011L2: MOV TH1,#OF8HMOV TL1,#O6HSETB TRILOOP: JBC TF1,L1;置入定时250 us初值;启动T1SJMP LOOPSJMP LOOP;时间未到,转LOOP,继续查询;查询250 us时间到?时间到,转L1L1:CPL PL 1;P1. 1输出取反,形成周期为500 usCLR TRI ;关闭 T1DJNZ R2, L2; “250 us”计数器减1,到1ms吗?未到转L2CPL
45、P1.0 ;PL0输出取反,形成周期为2ms方波MOV R2, #04H;重置“ 250 u s ”计数器初值4LJMP 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
46、,可用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位定时器。可选