收藏 分享(赏)

单片机原理及接口技术 李朝青.doc

上传人:jinchen 文档编号:8712682 上传时间:2019-07-09 格式:DOC 页数:36 大小:84KB
下载 相关 举报
单片机原理及接口技术 李朝青.doc_第1页
第1页 / 共36页
单片机原理及接口技术 李朝青.doc_第2页
第2页 / 共36页
单片机原理及接口技术 李朝青.doc_第3页
第3页 / 共36页
单片机原理及接口技术 李朝青.doc_第4页
第4页 / 共36页
单片机原理及接口技术 李朝青.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、单片机原理及接口技术 李朝青单片机原理及接口技术课后习题答案 李朝青第三章1、 指令:CPU 根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2、 见第 1题3、 操作码 目的操作数 ,源操作数4、 寻址方式 寻址空间立即数寻址 程序存储器 ROM直接寻址 片内 RAM低 128B、特殊功能寄存器寄存器寻址 工作寄存器 R0-R7、A、B、C、DPTR寄存器间接寻址 片内 RAM低

2、128B、片外 RAM变址寻址 程序存储器(A+PC,A+DPTR)相对寻址 程序存储器 256B范围(PC+偏移量)位寻址 片内 RAM的 20H-2FH字节地址、部分 SFR5、 SFR:直接寻址,位寻址,寄存器寻址;片外 RAM:寄存器间接寻址6、 MOV A,40H ;直接寻址 (40H)AMOV R0,A ;寄存器寻址 (A)R0MOV P1,#0F0H ;立即数寻址 0F0P1MOV R0,30H ;直接寻址(30H)(R0)MOV DPTR,#3848H ;立即数寻址 3848HDPTRMOV 40H,38H ;直接寻址(38H)40HMOV R0,30H ;直接寻址(30H)R

3、0MOV P0,R0 ;寄存器寻址 (R0)P0MOV 18H,#30H ;立即数寻址 30H18HMOV A,R0 ;寄存器间接寻址(R0)AMOV P2,P1 ;直接寻址(P1)P2最后结果:(R0)=38H, (A)=40H, (P0)=38H, (P1)=(P2)=0F0H, (DPTR)=3848H, (18H)=30H, (30H)=38H, (38H)=40H, (40H)=40H, (48H)=38H注意:左边是内容,右边是单元7、 用直接寻址,位寻址,寄存器寻址8、 MOV A,DATA ;直接寻址 2 字节 1周期MOV A,#DATA ;立即数寻址 2 字节 1周期MOV

4、 DATA1,DATA2 ;直接寻址 3 字节 2周期MOV 74H,#78H ;立即数寻址 3 字节 2周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录 A9、MOV A,R0 ;(R0)=80HAMOV R0,40H ;(40H)=08H(R0)MOV 40H,A ;(A)=8040HMOV R0,#35H ;35HR0最后结果:(R0)=35H (A)=80H, (32H)=08H, (40H)=80H10、用直接寻址,位寻址,寄存器寻址11、只能采用寄存器间接寻址(用 MOVX指令)12、低 128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0R7)高 128

5、字节:直接寻址,位寻址,寄存器寻址13、采用变址寻址(用 MOVC指令)14、压缩 BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用 DA A指令调整(加06H,60H,66H)15、用来进行位操作16、ANL A,#17H ;83H17H=03HAORL 17H,A ;34H03H=37H17HXRL A,R0 ;03H37H=34HCPL A ;34H 求反等于 CBH所以(A)=CBH17、 (1)SETB ACC.0 或 SETB E0H ;E0H是累加器的地址(2)CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4(

6、3)CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.318、MOV 27H,R7MOV 26H,R6MOV 25H,R5MOV 24H,R4MOV 23H,R3MOV 22H,R2MOV 21H,R1MOV 20H,R019、MOV 2FH,20MOV 2EH,21MOV 2DH,2220、CLR CMOV A,#5DH ;被减数的低 8位AMOV R2,#B4H ;减数低 8位R2SUBB A,R2 ;被减数减去减数,差AMOV 30H,A ;低 8位结果30HMOV A,#6FH ;被减数的高 8位AMOV R2,#13H ;减数高 8位R2SUBB A,R2 ;被减

7、数减去减数,差AMOV 31H,A ;高 8位结果30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清 0进位位21、 (1)A10CJNE A,#0AH,L1 ;(A)与 10比较,不等转 L1LJMP LABEL ;相等转 LABELL1:JNC LABEL ;(A)大于 10,转 LABEL或者:CLR CSUBB A,#0AHJNC LABEL(2)A10CJNE A,#0AH,L1 ;(A)与 10比较,不等转 L1RET ;相等结束L1:JNC LABEL ;(A)大于 10,转 LABELRET ;(A)小于 10,结束或者:CLR CSUBB A,#0AHJNC

8、L1RETL1:JNZ LABELRET(3)A10CJNE A,#0AH,L1 ;(A)与 10比较,不等转 L1L2:LJMP LABEL ;相等转 LABELL1:JC L2 ;(A)小于 10,转 L2RET或者:CLR CSUBB A,#0AHJC LABELJZ LABELRET22、 (SP)=23H, (PC)=3412H参看书上 80页23、 (SP)=27H, (26H)=48H, (27H)=23H, (PC)=3456H参看书上 79页24、不能。ACALL 是短转指令,可调用的地址范围是 2KB。在看这个题的时候同时看一下 AJMP指令。同时考虑调用指令 ACALL和

9、 LCALL指令和 RET指令的关系。25、 MOV R2,#31H ;数据块长度R2MOV R0,#20H ;数据块首地址R0LOOP:MOV A,R0 ;待查找的数据ACLR C ;清进位位SUBB A,#0AAH ;待查找的数据是 0AAH吗JZ L1 ;是,转 L1INC R0 ;不是,地址增 1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找MOV 51H,#00H ;等于 0,未找到,00H51HRETL1:MOV 51H,#01H ;找到,01H51HRET26、 MOV R2,#31H ;数据块长度R2MOV R0,#20H ;数据块首地址

10、R0LOOP:MOV A,R0 ;待查找的数据AJNZ L1 ;不为 0,转 L1INC 51H ;为 0,00H 个数增 1L1:INC R0 ;地址增 1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找RET27、 MOV DPTR,#SOURCE ;源首地址DPTRMOV R0,#DIST ;目的首地址R0LOOP:MOVX A,DPTR ;传送一个字符MOV R0,AINC DPTR ;指向下一个字符INC R0CJNE A,#24H,LOOP ;传送的是“$”字符吗?不是,传送下一个字符RET28、 MOV A,R3 ;取该数高 8位AANL A

11、,#80H ;取出该数符号判断JZ L1 ;是正数,转 L1MOV A,R4 ;是负数,将该数低 8位ACPL A ;低 8位取反ADD A,#01H ;加 1MOV R4,A ;低 8位取反加 1后R4MOV A,R3 ;将该数高 8位ACPL A ;高 8位取反ADDC A,#00H ;加上低 8位加 1时可能产生的进位MOV R3,A ;高 8位取反加 1后R3L1:RET29、 CLR C ;清进位位 CMOV A,31H ;取该数低 8位ARLC A ;带进位位左移 1位MOV 31H,A ;结果存回 31HMOV A,30H ;取该数高 8位ARLC A ;带进位位左移 1位MOV

12、 30H,A ;结果存回 30H30、 MOV R2,#04H ;字节长度R2MOV R0,#30H ;一个加数首地址R0MOV R1,#40H ;另一个加数首地址R1CLR C ;清进位位LOOP:MOV A,R0 ;取一个加数ADDC A,R1 ;两个加数带进位位相加DA A ;十进制调整MOV R0,A ;存放结果INC R0 ;指向下一个字节INC R1 ;DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找RET31、 MOV R2,#08H ;数据块长度R2MOV R0,#30H ;数据块目的地址R0MOV DPTR,#2000H ;数据块源地址DPTRLOOP:MO

13、VX A, DPTR ;传送一个数据MOV R0,A INC DPTR ;指向下一个数据INC R0 ;DJNZ R2,LOOP ;数据块长度减 1,没传送完,继续传送RET32、 (1)MOV R0,0FH ;2 字节,2 周期 4 字节 4周期(差)MOV B,R0 ;2 字节,2 周期(2)MOV R0,#0FH ;2 字节,1 周期 4 字节 3周期(中)MOV B,R0 ;2 字节,2 周期(3)MOV B,#0FH ;3 字节,2 周期 3 字节 2周期(好)33、 (1)功能是将片内 RAM中 50H51H单元清 0。(2)7A0A(大家可以看一下书上,对于立即数寻址的话,后面一

14、个字节存放的是立即数) 7850(第一个字节的后三位是寄存器,前一个条指令是 010也就是指的 R2,在这里是 R0,所以应该是78,后一个字节存放的是立即数) DAFC (这里涉及到偏移量的计算,可以参考书上 56页)34、 INC R0 ;(7EH)=00HINC R0 ;(R0)=7FHINC R0 ;(7FH)=39HINC DPTR ;(DPTR)=10FFHINC DPTR ;(DPTR)=1100HINC DPTR ;(DPTR)=1101H35、解:(1000H)=53H (1001H)=54H (1002H)=41H(1003H)=52H (1004H)=54H (1005H

15、)=12H(1006H)=34H (1007H)=30H (1008H)=00H(1009H)=70H36、MOV R0,#40H ;40HR0MOV A,R0 ;98HAINC R0 ;41HR0ADD A,R0 ;98H+(41H)=47HAINC R0 MOV R0,A ;结果存入 42H单元CLR A ;清 AADDC A,#0 ;进位位存入 AINC R0 MOV R0,A ;进位位存入 43H功能:将 40H,41H 单元中的内容相加结果放在 42H单元,进位放在43H单元, (R0)=43H, (A)=1, (40H)=98H, (41H)=AFH, (42H)=47H, (43

16、H)=01H37、 MOV A,61H ;F2HAMOV B,#02H ;02HBMUL AB ;F2HO2H=E4HAADD A,62H ;积的低 8位加上 CCHAMOV 63H,A ;结果送 62HCLR A ;清 AADDC A,B ;积的高 8位加进位位AMOV 64H,A ;结果送 64H功能:将 61H单元的内容乘 2,低 8位再加上 62H单元的内容放入63H,将结果的高 8位放在 64H单元。 (A)=02H, (B)=01H, (61H)=F2H, (62H)=CCH, (63H)=B0H, (64H)=02H39、MOV A,XXHORL A,#80HMOV XXH,A4

17、0、 (2)MOV A,XXHMOV R0,AXRL A,R0单片机原理及接口技术课后习题答案 李朝青第五章1、什么是中断和中断系统?其主要功能是什么?答:当 CPU正在处理某件事情的时候,外部发生的某一件事件请求CPU迅速去处理,于是,CPU 暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后,再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件称为中断系统。功能:(1) 使计算机具有实时处理能力,能对外界异步发生的事件作出及时的处理(2) 完全消除了 CPU在查询方式中的等待现象,大大提高了 CPU的工作效率(3) 实现实时控制2、试编写一段对中断系

18、统初始化的程序,使之允许INT0,INT1,TO,串行口中断,且使 T0中断为高优先级中断。解:MOV IE,#097HMOV IP,#02H3、在单片机中,中断能实现哪些功能?答:有三种功能:分时操作,实时处理,故障处理4、89C51 共有哪些中断源?对其中端请求如何进行控制?答:(1)89C51 有如下中断源:外部中断 0请求,低电平有效:外部中断 1请求,低电平有效T0:定时器、计数器 0溢出中断请求T1:定时器、计数器 1溢出中断请求TX/RX:串行接口中断请求(2)通过对特殊功能寄存器 TCON、SCON、IE、IP 的各位进行置位或复位等操作,可实现各种中断控制功能5、什么是中断优

19、先级?中断优先处理的原则是什么?答:中断优先级是 CPU相应中断的先后顺序。原则:(1) 先响应优先级高的中断请求,再响应优先级低的(2) 如果一个中断请求已经被响应,同级的其它中断请求将被禁止(3) 如果同级的多个请求同时出现,则 CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求查询顺序:外部中断 0定时器 0中断外部中断 1定时器 1中断串行接口中断6、说明外部中断请求的查询和响应过程。答:当 CPU执行主程序第 K条指令,外设向 CPU发出中断请求,CPU接到中断请求信号并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU 在每个 S5P2期间顺序

20、采样每个中断源,CPU 在下一个机器周期 S6期间按优先级顺序查询中断标志,如果查询到某个中断标志为 1,将在接下来的机器周期 S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入 PC,以便进入相应的中断服务程序。中断服务完毕后,CPU返回到主程序第 K+1条指令继续执行。7、89C51 在什么条件下可响应中断?答:(1) 有中断源发出中断请求(2) 中断中允许位 EA=1.即 CPU开中断(3) 申请中断的中断源的中断允许位为 1,即中断没有被屏蔽(4) 无同级或更高级中断正在服务(5) 当前指令周期已经结束(6) 若现行指令为 RETI或访问 IE或 IP指令时,该

21、指令以及紧接着的另一条指令已执行完毕8、简述 89C51单片机的中断响应过程。答:CPU 在每个机器周期 S5P2期间顺序采样每个中断源,CPU 在下一个机器周期 S6期间按优先级顺序查询中断标志,如查询到某个中断标志为 1,将在接下来的机器周期 S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入 PC,以便进入相应的中断服务程序。一旦响应中断,89C51 首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令,把当前的 PC值压入堆栈,以保护断点,再将相应的中断服务的入口地址送入 PC,于是 CPU接着从中断服务程序的入口处开始执行。对于有些中断源,CP

22、U 在响应中断后会自动清除中断标志。9、在 89C51内存中,应如何安排程序区?答:主程序一般从 0030H开始,主程序后一般是子程序及中断服务程序。在这个大家还要清除各个中断的中断矢量地址。10、试述中断的作用及中断的全过程。答:作用:对外部异步发生的事件作出及时的处理过程:中断请求,中断响应,中断处理,中断返回11、当正在执行某一个中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?答:(1)符合以下 6个条件可响应新的中断请求:a) 有中断源发出中断请求b) 中断允许位 EA=1,即 CPU开中断c) 申请中断的中断源的中

23、断允许位为 1,即中断没有被屏蔽d) 无同级或更高级中断正在被服务e) 当前的指令周期已结束f) 若现行指令为 RETI或访问 IE或 IP指令时,该指令以及紧接着的另一条指令已被执行完12、89C51 单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?答:有两种方式:电平触发和边沿触发电平触发方式:CPU 在每个机器周期的 S5P2期间采样外部中断引脚的输入电平。若为低电平,使 IE1(IE0)置“1” ,申请中断;若为高电平,则 IE1(IE0)清零。边沿触发方式:CPU 在每个机器周期 S5P2期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期

24、采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使 IE1(IE0)置“1”申请中断;否则,IE1(IE0)置 0。13、89C51 单片机有五个中断源,但只能设置两个中断优先级,因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能:若可能,则应如何设置中断源的中断级别:否则,请简述不可能的理由。 定时器 0,定时器 1,外中断 0,外中断 1,串行口中断。可以,MOV IP,#0AH 串行口中断,外中断 0,定时器 0,外中断 1,定时器 1。可以,MOV IP,#10H 外中断 0,定时器 1,外中断 1,定时器 0,串

25、行口中断。不可以,只能设置一级高级优先级,如果将 INT0,T1设置为高级,而 T0级别高于 INT1. 外中断 0,外中断 1,串行口中断,定时器 0,定时器 1。可以,MOV IP,#15H 串行口中断,定时器 0,外中断 0,外中断 1,定时器 1。不可以 外中断 0,外中断 1,定时器 0,串行口中断,定时器 1。不可以 外中断 0,定时器 1,定时器 0,外中断 1,串行口中断。可以,MOV IP,#09H14、89C51 各中断源的中断标志是如何产生的?又是如何清 0的?CPU响应中断时,中断入口地址各是多少?答:各中断标志的产生和清“0”如下:(1) 外部中断类外部中断是由外部原

26、因引起的,可以通过两个固定引脚,即外部中断 0和外部中断 1输入信号。外部中断 0请求信号,由 P3.2脚输入。通过 IT0来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向 CPU申请中断,并且使 IE0=1。硬件复位。外部中断 1请求信号,功能与用法类似外部中断 0(2) 定时中断类定时中断是为满足定时或计数溢出处理需要而设置的。当定时器/计数器中的计数结构发生计数溢出的,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。TF0:定时器

27、T0溢出中断请求。当定时器 T0产生溢出时,定时器T0请求标志 TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位。TF1:定时器 T1溢出中断请求。功能与用法类似定时器 T0(3) 串行口中断类串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从 RI端引入芯片,才可能引发中断。RI或 TI:串行口中断请求。当接收或发送一串帧数据时,使内部串行口中断请求标志 RI或 TI=1,并请求中断。响应后必须软件复位。CPU响应中断时,中断入口地址如下:中断源 入口地址外部中断 0 0003H定时器

28、T0中断 000BH外部中断 1 0013H定时器 T1中断 001BH串行口中断 0023H15、中断响应时间是否为确定不变的?为什么?答:中断响应时间不是确定不变的。由于 CPU不是在任何情况下对中断请求都予以响应的;此外,不同的情况对中断响应的时间也是不同的。下面以外部中断为例,说明中断响应的时间。在每个机器周期的 S5P2期间,端的电平被所存到 TCON的 IE0位,CPU在下一个机器周期才会查询这些值。这时满足中断响应条件,下一条要执行的指令将是一条硬件长调用指令“LCALL” ,使程序转入中断矢量入口。调用本身要用 2个机器周期,这样,从外部中断请求有效到开始执行中断服务程序的第一

29、条指令,至少需要 3个机器周期,这是最短的响应时间。如果遇到中断受阻的情况,这中断响应时间会更长一些。例如,当一个同级或更高级的中断服务程序正在进行,则附加的等待时间取决于正在进行的中断服务程序:如果正在执行的一条指令还没有进行到最后一个机器周期,附加的等待时间为 13个机器周期;如果正在执行的是 RETI指令或者访问 IE或 IP的指令,则附加的等待时间在 5个机器周期内。若系统中只有一个中断源,则响应时间为 38个机器周期。16、中断响应过程中,为什么通常要保护现场?如何保护?答:因为一般主程序和中断服务程序都可能会用到累加器,PSW 寄存器及其他一些寄存器。CPU 在进入中断服务程序后,

30、用到上述寄存器时,就会破坏它原来存在寄存器中的内容;一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序以前再恢复现场。保护方法一般是把累加器、PSW 寄存器及其他一些与主程序有关的寄存器压入堆栈。在保护现场和恢复现场时,为了不使现场受到破坏或者造成混乱,一般规定此时 CPU不响应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场之前要关中断,在恢复现场之后开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后再开中断,恢复现场之前关中断。17、清叙述中断响应的 CPU操作过程,为什么说中断操作是一个CPU的微

31、查询过程?答:在中断响应中,CPU 要完成以下自主操作过程:a) 置位相应的优先级状态触发器,以标明所响应中断的优先级别b) 中断源标志清零(TI、RI 除外)c) 中断断点地址装入堆栈保护(不保护 PSW)d) 中断入口地址装入 PC,以便使程序转到中断入口地址处在计算机内部,中断表现为 CPU的微查询操作。89C51 单片机中,CPU在每个机器周期的 S6状态,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1状态中,响应最高级中断请求。但是以下情况除外:a) CPU正在处理相同或更高优先级中断b) 多机器周期指令中,还未执行到最后一个机器周期c) 正在执行中断

32、系统的 SFR操作,如 RETI指令及访问IE、IP 等操作时,要延后一条指令18、在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?答:在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机内部,中断表现为 CPU的微查询操作。89C51单片机中,CPU 在每个机器周期的 S6状态下,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1状态中,响应最高级中断请求。在以下情况下,还需要有另外的等待:a) CPU正在处理相同或更高优先级中断b) 多机器周期指令中,还未执行到最后一个机器周期c) 正在执行中断系统的 SFR操作,如 RETI

33、指令及访问IE、IP 等操作时,要延后一条指令单片机原理及接口技术课后习题答案 李朝青第六章第 6章习题答案1、定时器模式 2有什么特点?适用于什么场合?答:(1) 模式 2把 TL0(或 TL1)配置成一个可以自动重装载的 8位定时器/计数器。TL0 计数溢出时不仅使溢出中断标志位 TF0置 1,而且还自动把 TH0中的内容重新装载到 TL0中。TL0 用作 8位计数器,TH0用以保存初值。(2) 用于定时工作方式时间(TF0 溢出周期)为,用于计数工作方式时,最大计数长度(TH0 初值=0)为 28=256个外部脉冲。这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别

34、适于作串行波特率发生器。2、单片机内部定时方式产生频率为 100KHZ等宽矩形波,假定单片机的晶振频率为 12MHZ,请编程实现。答:T0低 5位:1BHT0高 8位:FFHMOV TMOD,#00H ;设置定时器 T0工作于模式 0MOV TL0,#1BH ;设置 5ms定时初值MOV TH0,#0FFHSETB TR0 ;启动 T0LOOP:JBC TF0,L1 ;查询到定时时间到?时间到转 L1SJMP LOOP ;时间未到转 LOOP,继续查询L1:MOV TL0,#1BH ;重新置入定时初值MOV TH0,#0FFHCPL P1.0 ;输出取反,形成等宽矩形波SJMP LOOP ;重

35、复循环3、89C51 定时器有哪几种工作模式?有何区别?答:有四种工作模式:模式 0,模式 1,模式 2,模式 3(1) 模式 0:选择定时器的高 8位和低 5位组成一个 13位定时器/计数器。TL 低 5位溢出时向 TH进位,TH 溢出时向中断标志位TF进位,并申请中断。定时时间 t=(213-初值)振荡周期12;计数长度位 213=8192个外部脉冲(2) 模式 1:与模式 0的唯一差别是寄存器 TH和 TL以全部 16位参与操作。定时时间 t=(216-初值)振荡周期12;计数长度位216=65536个外部脉冲(3) 模式 2:把 TL0和 TL1配置成一个自动重装载的 8位定时器/计数

36、器。TL 用作 8位计数器,TH 用以保存初值。TL 计数溢出时不仅使 TF0置 1,而且还自动将 TH中的内容重新装载到 TL中。定时时间 t=(28-初值)振荡周期12;计数长度位 28=256个外部脉冲(4) 模式 3:对 T0和 T1不大相同若设 T0位模式 3,TL0 和 TH0被分为两个相互独立的 8位计数器。TL0为 8位计数器,功能与模式 0和模式 1相同,可定时可计数。TH0仅用作简单的内部定时功能,它占用了定时器 T1的控制位 TR1和中断标志位 TF1,启动和关闭仅受 TR1控制。定时器 T1无工作模式 3,但 T0在工作模式 3时 T1仍可设置为02。4、89C51 内

37、部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?答:89C51 单片机内有两个 16位定时器/计数器,即 T0和 T1。T0由两个 8位特殊功能寄存器 TH0和 TL0组成;T1 由 TH1和 TL1组成。5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器时,对外界计数频率有何限制?答:定时时间与定时器的工作模式,初值及振荡周期有关。作计数器时对外界计数频率要求最高为机器振荡频率的 1/24。6、简述定时器 4种工作模式的特点,如何选择设定?答:(1) 模式 0:选择定时器的高 8位和低 5位组成一个 13位定时器/计数器。TL 低 5位溢出时向 TH进位,TH 溢出时向中断

38、标志位TF进位,并申请中断。定时时间 t=(213-初值)振荡周期12;计数长度位 213=8192个外部脉冲置 TMOD中的 M1M0为 00(2) 模式 1:与模式 0的唯一差别是寄存器 TH和 TL以全部 16位参与操作。定时时间 t=(216-初值)振荡周期12;计数长度位216=65536个外部脉冲置 TMOD中的 M1M0为 01(3) 模式 2:把 TL0和 TL1配置成一个自动重装载的 8位定时器/计数器。TL 用作 8位计数器,TH 用以保存初值。TL 计数溢出时不仅使 TF0置 1,而且还自动将 TH中的内容重新装载到 TL中。定时时间 t=(28-初值)振荡周期12;计数

39、长度位 28=256个外部脉冲置 TMOD中的 M1M0为 10(4) 模式 3:对 T0和 T1不大相同若设 T0位模式 3,TL0 和 TH0被分为两个相互独立的 8位计数器。TL0为 8位计数器,功能与模式 0和模式 1相同,可定时可计数。TH0仅用作简单的内部定时功能,它占用了定时器 T1的控制位 TR1和中断标志位 TF1,启动和关闭仅受 TR1控制。定时器 T1无工作模式 3,但 T0在工作模式 3时 T1仍可设置为02。置 TMOD中的 M1M0为 117、当 T0用作模式 3时,由于 TR1已被 T0占用,如何控制 T1的开启和关闭?答:用 T1控制位 C/T切换定时器或计数器

40、工作方式就可以使 T1运行。定时器 T1无工作模式 3,将 T1设置为工作模式 3,就会使 T1立即停止计数,关闭。8、以定时器/计数器 1进行外部时间计数,每计数 1000个脉冲后,定时器/计数器 1转为定时工作方式,定时 10ms后又转为计数方式,如此循环不止。假定为 6WHZ,用模式 1编程。解:T1 为定时器时初值:T1为计数器时初值:所以:L1:MOV TMOD,#50H ;设置 T1为计数方式且工作模式为 1MOV TH1,#0FCH ;置入计数初值MOV TL1,#18HSETB TR1 ;启动 T1计数器LOOP1:JBC TF1,L2 ;查询计数溢出?有溢出(计数满 1000

41、个)转 L2SJMP LOOP1 ;无溢出转 LOOP1,继续查询L2:CLR TR1 ;关闭 T1MOV TMOD,#10H ;设置 T1为定时方式且工作与模式 1MOV TH1,#0ECH ;置入定时 10ms初值MOV TL1,#78HSETB TR1 ;启动 T1定时LOOP2:JBC TF1,L1 ;查询 10ms时间到?时间到,转 L1SJMP LOOP2 ;时间未到,转 LOOP2,继续查询9、一个定时器定时时间有限,如何实现两个定时器的串行定时以满足较长定时时间的要求?答:当一个定时器溢出时,设置另一个定时器的初值为 0开始定时。10、使用一个定时器,如何通过软硬件结合方法实现

42、较长时间的定时?答:设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。11、89C51 定时器作定时和计数时其计数脉冲分别由谁提供?答:作定时器时计数脉冲由 89C51片内振荡器输出经 12分频后的脉冲提供,作计数时计数脉冲由外部信号通过引脚 P3.4和 P3.5提供。12、89C51 定时器的门控信号 GATE设置为 1时定时器如何启动?答:只有(或)引脚为高电平且由软件使 TR0(或 TR1)置 1时,才能启动定时器工作。13、已知 89C51单片机的 fosc=6MHz,请利用 T0和 P1.0输出矩形波。矩形波高电平宽 50s,低电平宽 30

43、0s。解:T0 采用模式 2作为 50s 定时时的初值:所以作 300s 定时时的初值:所以MOV TMOD,#02H ;设置定时器 T0工作于模式 2L2:CLR P1.0 ;P1.0输出低电平MOV TH0,#6AH ;置入定时 300s 初值MOV TL0,#6AHSETB TR0 ;启动 T0LOOP1:JBC TF0,L1 ;查询 300s 时间到?时间到,转L1SJMP LOOP1 ;时间未到,转 LOOP1,继续查询L1:SETB P1.0 ;P1.0输出高电平CLR TR0 ;关闭 T0MOV TH0,#0E7H ;置入定时 300s 初值MOV TL0,# 0E7HSETB

44、TR0 ;启动 T0LOOP2:JBC TF0,L2 ;查询 50s 时间到?时间到,转L2SJMP LOOP2 ;时间未到,转 LOOP2,继续查询14、已知 89C51单片机的 fosc=12MHz,用 T1定时。试编程由 P1.0和 P1.1引脚分别输出周期为 2ms和 500s 的方波。解:采用模式 0作定时初值:所以MOV R2,#04H ;R2为“250s”计数器,置入初值 4CLR P1.0 ;P1.0输出低电平CLR P1.1 ;P1.1输出低电平MOV TMOD,#00HL2:MOV TH1,#0F8H ;置入定时 250s 初值MOV TL1,#06HSETB TR1 ;启

45、动 T1LOOP:JBC TF1,L1 ;查询 250s 时间到?时间到,转L1SJMP LOOP ;时间未到,转 LOOP,继续查询L1:CPL P1.1 ;P1.1输出取反,形成周期为 500sCLR TR1 ;关闭 T1DJNZ R2,L2 ;“250s”计数器减 1,到 1ms吗?未到转 L2CPL P1.0 ;P1.0输出取反,形成周期为 2ms方波MOV R2,#04H ;重置“250s”计数器初值 4LJMP L2 ;重复循环15、单片机 8031的时钟频率为 6MHz,若要求定时值分别为0.1ms,1ms,10ms,定时器 0工作在模式 0、模式 1和模式 2时,其定时器初值各

46、应是多少?解:(1) 0.1ms模式 0:T0低 5位 01110B=0EHT0高 8位:11111110B=FEH模式 1:模式 2:(2) 1ms模式 0:T0低 5位 01100B=0CHT0高 8位:11110000B=F0H模式 1:模式 2:在此情况下最长定时为 512s,无法一次实现定时 1ms,可用0.1ms循环 10次(3) 10ms模式 0:T0低 5位 11000B=18HT0高 8位:01100011B=63H模式 1:模式 2:在此情况下最长定时为 512s,无法一次实现定时 10ms,可用 0.1ms循环 100次16、89C51 单片机的定时器在何种设置下可提供三

47、个 8位计数器定时器?这时,定时器 1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少(允许存在一定误差)?设 fosc=12MHz。解:当 T0为模式 3,T1 为模式 2时,可提供 3个 8位定时器。可选 100b/s17、试编制一段程序,功能为:当 P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当 P1.2引脚的电平下跳时,停止计数,并将计数值写入 R6,R7。解:MOV TMOD,#05H ;T0为计数方式且工作于模式 1JNB P1.2,$ ;等待 P1.2引脚电平上跳MOV TH0,#00H ; P1.2电平上跳,置入计数初值MOV TL0,#00HSETB TR0 ;启动 T0JB P1.2,$ ;等待 P1.2引脚电平下跳CLR TR0 ;电平下跳,关闭 T0MOV R7,TH0 ;计数初值写入 R7,R6MOV R6,TL018、设 fosc=12MHz。试编制一段程序,功能为:对定时器

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报