北工大单片机期末复习题A4一纸开概要.docx
- 文档编号:11517369
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:50
- 大小:333.73KB
北工大单片机期末复习题A4一纸开概要.docx
《北工大单片机期末复习题A4一纸开概要.docx》由会员分享,可在线阅读,更多相关《北工大单片机期末复习题A4一纸开概要.docx(50页珍藏版)》请在冰豆网上搜索。
北工大单片机期末复习题A4一纸开概要
第10章串行接口技术
1.8051有一个全双工的串行口,下列功能中该串行口不能完成的是( D )。
(A)网络通信;(B)异步串行通信;(C)作为同步移位寄存器;(D)位地址寄存器。
2.判断下列说法是否正确:
答:
(A)串行口通讯的第9数据位的功能可由用户定义。
(对)
(B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。
(对)
(C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。
(错)
(D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。
(对)
(E)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。
(对)
3.串行口有几种工作方式?
有几种帧格式?
各种工作方式的波特率如何确定?
答:
串行口有3种工作方式:
方式0、方式1、方式2、方式3;有3种帧格式:
方式0为8位数据,方式1为8位数据、起始位、终止位,方式2和3具有相同的帧格式,为9位数据、起始位、终止位;方式0的发送和接收都以fosc/12为固定波特率,方式2的波特率=2^SMOD/64×fosc,方式1和方式3的波特率=2^SMOD/32×定时器T1的溢出率,T1的溢出率=(256-X)*12/fosc
4.为什么定时器/计数器T1用做串行口波特率发生器时,采用方式2?
若已知时钟频率、通讯波特率,如何计算其初值?
答:
因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了重装参数的操作。
定时器1在工作方式2时的初始值为X=256-[(SMOD+1)/(384*波特率)]*fosc
5.为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位
(1)?
答:
因为串行口的方式0是同步移位寄存器方式,不是用于异步串行通讯的,所以收发双方不需要确定数据帧的起始和终止,所以没有起始位(0)和停止位
(1)。
6.常用波特率及其参数选择 Fosc(MHZ) SMOD TH1初值
1920011.05921FDH
96000 FDH
48000FAH
24000F4H
12000E8H
例题7.单片机主频6MHz,波特率4800bps要把发送端的30H—3FH发送到接收端的40H—4FH。
写出初始化程序,接发程序,并写出设计过程:
方式1,3X=256-Fosc*(SMOD+1)/(384*波特率)
=256-6M*1/(384*4800)=251.6=FCH
发送端:
ORG0000H
AJMPMAIN_A
ORG0023H
AJMPSEND
ORG0100H
MAIN_A:
MOVTMOD,#20H
MOVTH1,#0FCH
MOVTL1,#0FCH
SETBTR1
MOVSCON,#0C0H
设置串口工作方式3
MOVPCON,#00H
波特率不加倍
MOVR0,#30H
MOVR2,#10H
SETBEA
SETBES
MOVA,@R0
MOVC,P
MOVTB8,C
奇偶校验
MOVSBUF,A
SJMP$
---------------
ORG0200H
SEND:
CLRTI
DJNZR2,SEND1
SJMPFH
SEND1:
INCR0
MOVA,@R0
MOVC,P
MOVTB8,C
MOVSBUF,A
FH:
RETI
---------------
END
接受端:
ORG0000H
AJMPMAIN_B
---------------
ORG0023H
AJMPRECV
---------------
ORG0100H
MAIN_B:
MOVTMOD,#20H
MOVTH1,#0FCH
MOVTL1,#0FCH
SETBTR1
MOVSCON,#0C0H
MOVPCON,#00H
MOVR0,#40H
MOVR2,#10H
SETBREN
SETBEA
SETBES
SJMP$
---------------
ORG0200H
RECV:
CLRRI
MOVA,SBUF
JNBPSW.0,PZ
JNBRB8,ERR
SJMPRIGHT
PZ:
JBRB8,ERR
RIGHT:
MOV@R0,A
INCR0
DJNZR2,FH
CLRF0
FH:
RETI
---------------
ERR:
CLRREN
CLRES
CLREA
SETBF0
RETI
---------------
END
----------------------------------------------------------------------------------------------------------------------
第9章D/A转换和A/D转换
例题1.用DAC0832作为波形发生器,请编制出连续梯形的程序,设0832的口地址为C004H.
ORGO100H
MAIN:
MOVDPTR,#0C004
CLRA
LOOP1:
MOVX,@DPTR,A
LCALLDELAY
INCA
CJNEA,#OFFH,LOOP1;
MOVR2,#00H
LOOP2:
MOVX,@DPTR,A
LCALLDELAY
INCR2
CJNER2,#OFFH,LOOP2;
LOOP3:
MOVX,@DPTR,A
LCALLDELAY
DECA
CJNEA,#00H,LOOP3;
MOVR2,#00H
LOOP4:
MOVX,@DPTR,A
LCALLDELAY
INCR2
CJNER2,#OFFH,LOOP4;
SJMPLOOP1
DELAY:
MOVR3,#XX1
DEL1:
MOVR4,#XX2
DEL2:
MOVR5,#XX3
DEL3:
DJNZR5,DEL3
DJNZR4,DEL2
DJNZR3,DEL1
RET
END
----------------------------------------------------------------------------------------------------------------------
例题2.若要求设计一数据采集系统,输入为0-5V,由IN1输入,使用AD0809芯片每隔20ms采集一次,共采集16次,并将转换后的数据存入30H开始的单元中。
(1)设计有关电路图,含A/D,译码及相关电路,接线清楚,写明信号名称;
(2)编制有关程序,设AD起始口地址为学号最后2位X8,地址译码使用A9-A3系统时钟为12MHZ(提示:
使用定时器定时中断,并写明定时器参数计算过程;
修改上图中的p2.0用A3到A9译码,产生地址:
24x8,24=0011000A3-A5接ABC,A9-A6产生0011逻辑选中译码器。
x=216-t×fosc/12=2^16-20X12X1000/12=45536=B1E0H
ORG0000H
AJMPMAIN
ORG001BH
AJMPT_1
MAIN:
MOVR4,#10H
MOVR1,#30H
MOVSP,#60H
MOVTOMD,#10H
MOVTH1,#0B1H
MOVTL1,#0E0H
20ms定时
SETBEA
SETBET1开中断允许
SETBTR1
MOVDPTR,#XX+1
MOVA,#00H
MOVX@DPTR,A;启动转换
SJMP$
------------
T_1:
DJNZR4LP1
SJMPEXIT
LP1:
CLRTR1
MOVDPTR,#XX+1
MOVXA,@DPTR
MOV@R1,A
INCR1
MOVTH1,#0B1H
MOVTL1,#0E0H
SETBTR1;启动20ms定时
SJMPOUT_1
EXIT:
CLREA关中断允许
OUT_1:
。
RETI
END
第8章LED显示器和键盘
键盘的按键按M×N行列矩阵排列,故M×N个键的键盘只需要M+N条单片机的I/O端口线。
4×8行列式非编码键盘的接口如下页所示:
监视键盘方法——行扫描法和反转法
CPU通过程序监视非编码盘,在发现有按键按下时转入相应按键处理程序执行。
地址偏移量N=行首值+列值,查键值表就可得被按键的键值
1.行扫描法
1)判断有无按键
令列输出(PA口)全为零,读行值(PC口),若行值低4位为全1,无按键。
否则有按键。
2)判断哪一个键按下
轮流扫描PA口,依次使每条列线变为低电平后,读行值,若非全1,则按键在此列中,形成键值;否则扫描下一列。
由此,可确定按键的行首键号和列值,进而求得键值偏移量。
按键类型判别:
若被按键的键值<10H,被按键为数字键;
若被按键的键值>=10H,被按键为功能键。
2.反转法
1)设定PA为输出方式,PC为输入方式。
2)使PA输出全0,读PC。
(PC=1101)
3)设定PA为输入方式,PC为输出方式
4)将刚才读入的PC内容从PC输出。
(PC=1101)
5)读PA。
(PA=11111011)
6)由PA、PC得到键值。
共阴极(1亮0不亮);共阳极(0亮1不亮)
例题1.用8155对共阴LED显示块进行控制,假设要显示:
2012,1字样,写出对应字型码,画流程图8155口地址是9000H。
(图形:
8155a口输出数据c口输出六个控制位)
共阳0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H[8-F]80H,90H,88H,83H,0c6H,0a1H,86H,8eH
共阴3FH,06H,5BH,4FH,66H,6DH,7DH,07H[8-F]7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
ORG1000H
ORG0079H:
显示的数据段
DB02H,00H,01H,02H,11H,02H
ORG1000H
DIS:
MOVA,#00000011B
MOVDPTR,#9000H
MOVX@DPTR,A
LP1:
MOVR0,#79H
MOVR3,#0FEH
DIS0:
MOVDPTR,#9003H
MOVA#0FFH
MOVX@DPTR,A
MOVDPTR,#9003H
MOVA,@R0
ADDA,#0CH
MOVCA,@A+PC
MOVX@DPTR,A
MOVA,R3
MOVDPTR,#9001H
MOVX@DPTR,A
ACALLDELAY
MOVA,R3
JNBACC.5,LP1
RLA
MOVR3,A
INCR0
SJMPDIS0
DIS_RET:
RET;
-------------------------------
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,80H(小数点)
;-----------------------------------
DELAY:
MOVR7,#02H
MOVR6,#0FFH
DJNZR6,$
DJNZR7,$-4
RET
;------------------------------
END
例题2.用8155对键盘进行控制。
键盘的布局如图,请根据电路图,可写16个键盘的编码,若按键为A,则转打印程序PRINT,画出键盘扫描的程序流程图。
键值
键名
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
键值
12
8
4
0
13
9
5
1
14
10
6
2
15
11
7
3
键盘位置图
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
键盘扫描程序:
R4列号R2扫描码
MAIN:
ACALLKEY
SUBBA,06H
JZPRINT
SJMPMAIN
ORG0100H
KEY:
ACALLKS
JNZKEY_1
ACALLDELAY
AJMPKEY
KEY_1:
ACALLDELAY
ACALLDELAY
ACALLKS
JNZKEY_2
AJMPKEY
KEY_2:
MOVR2,#11111110B
MOVR4,#00H
KEY_3:
MOVDPTR,#0FF21H
MOVA,R2
MOVX@DPTR,A
INCDPTR
MOVXA,@DPTR
CPLA
JZNEXT
JNBACC.0KEY_4
MOVA,#00H
AJMPKEY_7
KEY_4:
JNBACC.1,KEY_5
MOVA,#4
AJMPKEY_7
KEY_5:
JNBACC.2,KEY_6
MOVA,#8
AJMPKEY_7
KEY_6:
MOVA,#12
KEY_7:
ADDA,R4
PUSHACC
KEY_8:
ACALLDELAY
ACALLKS
JNZKEY_8
POPACC
RET
NEXT:
INCR4
MOVA,R2
JNBACC.3,KEY
RLA
MOVA,R2
AJMPKEY_3
KS:
MOVDPTR,#0FF21H
MOVA,#00H
MOVX@DPTR,A
INCDPTR
MOVXA,@DPTR
CPLA
ANLA,#0FH
RET
ORG2000H
PRINT:
-------RET
第7章程序存储器拓展和数据存储器拓展
8155命令字:
TM2,TM1=01;停止定时器/计数器
TM2,TM1=10;若正在计数,计数长度减为0时停止计数
TM2,TM1=11;启动,置方式和长度后立即启动计数
若正在计数,溢出后按新的方式和长度计数。
8155状态字
8155的定时器(14位的减1计数器)
M2M1=00:
输出单个方波
M2M1=01:
输出连续方波
M2M1=10:
输出单个脉冲
M2M1=11:
输出连续脉冲
1.若A口定义为基本输入方式,B口定义为基本输出方式,对输入脉冲进行16分频,则8155的I/O初始化程序为:
START:
MOVDPTR,#7F05H;定时器高8位地址7F05H
MOVA,#40H;定时器高字节送A
MOVX@DPTR,A;装入高字节
DECDPTR
MOVA,#10H
MOVX@DPTR,A;装入定时器低字节
MOVDPTR,#7F00H;指向命令状态口
MOVA,#0C2H;设置命令字[A入B出]
MOVX@DPTR,A;装入命令字,启动定时器
·读8155RAM(7E00~7EFF)的F1H单元内容:
MOVDPTR,#7EF1HMOVXA,@DPTR;
·将立即数41H写入8155RAM的20H单元中:
MOVA,#41HMOVDPTR,#7E20H
MOVX@DPTR,A;
2764的地址范围:
0000~1FFFH;6264的地址范围:
2000H~3FFFH
第6章定时器/计数器
1.使用T0定时,使得由P0.7输出周期为2ms的方波。
设单片机时钟为6MHz。
使用方式0和方式1分别实现。
请编制程序。
1)计算定时器初值X。
X=2^13—500=8192—500=7692换算成16进制数为1E0CH用高八位和低五位表示(TH0、TL0):
F00CH
2)编制初始化程序:
T0工作在方式0,方式控制字为00H,TH0=F0H,TL0=0CH
编程:
ORG1000H
MOVTMOD,#00H;*
MOVTH0,#0F0H
MOVTL0,#0CH
MOVIE,#82H
SETBTR0
WAIT:
SJMPWAIT
3)编制中断程序:
ORG0000H;上电复位入口地址
LJMP1000H
ORG000BH
LJMPTINT
ORG300H
TINT:
CPLP0.7
MOVTH0,#0F0H
MOVTL0,#0CH
MOVIE,#82H
RETI
2.设8031时钟频率为12MHz,请编出利用定时器/计数器T0在P1.0引脚上输出周期为2s的方波程序。
1)计算定时器初值X。
X=216—50ms/1us=15536
换算成16进制数为3CB0H
2)编制初始化程序:
T0工作在方式1,方式控制字为01H,TH0=3CH,TL0=B0H
编程:
ORG1000H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
SETBTR0;
MOVTCON,#10H*
MOVR0,#14H
WAIT:
SJMPWAIT
3)编制中断程序:
ORG0000H;上电复位入口地址
LJMP1000H
ORG000BH
AJMPTINT
ORG0080H
TINT:
DJNZR0,NEXT;
CPLP1.0
MOVR0,#14H
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
RETI
计数初值的计算:
计数器以增1的方式计数,溢出时申请中断。
1、根据定时值计算出所需要的计数时钟周期数N。
t=Tc*NN=t/Tc
Tc——计数时钟周期=机器周期=振荡周期*12
2、根据选择的工作方式,计算计数器溢出所需的计数初值X
方式0:
(13位)X=213—N
方式1:
(16位)X=216—N
方式2:
(8位)X=28—N
定时时间=振荡周期*12*(2n—X)
X=2n—t/(Tc*12)=2n—t*f/12
3、将X化为16进制数装入TH和TL中
方式0:
(M1M0=00)13位定时/计数器方式
16位寄存器只用13位,当TLx的低5位溢出时向THx进位,而THx溢出时向中断标志TFx进位——硬件置位TFx,申请中断
相关参数的计算:
(1)最大计数量:
nmax=213=8192
(2)已知要求的计数量n,则计数器初值为:
x=213-n=8192-n
(3)最大定时时间:
tmax=213×12/fosc=8192×12/fosc
(4)已知要求的定时时间t,则定时器的初值为:
x=213-t×fosc/12=8192-t×fosc/12
求得初值以后,应将x分配到TLx和THx:
(TLx)=000x4x3x2x1x0B(THx)=x12x11x10x9x8x7x6x5B
方式1:
(M1M0=01)16位定时/计数器方式结构图同方式0,TL1和TH1都是8位
相关参数的计算:
(1)最大计数量:
nmax=216=65536
(2)已知要求的计数量n,则计数器的初值为:
x=216-n=65536-n
(3)最大定时时间:
tmax=216×12/fosc=65536×12/fosc
(4)已知要求的定时时间t,则定时器的初值为:
x=216-t×fosc/12=65536-t×fosc/12
求得初值以后,应将x分配到TLx和THx:
方式2(M1M0=10)自动恢复初值的8位计数器方式0和方式1若用于循环定时/计数时,每次计满溢出后,计数器全部为0,第二次计数器还需重新装入计数初值。
如此反复,不仅影响到定时精度,也给程序设计带来不便。
方法2则可以解决此问题,它具有自动重载功能。
方式2有利于提高定时精度,比较适合用作精确的脉冲信号发生器,或者串行口波特率发生器。
但该方式是8位计数结构,计数值有限,最大只能到255。
相关参数的计算如下:
(1)最大计数量:
nmax=28=256
(2)已知要求的计数量n,则计数器的初值为:
x=28-n=256-n
(3)最大定时时间:
tmax=28×12/fosc=256×12/fosc
(4)已知要求的定时时间t,则定时器的初值为:
x=28-t×fosc/12=256-t×fosc/12
求得初值以后,应将x分配到TL0和TH0(两者相同):
方式3(M1M0=11)仅限于T0前3种工作方式,对两个定时器的设置和使用时完全相同。
方式3下,z则是不同的。
方式3下的定时器0
方式3只适用于定时器T0。
定时器0在方式3下被拆成两个独立的8位计数器TL0和TH0。
其中T0既可计数使用,又可定时使用。
TL0使用原T0的各控制位和引脚信号,其功能和操作方式与方式0和方式1基本相同。
TH0只可以用作简单的内部定时,占用原定时器T1的控制位TR1和TF1,还占用T1的中断源,其关闭和启动只受TR1的控制。
方式3下的定时器1
定时器T1只能用作方式0、方式1和方式2。
由于TR1、TF1和T1的中断源已被定时器T0占用。
此时只有控制位C/T切换控制定时和计数工作方式,且计数溢出时,只能将输出送入串行口。
将定时器T1用作串行口的波特率发生器。
当设置好工作方式时,T1便开始运行;如要停止运行,只需送入一个设置定时器T1为方式3的方式控制字即可。
因为定时器T1不能在方式3下使用,如果硬把它设置为方式3,就停止工作。
第5章中断系统
M1M0
工作方式
功能说明
00
方式0
13位计数器
01
方式1
16位计数器
10
方式2
自动重新装入初值的8位计数器
11
方式3
T0:
分成两个8位计数器;
T1:
停止计数
外部中断的应用-举例
例1:
用一个按钮控制8个发光二极管,每按动一次按钮,是发光二极管按L1→L2→….→L8→L1的顺序循环移动点亮一位。
解:
如图所示。
在P1.0-P1.7外部连接8个发光二极管L1-L8,当P1.X输出低电平时,对应的发光二极管被点亮;当P1.X输出为高电平时,对应的发光2
极管熄灭。
在/INT1引脚上外接一个按钮。
当按钮按下时,/INT1为低电平;按钮释放时,/INT1为高电平。
1.用中断方式实现
单片机复位以后PC的值为0000H,外部中断1的矢量地址是0013H,而外部中断1的子程序必须放置在从0013H开始的8个存贮单元,无法实现。
考虑到从0000H到0013H只有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北工大 单片机 期末 复习题 A4 一纸开 概要