《单片机原理及应用课后习题答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课后习题答案.docx(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、课后思考题级习题答案思考题与习题 1一、填空1、单片机按照用途通常分为 通用型 与 专用型。2、单片机也称为 微控制器与单片微型计算机 。二、简答1、什么就是单片机?答:单片机也称微控制器,它就是将中央处理器、程序处理器、数据处理器、输入/输出接口、定时/计数器串行口、系统总线等集成在一个半导体芯片上得微计算机,因此又称为单片微型计算机,简称为单片机。2.简述单片机得特点与应用领域。答:(1)单片机体积小,应用系统结构简单,能满足很多应用领域对硬件功能得要求。(2) 单片机得可靠性高。(3) 单片机得指令系统简单,易学易用。(4) 单片机得发展迅速,特别就是最近几年,单片机得内部结构越来越完善
2、。 3.写出 AT89S51 与 AT89S52 芯片得主要区别。内部程序存储区容量不同,52 得程序存储空间为 8K,内部数据存储空间为256B,中断源 8 个,定时器计数器有 3 个,而 51 得程序存储空间为 4K,内部数据存储空间为 128B,中断源 5 个,定时器计数器有 2 个。思考题与习题 2一、填空题1、如果( PSW)=10H, 则内部 RAM 工作寄存器区得当前寄存器就是第二组寄存器,8 个寄存器得单元地址为10H17H。2、为寻址程序状态字 F0 位,可使用得地址与符号有 PSW、5、0D0H、5、F0与0D5H。3、单片机复位后,(SP)=07H,P0P3=FFH ,P
3、C=0000H ,PSW= 00H A= 00H 。4、AT89S51 单片机得程序存储器得寻址范围就是由PC决定得,由于AT89S51 单片机得 PC 就是16位得,所以最大寻址范围为 64KB。5、写出位地址为 20H 所在得位,字节地址 24H、0。6、写出字节地址为 20H 得单元最高位得位地址为 07H ,最低位得位地址为00H 。7、如果晶振频率 fOSC 6MHz ,则一个时钟周期为 1、66667E-7,一个机器周期为 2us。8、 AT89S51 单片机共有 26 个特殊功能寄存器。EA9、 AT89S51 单片机片外数据存储器最多可以扩展 64KB。10、如果 CPU 从片
4、外 ROM 得 0000H 单元开始执行程序,那么低电平。二、选择题引脚应接1、PC 得值就是(C)。A、当前指令前一条指令得地址B、当前正在执行指令得地址C、下一条指令得地址D、控制器中指令寄存器得地址2、对程序计数器 PC 得操作就是(A )。A、自动进行得B、通过传送进行C、通过加“1”指令进行得D、通过减“1”指令进行3、在 AT89S51 单片机中 P0 口作为(D)。A、数据总线B、地址总线C、控制总线D、数据总线与地址总线4、 在 AT89S51 单片机中( C)。A、具有独立得专用得地址总线B、P0 口与 P1 口作为地址总线C、P0 口与 P2 口作为地址总线D、P2 口与
5、P1 口作为地址总线三、简答题1、AT89S51 单片机得EA 引脚有何功能?如果使用片内 ROM,该引脚该如何处理?答: EA 为该引脚得第一功能,为访问程序存储器控制信号。如果使用片内 ROM,则EA 信号为高电平。2、什么就是指令周期,机器周期与时钟周期?答:指令周期就是 CPU 每取出并执行一条指令所需得全部时间;机器周期就是 CPU 完成一个基本操作所需要得时间。时钟周期就是指计算机主时钟得周期时间。3、堆栈得作用就是什么?在程序设计时,为什么要对堆栈指针 SP 重新赋值?答:堆栈就是一个特殊得存储区,主要功能就是暂时存放数据与地址,通常用来保护断点与现场;堆栈指针 SP 复位后指向
6、 07H 单元,00H-1FH 为工作寄存器区,20H-2FH 为位寻址区,这些单元有其她功能,因此在程序设计时,需要对SP 重新赋值。4、单片机复位有几种方法?答:1、上电复位2、按键复位3、瞧门狗复位4、软件复位5. AT89S51 单片机运行出错或程序陷入死循环时,如何摆脱困境?可以采用复位键进行复位,使单片机初始化,也可以在软件中使用瞧门狗。6、AT89S51 单片机P0P3 口得驱动能力如何?如果想获得较大得驱动能力,采用低电平输出还就是高电平输出?答:P0 口每位可驱动 8 个 LSTTL 输入,而P1、P2、P3 口得每一位得驱动能力,只有 P0 口得一半。当 P0 口得某位为高
7、电平时,可提供 400A 得电流;当P0 口得某位为低电平(0、45V)时,可提供 3、2mA 得灌电流,如低电平允许提高,灌电流可相应加大。所以,任何一个口要想获得较大得驱动能力,只能用低电平输出。7. AT89S51 单片机内部 RAM 低 128 单元划分为几个部分?每部分有什么特点?答:工作寄存器区、位寻址区、用户 RAM 区。每部分特点如下:00H-1FH 为工作寄存器区,共 32 个单元,被分为 4 组, 每组有八个寄存器(R0-R7)。任意时刻,CPU 只能使用一组寄存器,当前正在使用得寄存器组被称为当前寄存器。在程序运行过程中如果不使用得寄存器也可以作为 RAM 使用。20H-
8、2FH 为位寻址区,共 16 个单元。这 16 个单元可以作为字节单元使用,同时这 16 个单元得每一位也可以单独使用,即位寻址。30H-7FH 为用户 RAM 区,用于存放各种数据、中间结果,起到数据缓冲得作用。在实际使用中,常需要把堆栈设在用户 RAM 中。8、 AT89S51 单片机得片内都包含了哪些功能部件?各个功能部件主要得功能就是什么?答: 1 个微处理器(CPU);128 个数据存储器(RAM)单元;4KB Flash 程序存储器;4 个 8 位可编程并行 I/O 口;1 个全双工串行口;2 个 16 位定时器/计数器;1 个瞧门狗定时器;1 个中断系统,5 个中断源,2 个优先
9、级;26 个特殊功能寄存器(SFR);1 个瞧门狗定时器。9. 程序存储器得空间中,有 5 个特殊单元,分别对应 AT89S51 单片机 5 个中断源得入口地址,写出这些单元得地址及对应得中断源。中断源中断入口地址外部中断 00003H定时/计数器 0 溢出中断000BH外部中断 10013H定时/计数器 1 溢出中断001BH串行中断0023H10、 AT89S51 单片机有几个存储器空间?画出它得存储器结构图。AT89S51 单片机得有 3 个存储器空间,即片内片外统一编制得程序存储器,片内数据存储器与片外数据存储器。11、什么就是空闲方式?怎样进入与退出空闲方式?答:空闲方式:CPU 处
10、于休眠得状态,而片内所有其她外围设备保持工作状态,即振荡器保持工作,时钟脉冲继续输出到中断、串行口、定时器等功能部件, 使它们继续工作,但时钟脉冲不再送到 CPU,因而 CPU 停止工作。进入:每当CPU 执行一条将 IDL 位置 1 得指令,就使它进入空闲方式,CPU即停止工作,进入空闲方式。退出:两种:一就是被允许得中断源请求中断时,由内部得硬件电路清 0 IDL 位,终止空闲方式;另一种方式就是硬件复位。RST 引脚上得复位信号直接将 IDL 为清 0,从而使单片机退出空闲方式。12、什么就是掉电方式?怎样进入与退出掉电方式?答:掉电:振荡器停止工作,单片机内部所有得功能部件全部停止工作
11、。进入:CPU 执行一条将 PD 位置 1 得指令,就使单片机进入掉电方式。退出:唯一得方法就是硬件复位,复位后单片机内部特殊功能寄存器得内容被初始化,PCON=0,从而退出掉电方式。13、AT89S51 单片机得控制信号引脚有哪些?说出其功能。答:RST(9 脚):复位信号输入端,高电平有效。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE (30 脚):地址锁存控制信号。当访问外部程序存储器或数据存储器时, ALE 输出脉冲用于锁存低 8 位地址。PSEN (29 脚):程序储存允许输出端,就是外部程序存储器得读选通信号, 低电平有效。当AT89S51 从外部程
12、序存储器取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。当访问外部数据存储器,不会出现两次有效得 PSEN 信号。EA (31 脚): EA 为该引脚得第一功能,为访问程序存储器控制信号。当EA 信号为低电平时,对 ROM 得读操作限定在外部程序存储器;而当EA 信号为高电平时,则对 ROM 得读操作就是从内部程序存储器开始,并可延续至外部程序存储器。四、设计一个电路,使单片机得 P0 口能驱动 8 只发光二极管。思考题与习题 3思考题与习题 3一、填空1、假定外部数据存储器 3000H 单元得内容为 50H,执行下列指令后,累加器 A 中得内容为 50H。MOVDPTR,#3000
13、H MOVX A,DPTR2、假定累加器 A 中得内容为 30H,DPTR 中得内容为 2000H,执行指令:MOVCA,A+DPTR后,把程序存储器2030H单元得内容送入累加器 A 中。3 、已知 (30H)=21H , (31H)=04H , 说明下 列程序得功能 , 执行后(30H)=04H,(31H)=21H。PUSH 30H PUSH 31H POP 30HPOP 31H4、已知程序执行前,在 AT89S51 单片机片内 RAM 中,(A)=33H,(R0)=28H,(28H)=0BCH,写出执行如下程序后,(A) =63H。ANL A,#60H ORL 28H,A XRL A,R
14、0 CPL A5、对程序存储器得读操作使用得指令 MOVC 指令。6、对外部数据存储器得读操作使用得指令 MOVX 指令。7、执行如下三条指令后,20H 单元得内容就是 0FH M O VR 0,20HM O V40H,0 F HM O VR 0,40H二、判断判断以下指令得正误。(1) MOV R1,R2 (2)MOV 20H,R3 (3)DEC DPTR (4)INC DPTR (5)MOVX A,R1 (6)MOVC A,DPTR (7)PUSH DPTR (8)CLR R1 (9)MOV 20H,30H (10)MOV F0,C(11) CPL R7(12) RC A三、简答1、MCS
15、-51 共有哪几种寻址方式?试举例说明。(1)寄存器寻址方式 MOVA,R2(2) 直接寻址方式 MOVA,30H(3) 寄存器间接寻址方式 MOVA,R0 (4)立即寻址 MOVA,#20H(5) 变址寻址 MOVCA,A+ DPTR(6) 相对寻址 SJMPrel(7) 位寻址 MOVC, 0D5H;2、MCS-51 指令按功能可以分为哪几类?每类指令得作用就是什么?数据传送类指令(28 条);数据传送就是指将源地址单元中得数据传送到目得地址单元中,且源地址单元中得数据保持不变,或者源地址单元中得数据与目得地址单元中得数据互换。算术运算类指令(24 条);这类指令中,大多数都要用累加器 A
16、 来存放源操作数,另一个操作数就是工作寄存器 Rn、片内 RAM 单元或立即数。执行指令时,CPU 总就是将源操作数与累加器 A 中得操作数进行相应操作,然后将结果保留在累加器 A 中,同时会影响程序状态字 PSW 中得溢出标志 OV、进位标志 CY、辅助进位标志 AC 与奇偶标志位 P。逻辑运算及移位类指令(25 条);在这类指令中,仅当目得操作数为累加器 A 时对奇偶标志位 P 有影响,其余指令均不影响 PSW 得状态。控制转移类指令(17 条);位操作类指令(17 条)。MCS-51 系列单片机得硬件结构中有一个位处理器,对位地址空间具有丰富得位操作指令。由于位操作数就是“位”,取值只能
17、就是 0 或 1,故又称为布尔操作指令。3、访问 SFR,可使用哪些寻址方式? 寄存器寻址,直接寻址,位寻址4、执行指令:MOV A,R0 ;在程序状态字 PSW 中 RS1=0,RS0=0; RS1=1,RS0=0 得两种情况下,上述指令执行结果有何不同?RS1=0,RS0=0 时,就是将内部 RAM 00H 单元中得内容传送给累加器 A, RS1=1,RS0=0 时,就是将内部 RAM 10H 单元中得内容传送给累加器 A4. SJMP(短转移)指令与 LJMP(长对转移)指令得目得地址得范围各就是多少?SJMP 指令得目得地址范围就是-128B+127B;LJMP 指令得目得地址范围就是
18、 64KB。5. JB 指令与 JBC 指令得区别就是什么?6. 答:这类指令就是判断直接寻址位就是否为“1”或为“0”,当条件满足时转移, 否则继续顺序执行。而 JBC 指令当条件满足时,指令执行后同时将该位清“0”。7、指出下列每条指令得寻址方式。(1) MOV A,40H;直接寻址(2) MOV 30H,#00H;立即寻址(3) SJMPLOOP;相对寻址(4) MOVC A,A+DPTR;变址寻址(5) MOVXA,R0;寄存器寻址(6) MOV C,20H;位寻址(7) MOV 20H,R3 ;寄存器寻址(8) MOV 31H,20H ;直接寻址8、 已知程序执行前,在 AT89S5
19、1 单片机片内 RAM (10H)=20H , (20H)=33H,(33H)=45H,(45H)=56H,(P1)=30H。分析下列程序按顺序执行每条指令后得结果。MOV A,33H;(A)=45HMOV R1,A;(R1)=45H MOV R1,#0FFH ;(45H)0FFHMOV 45H,33H;(45H)=45HMOV R0,#10H;(R0)=10HMOV A,R0;(A)=20HMOV P1,#0FFH;(P1)=0FFHMOV A ,P1;(P1)=30HMOV 20H,A;(20H)=30H9、已知程序执行前,在 AT89S51 单片机片内 RAM 中,(A)=85H,(R0
20、)=20H, (20H)=0AFH,(Cy)=1,(21H)=0FFH。写出下列指令独立执行后寄存器与存储单元得内容,若该指令影响标志位,写出 CY、AC、OV 与 P 得值。ADDA,R0 ;CY=1,AC=1,OV=1,P=1 ,(A)=34HADDC A, 21H;CY=1,AC=1, P=1,OV=0 ,(A)=85H SWAP A; (A)=58H ,P=1SUBB A,#50H;CY=0,AC=0, P=1,OV=1 ,(A)=34H DEC R0;R0=1FHXCHD A,R0;(A)=8FH,(20H)=0A5H,P=110、 写出完成如下要求得指令,但就是不能改变未涉及位得内
21、容。(1) 把 ACC、3, ACC、4,ACC、5 与 ACC、6 置“1”。ORL A,#01111000B(2) 把累加器 A 得中间 4 位清“0”。ANL A,#11000011B(3) 将内部数据存储器 10H 单元中得数据得高 2 位,低 3 位清“0”。ANL 10H,#00111000B(4) 将内部数据存储器 50H 单元中得数据所有位取反。XRL 50H,#11111111B(5) 将内部数据存储器 40H 单元中得数据高 4 位取反。XRL 40H,#11110000B(6) 将内部数据存储器 10H 单元中得数据低 3 位置“1”。ORL 10H,#00000111B
22、11、分析执行下列指令序列所实现得逻辑运算式MOVC,P1、0ANLC,/P1、1MOV20H,CMOVC,/P1、0ANLC, P1、1ORLC, 20HMOVP3、0,CP3、0=(P1、0/P1、1)(/P1、0P1、1)思考题与习题 4一、简答题1、什么就是汇编语言源程序、汇编、汇编程序?(1) 使用汇编语言编写得程序称为汇编语言源程序。(2) 汇编语言程序不能直接在计算机上运行,需要将它翻译成机器语言程序, 也就就是目标代码程序,这个翻译过程称为汇编。(3) 完成汇编任务得程序成为汇编程序。2、什么叫伪指令,有什么作用?所谓伪指令就是 告诉汇编程序应该如何完成汇编工作,只有在汇编前得
23、源程序中才有伪指令,而在汇编后没有机器代码产生。伪指令具有控制汇编程序得输入输出、定义数据与符号、条件汇编、分配存储空间等功能。二、编程题1. 在外部 RAM3000H 单元中有一个 8 位二进制数,试编程将该数得低四位屏蔽掉,并送给外部 RAM3001H 单元中。MOVDPTR,#3000HMOVXA,DPTRANLA,#0F0HINC DPTRMOVXDPTR,Af2. 已知OSC12MHz ,试编写延时 20ms 与 1s 得程序DELAY20MS:MOVR6,#100;延时 20msD1:MOVR7,#98nopD2:DJNZR7,D2DJNZRETR6,D1DELAY1S:ENDMO
24、VR7,#250DEL1:MOVR6,#200DEL2:MOVR5,#98DEL3:DJNZR5,DEL3NOPDJNZR6,DEL2DJNZR7,DEL1RETEND3. 用查表得方法求06 之间得整数得立方。已知整数存在内部RAM30H 单元中, 查表结果回存 30H 单元。MOVDPTR,#tab MOVA,30H MOVC A,A+DPTR MOV30H,ARetORG1000HTAB:DB 00H,01H,08H,1BH,40H,7DH,0D8H4. 若有 3 个无符号数 x、y、z 分别在内部存储器 40H、41H、42H 单元中,试编写一个程序,实现 x y 时,xz 得结果存放
25、在 43H、44H 单元中;当 xy 时,yz 得结果存放入 43H、44H 单元中。MOV A,40H CLR CSUBB A,41H ;相减比较大小JC L1MOV A,40H ;x=y SJMP L2L1:MOV A,41H ;xy L2:ADD A,42H MOV 43H,AMOV A,#0 ;保存进位到 44H 单元ADDC A,#0 MOV 44H,A5. 在内部 RAM 得 BLOCK 开始得单元中有一无符号数据块,数据块长度存人LEN 单元。试编程求其中得最小得数并存入 MINI 单元。MOVR2, #11H;要比较得数据字节数MOVR1 , #BLOCK;置数据块得首地址DE
26、CLENMOVA , R1 LOOP:MOVMINI,AINCR1CLRCSUBBA,R1;两个数比较JCLOOP1 ;C=1,A 中得数小,跳转到 LOOP1 MOVA,R1 ;C=1,则把小数送给 ASJMPLOOP2 LOOP1:MOVA,MINILOOP2:DJNZR2, LOOP;比较就是否结束 MOV50H,A;把大数存入 50H 单元RET6. 在外部 RAM3000H 起始得单元中存放一组有符号数,字节个数存在内部RAM20H 单元中。统计其中大于 0、等于 0 与小于 0 得数得数目,并把统计结果存放在内部 RAM21H、22H 与 23H 单元中。MOV DPTR,#300
27、0H ;设置首地址MOV 22H,#0;清零MOV 23H,#0 MOV 24H,#0L2:MOVX A,DPTR;取数据JNZ L1INC 22H;为 0 SJMP NEXTL1:JB ACC、7,FUINC 21H;正数SJMP NEXT FU:INC 23H;负数NEXT:INC DPTRDJNZ 20H,L2 RET7. 查找内部 RAM20H40H 单元中就是否有 0FFH 这一数据,如果有,将 PSW中得 F0 位置 1,没有则将其清零。MOV R0,#20HMOV R1,#21H CLR F0NEXT:MOV A,R0 CJNE A,#0FFH,L1 SETB F0SJMP L2
28、L1:INC R0DJNZ R1,NEXT L2:RET8. 在片内 RAM 得 30H 单元开始,相继存放 5 个无符号数,请使用冒泡法编写程序,使这组数据按照从小到大顺序排列。MAIN:MOVR0,#30H;数据存储区首单元地址MOVR7#04H;各次冒泡比较次数CLRF0;互换标志清“0” LOOP:MOVA,R0;取前数MOVR2,A;存前数INCR0MOVA,R0;取后数CLRCSUBB A,R2;比较大小JNC LOOP1SETB F0;互换,置标志位MOV A,R2;互换数据XCH A,R0 DEC R0 XCH A,R0 INC R0LOOP1: MOV A,R0DJNZ R7
29、,LOOP;进行下一次比较JB F0,MAIN;进行下一轮冒泡SJMP $;排序结束思考题与习题 5一、填空1、 AT89S51 单片机得五个中断源得中断入口地址分别就是 INT0 : 0013HINT1INT1 : 001BHT0: 0000BH T1: 000BH;串行口: 0023H。2、 AT89S51 单片机中断系统中共有INT0、T0 、T1、串行口 五个中断源,其中优先权最高得就是 INT0,优先级最低得就是 串行口。3、 在 CPU 未执行同级或更高优先级中断服务程序得条件下,中断响应等待时间最少需要3 个机器周期。4、 AT89S51 单片机得堆栈区只可设置在 内部 RAM
30、30H-7FH ,堆栈寄存器INT1SP 就是 8 位寄存器。5、 若( IP)=00010100B,则中断优先级最高者为为T1。,最低者6、 对 中 断 进 行 查 询 时 , 查 询 得 中 断 标 志 位 共有 IE0 、 TF0 、 IE1 、 TF1 、 RI与 TI 六个中断标志位。7、 AT89S51 单片机内部有 16 位加 1 定时器/计数器,可通过编程决定它们得工作方式,其中可进行 13 位定时器/计数器得就是方式就是方式 0 。8、 处理定时器/计数器得溢出请求有两种方法,分别就是中断方式与查询方式。使用中断方式时,必须 开中断 ;使用查询方式时,必须 关中断 。9、 假
31、定定时器 1 工作在方式 2,单片机得振荡频率为 6MHz ,则最大得定时时间为 512us。二、选择题1. CPU 响应中断后,能自动清除中断请求“1”标志得有(C)。AINT0 /INT1 采用电平触发方式BINT0 /INT1 采用两边触发方式C定时/计数器 T0/T1 中断D串行口中断 TI/RI2. AT89S51 五个中断源中,属外部中断得有(A B)。A. INT0BINT1CT0DT1ETIFRI3. 按下列中断优先顺序排列,有可能实现得有(B)。AT1、T0、INT0 、INT1 、串行口BINT0 、T1、T0、INT1 、串行口CINT0 、INT1 、串行口、T0、T1
32、DINT1 、串行口、T0、INT0 、T14. 各中断源发出得中断申请信号,都会标记在AT89S51 系统中得( B) 中。ATMODBTCON/SCONCIEDIP5. 外中断初始化得内容不包括: (A)A. 设置中断响应方式B. 设置外中断允许C. 设置中断总允许D. 设置中断触发方式6. 在 AT89S51 单片机中,需要软件实现中断撤销得就是:(D)A. 定时中断B 脉冲触发得外部中断C 电平触发得外部中断D 串行口中断7. 在下列寄存器中,与定时器 /计数器控制无关得就是:(B)ATCON BSCONCIE DTMOD8. 与定时工作方式 0 与 1 相比较,定时工作方式 2 具备
33、得特点就是:(A) A计数溢出后能自动恢复计数初值 B增加计数器得位数C提高了定时得精度D适于循环定时与循环计数9. 对定时器 0 进行关中断操作,需要复位中断允许控制寄存器得: (A)AEA 与 ET0 BEA 与 EX0CEA 与 ET1DEA 与 EX1三、判断题1. 中断响应最快响应时间为 3 个机器周期。(对)2. AT89S51 每个中断源相应地在芯片上都有其中断请求输入引脚。(错)3. AT89S51 单片机对最高优先权得中断响应就是无条件得。(错)4. 中断初始化时,对中断控制器得状态设置,只可使用位操作指令,而不能使用字节操作指令。(错)5. 外部中断INT0入口地址为 00
34、13H。(错) 四、简答题1、什么叫中断?AT89S51 单片机能提供几个中断源?几个优先级?各个中断源得优先级怎样确定?在同一优先级中各个中断源得优先级怎样确定?中断就是指计算机暂时停止原程序执行转而为外部设备服务(执行中断服务程序),并在服务完后自动返回原程序执行得过程。AT89S51 单片机能提供 5 个中断源( INT0 、INT1 、T0、T1、RXD/TXD) AT89S51 单片机将 5 个中断源,分为两个优先级:高优先级与低优先级。对于同一优先级中所有中断源,按优先权先后排序。如表 5-1 所示。INT0 优先权最高,串行口优先权最低。若在同一时刻发出请求中断得两个中断源属于同
35、一优先级, CPU 先响应优先权排在前面得中断源中断申请,后响应优先权排在后面得中断源中断申请。优先权由单片机决定,而非编程决定。2. 写出 AT89S51 单片机 5 个中断源得入口地址、中断请求标志位名称、位地址及其所在得特殊功能寄存器。表 5-1 AT89S51 中断入口地址及内部优先权中断 源中断请求标志位 中断入口地址优先权INT0IE00003HT0INT1T1串行口TF0 IE1 TF1RI、TI000BH0013H001BH0023H3. 开 AT89S51 单片机外中断 1,如何操作?写出操作指令。SETB IT1SETB EA或者MOV IE,#84H4、 AT89S51
36、单片机有几个定时器/计数器?定时与计数有何异同?答:两个;定时器就是由外部晶振振荡频率产生决定,计数方式就是由内部定时器/计数器产生。作为定时器用时,加法计数器对内部机器周期脉冲计数。由于机器周期就是定值,如机器周期=1s,计数值 100,相当于定时 100s。脉冲来自 T0(P3、4)或者 T1(P3、5)引脚时,可实现外部事件得计数功能。加法计数器得初值可以由程序设定,设置得初值不同,计数值或定时时间就不同。在定时器/计数器得工作过程中,加法计数器得内容可由程序读回 CPU。5. AT89S51 单片机内部得定时器/计数器控制寄存器有哪些?各有何作用? 答:有 TMOD 与 TCON 两个
37、。TMOD 就是定时工作方式寄存器,用来控制T0、T1 得工作方式。TCON 定时器控制寄存器,用来控制定时器得运行及溢出标志等。6. 定时器 T0 与 T1 各有几种工作方式? 答:T0、T1 得工作方式有四种,如下表7、设 AT89S51 单片机得晶振频率为 12MHz,问定时器处于不同得工作方式M1工作方式工 作 方 式容量M0 00013 位计数器, N =13213=819201116 位计数器, N =16216=65536102两个 8 位/计数器,初值自动装入, N =828=256113两个 8 位/计数器,仅适用于 T0, N =828=256时,最大定时范围分别就是多少?
38、 机器周期为 1us;最大定时范围如下:方式 0 为 8192us,方式 1 为 65536us,方式 2 或方式 3 均为 256us。OSC7. 设单片机得 f12MHz,要求用 T0 定时 150 s,分别计算采用定时方式 0、定时方式 1 与定时方式 2 得定时初值。方式 0 得初值 1FCEH,方式 1 得初值 FF6AH,方式 2 得初值 6AH。五、编程题1、使用定时器从 P1、0 输出周期为 1 秒得方波,设系统时钟频率为 12MHz。查询方式:ORG0000H LJMPMAIN ORG0030HMAIN: MOVTMOD , #01H ;定时器 0,方式 1MOVTH0, #
39、3CH ;设置初值,定时 100ms MOVTL0, #0B0HMOVR2, #10;运行 10 次,定时 1S CLRP1、0CLR EA SETBTR0LOOP: JNBTF0, LOOPCLRTF0;清除标志MOVTH0, #3CH ;重置初值MOVTL0, #0B0HDJNZR2, LOOP MOVR2, #10CPLP1、0AJMPLOOP END2. 将定时器 T1 设置为外部事件计数器,要求每计 500 个脉冲,T1 转为定时方式,在 P1、2 输出一个脉宽 10ms 得正脉冲。设系统时钟频率为 12MHz。ORG0000H LJMPMAIN ORG0030HMAIN: MOVT
40、MOD,#50H;T1 方式 1,计数MOVTH1,#01H ;设置初值MOVTL1,#0F4HSETBTR1;启动计数,使用查询方式CLRP1、2CLR EA;查询方式LOOP: JNBTF1 , LOOPCLRTF1MOVTMOD,#10H;T1 方式 1,定时MOVTH1,#0D8H;设置初值MOVTL1,#0F0HSETBP1、2;输出正脉冲LOOP1: JNBTF1,LOOP1CLRTF1 LJMPMAIN ENDC 语言方式:#includesbit P1_0=P12;/已仿真调试成功int i;void main() while(1)TMOD=0x05;/T0 计数,方式一TH0
41、=(65536-500)/256;/计数TL0=(65536-500)%256;TR0=1;P1_0=0;while(!TF0);/等待计数溢出TF0=0;/溢出标志复位P1_0=1;TMOD=0x01;/T0 定时,方式一TH0=(65536-10000)/256;/定时 10ms TL0=(65536-10000)%256;TR0=1;/启动 T0while(!TF0); /等待定时时间溢出TF0=0;/溢出标志复位 P1_0=0;3. 已知 f12MHz,采用查询方式编写24 小时制得模拟电子钟程序,秒、OSC分钟、小时分别存放于 R2、R3、R4 中。ORG0000H LJMPMAIN
42、 ORG0030HMAIN: MOVTMOD , #01HMOVMOVTH0, #3CHTL0, #0B0HMOVR1, #20SETBTR0MOVR2 , #00H; 秒MOVR3 , #00H; 分MOVR4 , #00H; 时MOVLOOP: MOVA, #00HDPTR,#0300H;查 7 段码ADDA , R4DAAMOV40H , AANLA , #0F0HMOVCA,A+DPTRMOVP0 , A;送 P0 显示MOVP1 , #20H;位选LCALLDELAY20MSMOVA , 40HANLA , #0FHMOVCA,A+DPTRMOVP0 , A;送 P0 显示MOVP1
43、 , #10H;位选LCALLDELAY20MSADDA , R3DAAMOV30H , AANLA , #0F0HMOVC A,A+DPTR MOVP0 , AMOVP1 , #08H LCALL DELAY20MS MOVA , 30HANLA , #0FH MOVC A,A+DPTR MOVP0 , AMOVP1 , #04H LCALL DELAY20MS ADDA , R4 DAAMOV20H , AANLA , #0F0H MOVC A,A+DPTR MOVP0 , AMOVP1 , #02H; 送 P0 显示; 位选; 送 P0 显示; 位选; 送 P0 显示; 位选LCALL DELAY20MSMOVA , 20HANLA , #0FHMOVCA,A+DPTRMOVP0 , A;送 P0 显示MOVP1 , #01H;位选LCALLDELAY20MSJNBTF0, LOOP; 定时到MOVTH0, #3CHMOVTL0, #0B0HCLRTF0DJNZR1, LOOPMOVR1, #20INCR2CJNER2 , #60 , LOOPMOVR2 , #00HINCR3CJNER3 , #60 , LOOPMOVR3 , #00HINCR4CJNER4 , #24 , LOOPMOVR4 , #00HLJMPDELAY
限制150内