单片机第7章答案_第1页
单片机第7章答案_第2页
单片机第7章答案_第3页
单片机第7章答案_第4页
单片机第7章答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第 7 章章 思考题及习题思考题及习题 7 1如果采用的晶振的频率为 24MHz,定时器/计数器工作在方式 0、1、2 下,其最大定时时间各为多少? 答:晶振的频率为 24MHz, 机器周期为 0.5s。 方式 0 最大定时时间=0.5s213=0.5s8192=4096s 方式 1 最大定时时间=0.5s216=0.5s65536=327686s 方式 2 最大定时时间=0.5s28=0.5s256=128s 2定时器/计数器用作计数器模式时,对外界计数频率有何限制? 答:外部输入的计数脉冲的最高频率为系统振荡器频率的 1/24。 3定时器/计数器的工作方式 2 有什么特点?适用于哪些应用场合? 答:方式 2 为初值自动装入的 8 位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反 复装入计数初值影响定时精度的问题。适用于精确定时,比如波特率的产生。 4THx 与 TLx(x = 0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是 立即刷新还是等当前计数器计满后才能刷新? 答:THx 与 TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器 计满后才能刷新。答:THX 与 TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改, 更改后的新值是立即刷新。但在读 THX、TLX 的值时,应该先读 THX 值,后读 TLX,再读 THX。若两次读 得 THX 相同,则可确定读得的内容正确。若前后两次读得的 THX 有变化,再重复上述过程。 5Proteus 虚拟仿真虚拟仿真 使用定时器 T0,采用方式 2 定时,在 P1.0 脚输出周期为 400s,占空比为 4:1 的矩形脉冲,要求在 P1.0 脚接有虚拟示波器,观察 P1.0 脚输出的矩形脉冲波形。 答:略 6Proteus 虚拟仿真虚拟仿真 利用定时器 T1 的中断来使 P1.7 控制蜂鸣器发出 1kHz 的音频信号,假设系统时钟频率为 12MHz。 答:利用定时器 T1 的中断控制 P1.7 引脚输出频率为 1kHz 的方波音频信号,驱动蜂鸣器发声。系统时钟 为 12MHz。方波音频信号的周期为 1ms,因此 T1 的定时中断时间为 0.5 ms,进入中断服务程序后,对 P1.7 求反。电路如图所示。 图 控制蜂鸣器发出 1kHz 的音频信号 先计算 T1 初值,系统时钟为 12MHz,则方波的周期为 1s。1kHz 的音频信号周期为 1ms,要定时计数 的脉冲数为 a。则 T1 的初值: TH1=(65 536 a)/256; TL1=(65 536 a) %256 参考程序如下: #include /包含头文件 sbit sound=P17; /将 sound 位定义为 P1.7 引脚 #define f1(a) (65536-a)/256 /定义装入定时器高 8 位的时间常数 #define f2(a) (65536-a)%256 /定义装入定时器低 8 位的时间常数 unsigned int i = 500; unsigned int j = 0; void main(void) EA=1; /开总中断. ET1=1; /允许定时器 T1 中断 . TMOD=0 x10; /TMOD=0001 000B,使用 T1 的方式 1 定时 TH1=f1(i); /给定时器 T1 高 8 位赋初值. TL1=f2(i); /给定时器 T1 低 8 位赋初值. TR1=1; /启动定时器 T1 while(1) /循环等待 i=460; while(j2000) ; j=0; i=360; while(j 2000) ; j=0; void T1(void) interrupt 3 using 0 /定时器 T1 中断函数 TR1= 0; /关闭定时器 T1 sound=sound; /P1.7 输出求反 TH1=f1(i); /定时器 T1 的高 8 位重新赋初值. TL1=f2(i); /定时器 T1 的低 8 位重新赋初值. j+; TR1=1; /启动定时器 T1 7 Proteus 虚拟仿真虚拟仿真 制作一个 LED 数码管显示的秒表, 用 2 位数码管显示计时时间, 最小计时单位为“百毫秒”, 计时范围 0.1 9.9s。当第 1 次按下并松开计时功能键时,秒表开始计时并显示时间;第 2 次按下并松开计时功能键时,停止 计时,计算两次按下计时功能键的时间,并在数码管上显示;第 3 次按下计时功能键,秒表清 0,再按 1 次 计时功能键,重新开始计时。如果计时到 9.9s 时,将停止计时,按下计时功能键,秒表清零,再按下重新开 始计时。 答:答:本秒表应用了 AT89C51 的定时器工作模式,计时范围 0.19.9s。此外还涉及如何编写控制 LED 数 码管显示的程序。 LED 数码管显示的秒表原理电路如图所示。 图 LED 数码管显示的秒表原理电路及仿真 参考程序如下: #include /包含 51 单片机寄存器定义的头文件 unsigned char code discode1=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef; /数码管显示 09 的段码表, 带小数点 unsigned char code discode2=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /数码管显示 09 的段码表,不带小数点 unsigned char timer=0; /记录中断次数 unsigned char second; /储存秒 unsigned char key=0; /记录按键次数 main() /主函数 TMOD=0 x01; /定时器 T0 方式 1 定时 ET0=1; /允许定时器 T0 中断 EA=1; /总中断允许 second=0; /设初始值 P0=discode1second/10; /显示秒位 0 P2=discode2second%10; /显示 0.1s 位 0 while(1) /循环 if(P3 /按键次数加 1 switch(key) /根据按键次数分三种情况 case 1: /第一次按下为启动秒表计时 TH0=0 xee; /向 TH0 写入初值的高 8 位 TL0=0 x00; /向 TL0 写入初值的低 8 位,定时 5ms TR0=1; /启动定时器 T0 break; case 2: /按下两次暂定秒表 TR0=0; /关闭定时器 T0 break; case 3: /按下 3 次秒表清 0 key=0; /按键次数清 0 second=0; /秒表清 0 P0=discode1second/10; /显示秒位 0 P2=discode2second%10; /显示 0.1s 位 0 break; while(P3 /如果按键时间过长在此循环 void int_T0() interrupt 1 using 0 /定时器 T0 中断函数 TR0=0; /停止计时,执行以下操作(会带来计时误差) TH0=0 xee; /向 TH0 写入初值的高 8 位 TL0=0 x00; /向 TL0 写入初值的低 8 位,定时 5ms timer+; /记录中断次数 if (timer=20) /中断 20 次,共计时 20*5ms=100ms=0.1s timer=0; /中断次数清 0 second+; /加 0.1s P0=discode1second/10; /根据计时时间,即时显示秒位 P2=discode2second%10; /根据计时时间,即时显示 0.1s 位 if(second=99) /当计时到 9.9s 时 TR0=0; /停止计时 second=0; /秒数清 0 key=2; /按键数置 2,当再次按下按键时,key+,即 key=3,秒表清 0 复原 else /计时不到 9.9s 时 TR0=1; /启动定时器继续计时 8 Proteus 虚拟仿真虚拟仿真 制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间。显示格式为“时时:分分:秒秒”。 设有 4 个功能键 k1k4,功能如下: (1)k1进入时间修改。 (2)k2修改小时,按一下 k2,当前小时增 1。 (3)k3修改分钟,按一下 k3,当前分钟增 1。 (4)k4确认修改完成,电子钟按修改后的时间运行显示。 答:答:本题难点在于处理功能键 K1K4 的输入,由于每个功能键都具有相应的一种或多种功能,因此程 序中需要大量使用 dowhile 或 while循环结构,以检测是否有按键按下的具体功能。按键检测函数如下: void time_change() unsigned char keyvalue0=0,keyvalue1=0; keyvalue0=keyscan(); /检测是否有按键按下 if(keyvalue0) /如果有按键按下,继续检测 if(keyvalue0=1) /按键1,走时停止,开始判断更改值,直到按键4按下 while(key0) ; /防抖,直到按键松开时才进行下一步的操作 TR0=0; /控制走时的中断停止 do keyvalue1=keyscan();/检测按键按下 if(keyvalue1=2)/如果按键2按下,改变时间 while(key1);/防抖 if(hour23)/如果小时数小于23则加1 hour+; else/如果小时数为23,置位为0 hour=0; else if(keyvalue1=3)/如果按键3按下,改变分钟 while(key2);/防抖 if(minute59)/如果分钟数小于59则加1 minute+; else/如果分钟数为59,置位为0 minute=0; clock_write(); while(keyvalue1!=4);/重复对时间的修改直到按键4按下 while(key3=0);/防抖 TR0=1;/调整时间后重新开始走时 必须注意,程序设计中,小时、分钟、秒变量 hour、minute、second 必须置为全局变量,才能如上述函 数一样在各处函数中直接进行修改,如为局部变量,则上述形式的直接修改无效。 1602 液晶显示模块以及基于单片机定时器的时钟实现见教材的介绍,不再赘述。 LCD 时钟原理电路图如下图。程序执行后工作指示灯 D1 闪动一下,表示时钟开始运行。按下按键 K1 后,D1 停止闪烁,即时钟停止走时,时钟停在当前时刻;按下按键 K2 和 K3 后,可改变小时和分钟;按下 按键 K4 后,时钟从修改后的时间重新开始运行。 为加强 AT89C51 的驱动能力,原理图中加入作为上拉电阻的排电阻(CTRESPACK-7) ,即图中的 RP1。 图 LCD 电子钟电路原理电路图与仿真 一、填空题一、填空题 1. MCS-51 单片机中有 2 个 16 位的定时器/计数器。 2. 定时/计数器有( 4 )种工作方式,方式 2 的是一个 8 位自动重装初值 的定时/计数器。 3. 定时器/计数器 T0 可以工作于方式 0、1、2、3 。 4. 方式 0 为 13 位定时器/计数器。 5. 若系统晶振频率为 12MHz,则 T0 工作于定时方式 1 时最多可以定时 65536 s。 6. 若系统晶振频率为 6MHz,则定时器可以实现的最小定时时间为 2 s。 7. 欲对 300 个外部事件计数,可以选用定时器/计数器 T1 的方式 0 或方式 1 。 8. TMOD 中的 M1M0= 11 时,定时器工作于方式 3 。 9. MCS-51 单片机工作于定时状态时,计数脉冲来自 单片机内部的机器周期 。 10. MCS-51 单片机工作于计数状态时,计数脉冲来自 单片机外部事件 。 11. 当 GATE=0 时, 则当软件控制位 TR01 时 启动 T0 开始工作。 12. MCS-51 单片机有两个定时器/计数器,即定时器/计数器 0 和 1,简称为 T0 和 T1 。 13. T0 和 T1 都具有 定时 和 计数 的功能,可以通过特殊功能寄存器来选择。 14. 寄存器 TMOD 的 C/T 位又称为 工作模式选择位 ,可以选择定时功能或者计数功能。 15. 中断控制寄存器 TCON 包含三个部分, TF1 和 TR1 位用于控制 T1, TF0 和 TR0 位用于控制 T0,其余的 4 位为 定时中断控制位 。 16. 定时/记数器的工作方式由寄存器 TMOD 决定,中断请求标志由寄存器 TCON 控制。 17. 外部中断 0 的中断入口地址为 0003H ,定时/记数器 T1 的中断入口地址为 001BH 。 18. 定时/计数器 T0 工作在方式 2 的定时状态, 已知晶振周期为 12MHZ, 定时时间为 250us, 计数初值为 6 , 如果定时时间为 256us,则计数初值为 0 19. 当 AT89S51 单片机的定时/计数器设置为计数方式时,外部事件的最高计数频率为振荡频率的 1/24 。 20. 设 MCS-51 单片机晶振频率为 12MHz,定时器作计数器使用时,其最高的输入计数频率应为_0.5MHz 21. 若单片机的时钟频率为 8MHz,则时钟周期为 ,机器周期 TM= 。 0.125us 1. 5us 22. 若要利用定时器 T1 产生串行通信的波特率,则 T1 工作在方式 2 下。 23. 当定时器 T0 发生中断时,程序将自动跳到_0BH _地址去执行。 24. 当定时/计数器 T0 工作在方式 3 时,T0 被拆分为 2 个独立的 8 位计数器。 二、选择题二、选择题 1. T1 不可以工作如下那个模式( D ) 。 A工作模式 0 B工作模式 1 C工作模式 2 D工作模式 3 2. 以下哪个寄存器可以位寻址( B ) 。 ATMOD BTCON CTH0 DTL0 3. 以下哪个工作模式为 16 位计数器方式( B ) 。 A工作模式 0 B工作模式 1 C工作模式 2 D工作模式 3 4. 51 系列单片机最多可以使用( B )个定时器/计数器。 A2 B3 C1 D4 5. 判断下列的说法是否正确? (1) 特殊功能寄存器 SCON,与定时器/计数器的控制无关。 (对) (2) 特殊功能寄存器 TCON,与定时器/计数器的控制无关。 (错) (3) 特殊功能寄存器 IE,与定时器/计数器的控制无关。 (错) (4) 特殊功能寄存器 TMOD,与定时器/计数器的控制无关。 (错) 6. MCS-51 单片机定时器工作方式 0 是( C )工作方式。 A)8 位 B)8 位自动重装 C)13 位 D)16 位 7. 8051 单片机的定时器 T1 用作定时方式时是 。B A由内部时钟频率定时,一个时钟周期加 1 B由内部时钟频率定时,一个机器周期加 1 C由外部时钟频率定时,一个时钟周期加 1 D由外部时钟频率定时,一个机器周期加 1 8. 8051 单片机的定时器 T0 用作计数方式时是 。C A由内部时钟频率定时,一个时钟周期加 1 B由内部时钟频率定时,一个机器周期加 1 C由外部计数脉冲计数,下降沿加 1 D由外部计数脉冲计数,一个机器周期加 1 9. 51 单片机的定时器 T1 用作计数方式时计数脉冲是 。A A外部计数脉冲由 T1(P3.5)输入 B外部计数脉冲由内部时钟频率提供 C外部计数脉冲由 T0(P3.4)输入 D由外部计数脉冲计数 10. 8031 单片机的定时器 T0 用作定时方式时是 。D A由内部时钟频率定时,一个时钟周期加 1 B由外部计数脉冲计数,一个机器周期加 1 C外部定时脉冲由 T0(P3.4)输入定时 D由内部时钟频率计数,一个机器周期加 1 11. 51 单片机的机器周期为 2s,则其晶振频率 fosc 为 MHz。 A1 B2 C6 D12 12. 定时器 T1 作定时模式,用方式 1,则工作方式控制字为 。C A01H B05H C10H D50H 13. 定时器 T1 作计数模式,用方式 2,则工作方式控制字为 。A A60H B02H C06H D20H 14. 定时器 T1 作定时模式,用方式 2,则工作方式控制字为 。D A60H B02H C06H D20H 15. 21.用定时器 T0 作计数模式,用方式 1(16 位) ,则工作方式控制字为 。D A01H B02H C04H D05H 16. 22.用定时器 T0 作定时模式,用方式 2,则工作方式控制字为 。B A01H B02H C04H D05H 17. 启动定时器 0 开始计数的指令是使 TCON 的 。B ATF0 位置 1 BTR0 位置 1 CTR0 位置 0 DTR1 位置 0 18. 启动定时器 1 开始定时的指令是 。B ATF1 位置 1 BTR1 位置 1 CTR0 位置 0 DTR1 位置 0 19. 使定时器 T0 停止计数的指令是 。A ATF0 位置 1 BTR0 位置 1 CTR0 位置 0 DTR1 位置 0 20. 使定时器 T1 停止定时的指令是 。B ATF1 位置 1 BTR1 位置 0 CTR0 位置 0 DTR1 位置 1 21. 当 CPU 响应定时器 T1 的中断请求后,程序计数器 PC 的内容是 。D A0003H B000BH C00013H D001BH 22. 用定时器 T1 方式 1 计数,要求每计满 10 次产生溢出标志,则 TH1、TL1 的初始值是 A 。 AFFH、F6H BF6H、F6H CF0H 、F0H DFFH、F0H 23. 用定时器 T1 方式 2 计数,要求每计满 100 次,向 CPU 发出中断请求,TH1、TL1 的初始值是 。A A9CH B20H C64H DA0H 24. 单片机定时器溢出标志是 。D ATR1 和 TR0 BIE1 和 IE0 CIT1 和 IT0 DTF1 和 TF0 25. 51 单片机定时器外部中断 1 和外部中断 0 的触发方式选择位是 。C ATR1 和 TR0 BIE1 和 IE0 CIT1 和 IT0 DTF1 和 TF0 26. 定时器 T1 的溢出标志 TF1,若计满数产生溢出时,如不用中断方式而用查询方式,则应 。B A由硬件清零 B由软件清零 C由软件置于 D可不处理 27. 定时器 T0 的溢出标志 TF0,若计满数产生溢出时,其值为 。C A00H BFFH C1 D计数值 28. 定时器 T0 的溢出标志 TF0,若计满数在 CPU 响应中断后 。A A由硬件清零 B由软件清零 CA 和 B 都可以 D随机状态 29. 单片机计数初值的计算中,若设最大计数值为 M,对于方式 1 下的 M 值为 D 。 AM= 13 2=8192 BM= 8 2=256 CM= 4 2=16 DM= 16 2=65536 30. 对定时器控制寄存器 TCON 中的 IT1 和 IT0 位清 0 后,则外部中断请求信号方式为 A 。 A低电平有效 B高电平有效 C脉冲上跳沿有效 D脉冲后沿负跳有效 31. 51 单片机定时器内部结构由 组成。A、B、D、E、 ATCON BTMOD C计数器 DT0 ET1 32. 51 单片机控制寄存器 TCON 的作用是 ABCE 等。 A定时/计数器的启、停控制 B定时器的溢出标志 C外部中断请求标志 D确定中断优先级 E选择外部中断触发方式 33. 定时器 T0 作定时用,采用方式 1,编程时需有下列步骤 ACDE 。 ATMOD 初始化 B选择电平触发还是边沿触发 C置入计数初值 D启动定时器 E串行计数是否溢出及转移 34. 定时器 T1 作定时模式,用方式 2,则初始化编程为 BD 。 A置 TMOD 为 05H B置 TMOD 为 60H C置 TMOD 为 02H D置 TH0、TL0 相同初值,以后不须重新置数 E置 TH0、TL0 相同初值,以后须重新置数 35. 在下列寄存器中,与定时/计数控制无关的是( C ) (A)TCON(定时控制寄存器) (B)TMOD(工作方式控制寄存器) (C)SCON(串行控制寄存器)(串行控制寄存器) (D)IE(中断允许控制寄存器) 36. 定时工作方式 1 和方式 0 比较,定时工作方式 2 不具备的特点是( B ) (A)计数溢出后能自动重新加载计数初值 (B)增加计数器位数)增加计数器位数 (C)提高定时精度 (D)适于循环定时和循环计数应用 37. 振荡频率为 12 MHz,定时器在工作方式 1 下最大定时时间为 A.8.192ms B. 65.536 ms C. 0.256ms D.16.384ms 答案:9.B 38. 当 8051 单片机系统的振荡晶体频率为 3MHz 时,其一个机器周期的时间是 D 。 (A) 0.5S (B) 1S (C) 2S (D)4S 39. 下列特殊功能寄存器中可以位寻址的是 A 。 (A)TCON(88H) (B) DPL(82H) (C) TH0(8CH) (D)SBUF(99H) 40. 定时/计数器 T1 的工作方式 2 为( A )位工作方式。 A、8 B、10 C、13 D、16 41. 当单片机的振荡频率为 12MHz 时,则定时器每计一个内部脉冲的时间为( A ) 。 A、1s B、2s C、3s D、4s 42. 定时/计数器 T0 工作在门控方式时,其门控信号由( A )引脚输入。 A、INT0 B、INT1 C、T0 D、T1 43. 中断控制与哪些寄存器有关( D ) 。 A、TCON,SCON,PSW,SP B、TCON,SCON,IE,SP C、TCON,SCON,PSW,IP D、TCON,SCON,IE,IP 三、简答题三、简答题 1. 定时器作定时和计数时其计数脉冲分别由谁提供?定时器作定时和计数时其计数脉冲分别由谁提供? 答:作定时器时计数脉冲由片内振荡器输出经12分频后的脉冲提供,作计数时计数脉冲由外部信号通过 引脚 P3.4和 P3.5提供。 2. 一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时? 答:方式一,在第一个定时器的中断服务程序里关闭本定时器的中断程序,设置和打开另一个定时器; 在另一个定时器的中断服务程序中关闭本定时中断,设置和打开另一个定时器。这种方式的定时时间为两个 定时器定时时间的和。 方式二,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由 P1.0 接 INT0 产生) ,另一个定 时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。 3. 当定时器 T0 用于方式 3 时,应该如何控制定时器 T1 的启动和关闭? 答:由 T1(P3.5)口控制定时器 T1 的启动和关闭。 4. 定时器/计数器测量某正单脉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论