当前位置:首页 > 单片机每章习题及答案
频率高于( )MHZ的外部事件是不能正确计数的。
8. 在定时/计数器T0工作方式3下,TH0溢出时,( )标志将被硬件置1去请求中断。
9. T0和T1两引脚也可作为外部中断输入引脚,这时TMOD寄存器中的位应当为( ),若M0、M1两位置成10B,则计数初值应当是:TH=TL=( )。 TC
10. 欲使T1停止工作,应执行一条指令( ),在工作方式3下,欲使TH0开
始工作,应执行一条指令( )。 填空题参考答案:
1、2,4。2、65536,1 。3、13, 5,8。4、TR1,TF1。5、TL0,TH0
6、自动重装载。 7、0.5。8、TF1。9、1,0FFH(或255)。10、CLR TR1,SETB TR1 二、单项选择题
1. 下面哪一种工作方式仅适用于定时器T0( )。 (A)方式0 (B) 方式1 (C) 方式2 (D)方式3
2. 若系统晶振频率是12MHZ,利用定时/计数器1定时1ms,在方式0下的定时初值为( )。
(A) TH1=0E0H, TL1=18H (B) TH1=18H, TL1=E0H (C) TH1=1CH, TL1=18H (D) TH1=18H, TL1=1CH
3. 若MCS-51单片机的晶振频率为24MHz,则其内部的定时/计数器利用计数器对外部输入脉冲的最高计数频率是( )。 (A) 1MHz (B) 6MHz (C) 12MHz (D) 24MHz
4. 设定时/计数器T1的工作于外部控制方式,则只有在( )情况下,T1才开始工作。
(A) TR1=0,INT1=0 (B) TR1=1,INT1=0 (C) TR1=0,INT1=1 (D)TR1=1,INT1=1
5. 设定时/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位( )决定。 (A) GATE (B) INT0 (C) TR0 (D) TR1 选择题参考答案: 1. D 2. A 3.A 4.D 5.D 三、简答题
1. 8051定时器做定时和计数时,其计数脉冲分别由谁提供? 答:做定时器时,计数脉冲由8051片内振荡器输出经12分频后的
脉冲提供,做计数器时,计数脉冲由外部信号通过引脚P3.4和P3.5提供。
2. 8051定时器的门控信号GATE设置为1时定时器如何启动? 答:只有外部中断输入引脚(或)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。0INT1INT
3. 当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的运行?
答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过选定工作
方式及写入计数初值后,T1就开始工作,主要用于产生串行通信的波特率。
4. 请设计读定时/计数器的子程序
答:在定时/计数器工作过程中,经常需要读出定时/计数器的数值,假设读取定时/计数器T0的数值,并要求将读得的TH0和TL0的数值分别送入R0,R1中保存,则设计子程序如下: READ: MOV A, TH0 ;读TH0内容 MOV R1,TL0 ;读TL0内容,送入R1
CJNE A, TH0,READ ;再读TH0内容,与上次读 值相比较,如不相等,转去重读 MOV R0,TH0 ;如果相等,送入R0 RET
说明:该程序对TH0读取了两次,也就是采用了先读TH0,后读TL0,再读TH0的方法,这样做的目的是为了防止错读,因为不能在同一时刻同时读取TH0和TL0,而且在读取的过程中定时/计数器的工作没有停止,计数值是一直在变化的,如果在读取的过程中刚好有TL0溢出向TH0进位,则容易错读,重读TH0就可防止错误。
5. 已知8051单片机的系统振荡频率为6MHz,利用定时器使P1.0每隔500us输出一个50us的正脉冲。
答:(1) 选择定时器及其工作方式:因为要重复输出脉冲,因此选择定时器T0工作于方式2
(2) 计算初值:机器周期Tm=12×1/(6×106)s=2us,则500us定时的定时初值X=最大计数值-(定时时间t/机器周期Tm)=28-(500/2)=6,所以TH0=TL0=06H,而50us定时的定时初值X=最大计数值-(定时时间t/机器周期Tm)=28-(50/2)=231,所以TH0=TL0=0E7H (3) 确定
GATE
TC
M1
M0
GATE TC
控制字: TMOD 0
0
0
0
0
MOV R0, #14H ;重赋50ms的循环次数 SETB P1.0 ;发秒脉冲 0 NOP 1
0
SETB TR0 ;启动定时器T0开始工作
TM1: JBC TF0, LOOP ;查询定时时间到否? SJMP TM1 ;等待
LOOP: SETB P1.0 ;P1.0输出高电平 MOV TH0, #0E7H ;设置50us定时初值 MOV TL0, #0E7H
TM2: JBC TF0, NEXT ;查询定时时间到否? SJMP TM2 ;等待
6. 8051晶振频率为12MHz,试用中断方法,设计秒、分定时器,分别由P1.0,P1.1发出脉冲信号。
答:(1) 选择定时器及其工作方式:因为晶振频率为12MHz时,方式1最长定时时间是65536us,所以以定时时间为50ms作为单位,由程序循环20次实现1秒定时,再以此为单位,由程序循环60次实现1分钟定时。
(2) 计算初值:机器周期Tm=12×1/(12×106)s=1us,则50ms定时的定时初值X=最大计数值-(定时时间t/机器周期Tm)=216-(50000/1)=15536=3CB0H,所以TH0=3CH,TL0=0B0H (3) GATC
M1
M0
GATC
M1
M0
确TE
TE
定控制字: TMOD 0
0
0
0
0
0
0
1
MOV TL0, #0B0H
MOV IE, #82H ;CPU开中断,T0开中断 SETB TR0 ;启动T0
HERE: SJMP HERE ;循环等待定时时间到 ORG 0200H ;中断服务程序入口地址 AA: MOV TL0, #B0H ;重赋初值 MOV TH0, #3CH
DJNZ R0, LOOP ;不到1s继续循环
CLR P1.0
DJNZ R1, LOOP ;不到1分钟继续循环 MOV R1, #3CH ;重赋1秒的循环次数 SETB P1.1 ;发分脉冲 NOP CLR P1.1
LOOP: RETI ;中断返回
7. 若8051晶振频率为6MHz,用定时器/计数器T1对外部事件进行计数,每计数5000个脉冲后,定时器/计数器T1转为定时方式,定时5ms后,又转为计数方式,如此不断循环,请编写程序。
答:(1) 设定T1分别工作于定时和计数工作方式1
(2) 计算初值:机器周期Tm=12×1/(6×106)s=2us,则50ms定时的定时初值X=最大计数值-(定时时间t/机器周期Tm)=216-(5000/2)=63036=0F63CH,所以定时初值TH0=0F6H,TL0=3CH,而计数5000次的计数初值X=最大计数值-计数值=216-5000=15536=3CB0H,所以计数初值TH0=3CH,TL0=0B0H (3) GATC
M1
M0
GATC
M1
M0
确TE
TE
定控制字: TM
OD 0
0
0
1
0
0
0
0
L1: MOV TMOD,#50H ;设置T1为计数方式且工作于方式1
MOV TH1,#3CH ;设置计数初值 MOV TL1,#0B0H SETB TR1 ;启动T1计数器
LOOP1:JBC TF1,LOOP2 ;查询计数溢出?有溢出转去定时 SJMP LOOP1 ;无溢出,继续查询 LOOP2:CLR TR1 ;关闭T1
MOV TMOD,#10H ;设置T1为定时方式且工作于方式1 MOV TH0,#0F6H ;设置初值 MOV TL0,#3CH SETB TR1 ;启动T1定时
LOOP3:JBC TF1,L1 ;查询定时时间到,转去计数 SJMP LOOP3 ;定时时间未到,继续查询
8. 设MCS-51单片机系统的晶振频率为12MHz,编程测试外部脉冲输入引脚(P3.2)上输入的正脉冲宽度(设正脉冲宽度小于65ms),并将测量数值以us为单位存放入R1,R2中。0INT 答:当 GATE=l时,T0的工作不仅由TR0控制,也要受引脚电平控制,只有当TR0为1且输入为高电平时,定时器T0才启动,利用这个功能,可以测试外部脉冲输入引脚上输入的正脉冲宽度。0INT 0INT 0INT
(1) 选择定时器及其工作方式:选择定时器T0工作于方式1定时 (2) 计算初值:机器周期Tm=12×1/(12×106)s=1us,将TL0和TH0的初值都定义为00H,则它们的读数就是所要测试的以us为单位的定时时间。 (3) GATC M1 M0 GA
TC M1 M0
确TE
TE
定控制字: TMOD 0
0
0
0
1
0
0
1
HR3:JB P3.2,HR3 ;计数进行中等待引脚再次变低0INT CLR TR0 ;当引脚为低电平时,停止定时器T0 MOV R1, TL0 ;输出定时时间的低8位0INT
MOV R2, TH0 ;输出定时时间的高8位
9. 有一生产流水线,流水线上通过的工件经光电转换电路产生计
数脉冲,脉冲整形后送入T0端,要求每生产100个工件,向P1.0
(3) GATC M1 M0 GATC M1 M0
确TE
TE
定控制字: TMOD 0
0 0 0 0 1 1 0
发出一包装命令正脉冲,包装成一箱,请编写控制程序。 答:(1) 选择定时器及其工作方式:选择定时器T0工作于方式2计数
(2) 计算初值:计数初值X=最大计数值-计数值=28-100=9CH,所以TH0=TL0=9CH
9-1 在单片机系统为什么要进行I/O接口扩展?I/O接
口应具有那些基本功能?
答:MCS-51系列单片机内部有四个8位I/O口,但是外部扩展了RAM、ROM以后,可供外部设备输入、输出信息使用的只有P1口了。当连接外部设备I/O接口不够时,需要进行I/O口线扩展。
I/O接口应具有的功能:地址译码和I/O设备选择功能、输入与输出功能、信息电平转换功能、联络功能和可编程功能。
9-2 8255A有哪几种工作方式?分别是什么?端口A、B、C的特点有哪些?
答:8255A有3种工作方式。它们分别是:方式0(基本输入/输出方式), 方式1(选通输入/输出方式)和方式2(双向数据传送方式,仅适用于A口)。
端口A、B、C的特点:A口:具有一个8位数据输入锁存器和一个8位数据输出锁存/缓冲器,可工作于方式0,方式1或方式2。它总是作为数据输入/输出端口。 B口:具有一个8位数据输入缓冲器和一个8位数据输出锁存/缓冲器,可工作于方式0或方式1。它总是作为数据输入/输出端口。
C口:具有一个8位数据输入缓冲器(不锁存)和一个8位数据输出锁存/缓冲器,C口可作为基本的数据输入/输出端口,有时也作为控制信号和状态信号的输入/输出端口。
9-3 为什么说8255A各端口的输入/输出状态可构成16种组合?
答:在方式0时,C口可以分成上半口和C口下半口单独设定为输入口或输出口,这样A口、B口和C口实际
上可作为4个口使用,故4个端口的输入/输出状态可构成=16种组合。42
9-5 设将8255A置为基本输入/输出方式,A口、C口输出,B口输入,试确定8255A的工作方式控制字寄存器的内容。
答:控制字内容为:82H。
9-6 若将8255A的PC7置为高电平,向按位操作控制字写入的内容是什么?
答:按位操作控制字内容可为:0FH
9-7 原教材图9-8所示为8031与8255A的接口电路,试编写一段程序将8255A初始化为基本输入输出方式,A口、B口输出,C口输入,并从C口读入一个数据,从A口、B口输出一个数据。
解:8255A各I/O口和控制字寄存器的地址为:
A口:7FFCH;B口:7FFDH;C口:7FFEH;控制字寄存器: 7FFFH 程序:
MOV DPTR, #7FFFH ;置控制字的地址 MOV A, #89H ;置控制字的内容 MOVX @DPTR, A ? ?
MOV DPTR, #7FFEH ;置C口的地址
MOVX A, @DPTR ;将C口数据读入累加器A ? ?
MOV DPTR, #7FFCH ;置A口的地址 MOV A, #DATA1
MOVX @DPTR, A ;从A口读出数据DATA1 ? ?
MOV DPTR, #7FFDH ;置B口的地址 MOV A, #DATA2
MOVX @DPTR, A ;从B口读出数据DATA2
9-8 8031与8255A接口电路如原教材图9-8,试编写程序将8255A的PC7清0。
解:8255A的各I/O口和控制字寄存器的地址为: A口:7FFCH;B口:7FFDH;C口:7FFEH;控制字寄存器: 7FFFH
由题意知,C口应置为输出口,故程序如下: MOV DPTR, #7FFFH ;置控制字的地址 MOV A, #0EH ;置控制字的内容,PC7清0 MOVX @DPTR, A
9-9 8155内部有那些功能部件?如何寻址这些部件? 答:8155内部有两个8位并行I/O端口(A口和B口),一个6位并行输入/输出端口(C口),一个256字节的静态RAM以及一个14位“减1”计数器。 在片选信号为0(有效)的情况下,当控制信号=0时8155的地址信息CPU寻址内部数据存储器,而当=1时8155地址信息CPU寻址I/O口、命令/状态寄存器以及计数器单元。CEMIO/MIO/
9-11 设将8155置为基本输入/输出方式,A口、B口输出,C口输入,试确定8155的工作方式控制字寄存器的内容。
答:工作方式控制字的内容为C3H。 9-12 在单片机系统中,非编码键盘有哪几种形式?各有什么特点?
答:非编码键盘可以分为两种结构形式:独立式按键和行列式按键。
独立式按键是各按键相互独立地接通一条输入数据线,电路结构和处理程序简单,缺点是当按键数较多时,要占用较多的I/O口线。
行列式按键将I/O口线分作行线与列线两部分,行线与列线交叉处通过按键来连通,这种结构只需要N条行线和M条列线即可组成具有N×M个按键的键盘,适应于键数较多的场合。
9-13 8031与键盘、数码管显示电路接口电路如原教材图9-25所示,试编写程序,将键入的数字(0~F)显示在6位数码管显示器上(左进右出,逐位右移)。 解:新键入数字在数码管最左位显示,已键入数字则在数码管上顺序右移。 主程序:
MAIN: MOV R0, #79H ;键入键码缓冲区79H~7E置初值00H
MOV R7, #06H ;79H内容显示在最右边LED上 LOOP1: MOV @R0,#00H INC R0
DJNZ R7, LOOP1
MOV DPTR, #7F00H ;8155命令/状态寄存器地址 MOV A, #03H ;基本I/O方式,A、B出,C入, MOVX @DPTR, A
LK1: ACALL KEYCLOSE ;调用:有无按键判别子程序
JZ LK1 ;无键闭合,继续等待
ACALL TIM ;调用延时子程序,消除键盘抖动 ACALL TIM
ACALL KEYCLOSE ;调用:有无按键判别子程序 JZ LK1 ;无键闭合,(A)=0,返回LK1
LK: ACALL KEYCODE ;调用按键识别子程序,结果存A
MOV R0, #7EH ;新键入的键号存入缓冲区 MOV R7, #06H ;原有数据右移 LOOP2: XCH A, @R0 DEC R0
DJNZ R7, LOOP2
ACALL DIR ;调用显示子程序 AJMP LK1 显示子程序:
DIR: MOV R0, #79H ;置显示缓冲区首地址
共分享92篇相关文档