东南大学测控技术与仪器单片机作业及答案【模板范本】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012—1013学年单片机作业
一、第2、3章(单片机结构及存储器)答案
2、80C51存储器在结构上有何特点?访问片内RAM和片外RAM 的指令格式有何区别?
答:采用将程序存储器和数据存储器截然分开、分别寻址的结构,各自
有自己的寻址系统、控制信号和功能。
ROM用来存放始终保留的固定程序和数据;
RAM用来存放程序运行时所需要的常数和变量
访问片内RAM采用MOV格式
访问片外RAM采用MOVX格式
3、M CS—51单片机堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?
答:堆栈是内部数据RAM区中,数据先进后出或后进先出的区域。
其具体功能有两个:保护断点和保护现场。
堆栈指示器(SP)是一个8位寄存器,存放当前的堆栈栈顶所指存储单元地址的。
系统复位后,SP内容为07H,如不重新定义,则以07H为栈底,压栈的内容从08H单元开始存放;如需要使用深度较大的堆栈时,将会影响到工作寄存器的使用。
所以要对SP进行重新的赋值,使堆栈区设定在片内数据RAM区中的某一空白区域内,堆栈深度以不超过片内RAM 空间为限。
4、什么是准双向口?使用准双向口时,要注意什么?
答:P0、P1、P2、P3口作普通I/O口使用时,都是准双向结构。
准双向口的输入操作和输出操作本质不同,输入操作是读引脚状态;输出操作是对口锁存器的写入操作;由口锁存器和引脚电路可知:当由内部总线给口锁存器置0或1时,锁存器中的0,1状态立即反映到引脚上。
但在输入操作(读引脚)时,如果口锁存器为0,引脚被钳位在0状态,导致无法读出引脚的高电平输入。
准双向口作输入口时,应先使锁存器置1,称之为置输入方式,然后再读引脚。
例如,要将P1口状态读入到累加器A中,应执行以下两条指令:
MOV P1,#0FFH ;P1口置输入方式
MOV A,P1 ;读P1口引脚状态到ACC中
在输入时非高阻输入,一般没独立的输入输出控制设置,需要人为置“1”的i/o口
三、第5章(中断)答案
1、80C51有几个中断源,各中断标志是如何产生的,又如何清除的?CPU响应中断时,其中断入口地址各是多少?
中断源:
(1)/INT0 -外部中断请求0,由引脚/INT0输入。
当IT0(TCON。
0)=1时,低电平有效;
当IT0(TCON。
0)=0时,下降沿有效
(2)/INT1 -外部中断请求1,由引脚/INT1输入。
当IT1(TCON.2)=1时,低电平有效;
当IT1(TCON.2)=0时,下降沿有效
(3)T0 -定时器/计数器T0溢出中断请求。
中断请求标志为TF0(TCON.5)。
(4)T1 —定时器/计数器T1溢出中断请求.
中断请求标志为TF1(TCON。
7)。
(5)RX、TX —串行口中断请求。
中断请求标志为TI(SCON。
1)或RI(SCON。
0).
中断标志产生及清除:
(1)/INT0 —外部中断请求0,由引脚/INT0输入。
当CPU采样到/INT0端出现有效中断请求时,中断请求标志位IE0(TCON.1)硬件置1,;响应中断后,转向中断服务时,硬件复位.
(2)/INT1 -外部中断请求1,由引脚/INT1输入。
当CPU采样到/INT1端出现有效中断请求时,中断请求标志位IE1(TCON.3)硬件置1,;响应中断后,转向中断服务时,硬件复位。
(3)T0 —定时器/计数器T0溢出中断请求。
T0计数溢出,中断请求标志为TF0(TCON.5)硬件置位;响应中断时,硬件复位.不使用中断时用软件清0。
(4)T1 —定时器/计数器T1溢出中断请求.
T1计数溢出,中断请求标志为TF1(TCON.7)硬件置位;响应中断时,硬件复位。
不使用中断时用软件清0.
(5)RX、TX —串行口中断请求。
发送完一帧,中断请求标志位TI(SCON.1)硬件置位;响应中断后,必须软件清0;
接收完一帧,中断请求标志位RI(SCON.0)硬件置位;响应中断后,必须软件清0.
中断入口地址:
中断源入口地址
外部中断0 0003H
定时器/计数器T0 000BH
外部中断1 0013H
定时器/计数器T1 001BH
串行口中断0023H
2、80C51单片机的中断系统中有几个优先级,如何设定?若扩充8个中断源,如何确定优先级?
答:80C51单片机的中断系统具有两个中断优先级。
中断优先级的设定:由专用寄存器IP 统一管理,由软件设置每个中断源为高优先级中断或者低优先级中断.可实现两级中断嵌套.
专用寄存器IP为中断优先级寄存器,锁存各中断源优先级的控制位,用户可由软件设定,其格式如下:
(1)PS —串行口中断优先级控制位
1:高优先级中断;0:低优先级中断。
(2)PT1 —定时器T1中断优先级控制位
1:高优先级中断;0:低优先级中断。
(3)PX1 -外部中断1中断优先级控制位
1:高优先级中断;0:低优先级中断。
(4)PT0 —定时器T0中断优先级控制位
1:高优先级中断;0:低优先级中断。
(5)PX0 -外部中断0中断优先级控制位
1:高优先级中断;0:低优先级中断.
如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部硬件查询逻辑按自然优先级顺序确定该响应哪个中断请求。
其自然优先级由硬件形成,排列如下:
中断源查询顺序
外部中断0 先(最高级)
T0溢出中断
外部中断1
T1溢出中断
串行口中断后(最低级)
若扩充8个中断源,如何确定优先级:
可以采用中断和查询结合的方法确定优先级。
可以用8个外部中断请求源IR1~IR8用“线或”的办法连到MCS—51的一个外中断源输入端,同时还连到P1口。
当8个扩充中断源中有一个或几个出现高电平,OC门输出为0,使得/INT0、/INT1为低电平触发中断,所以这些扩充的外中断源都是电平触发方式(高电平有效)。
这8个扩充中断源的输入信号同时接到8个I/O口上。
在外中断服务程序中,由软件按照人为设定的顺序(优先级)查询外中断源哪位是高电平,然后进入该中断处理。
3、中断子程序返回指令与调用子程序返回指令有何异同?相同点:都是作为最后一条指令,起返回作用。
不同点:
① RET指令必须作子程序的最后一条指令;RETI必须作中断服务程序的最后一条指令.
② RETI指令除恢复断点地址外,还恢复CPU响应中断时硬件自动保护的现场信息。
执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能恢复返回地址。
四、第6章(定时器)
1、用定时器T1定时,使P1。
2端电平每隔1 min变反一次,晶振为12MHz。
(用定时器查询方式)
解:解题意,确定方案:
晶振为12MHz , 在方式1下,最大的定时时间Tmax为:
Tmax = 65536 μs = 65.536 ms
显然不能满足本题的定时时间要求,因而需另设两个软件计数器,
方案:T1定时50ms;
软件计数器1:秒计数,用片内50H作为循环次数.
软件计数器2:分计数,用片内51H单元作为循环次数。
•设置TMOD
•计算T1的初始值X
X=65536-50000μs / 1μs
=15536D
=3CB0 H
画出程序框图
MOV 50H,#14H ; 20 * 50ms = 1s
MOV 51H,#3CH ; 60 *1s = 1min
MOV TMOD,#10H ;设定时器1为方式1
MOV TH1,#3CH ; 赋初值
MOV TL1,#0B0H
SETB TR1 ; 启动T1
L2: JBC TF1,L1 ; 50ms到?
SJMP L2
L1:MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 50H,L2 ; 未到1s继续循环
MOV 50H,#14H
DJNZ 51H,L2 ; 未到1min继续循环
MOV 51H,#3CH
CPL P1.2 ;1min到P1.2端取反
SJMP L2 ;反复循环
1、无说明如何得到初值;
2、中断响应子程序中利用A作为存放中间值,需要保护。
一般用直接地址比较好。
划分一
个RAM区。
3、定时初值需要重置,循环初值也需要重置。
4、依然有人不清楚单字节最大值。
5、LOOP1:JBC TF1,LOOP1不正确
6、C是进位位,不是寄存器
2、用定时器T1定时,使P1.2端电平每隔1 min变反一次,晶振为12MHz.(用中断方式)
ORG 000H
LJMP MAIN
ORG 001BH
LJMP ITIP
ORG 1000H
MAIN:MOV 50H,#14H ; 20 *50ms = 1s
MOV 51H,#3CH ;60 *1s = 1min
MOV TMOD,#10H ;设定时器1为方式1
MOV TH1,#3CH ;赋初值
MOV TL1,#0B0H
SETB TR1 ;启动T1
SETB ET1 ;允许T1中断
SETB EA ;CPU开放中断
HERE:SJMP HERE
END
ITIP:MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 50H,L2 ;未到1s继续循环
MOV 50H,#14H
DJNZ 51H,L2 ; 未到1min继续循环
MOV 51H,#3CH
CPL P1.2 ;1min到P1。
2端取反
L2:RETI
五、第6章(串行口)
1、串行口在方式0下,RXD、TXD各取何作用?
串行数据由RXD(P3。
0)端输入或输出,同步移位脉冲由TXD(P3.1)端送出。
2、波特率的定义是什么?
波特率是异步通讯中对数据传送速率的规定,其意义是每秒钟传送多少位二进制数。
3、为什么定时器T1用做串行口波特率发生器时,常采用方式2?若已知系统时钟频率和通信波特率,如何计算其初始值?
①定时器T1工作于方式2是一种自动重装入方式,无需在中断服务程序中送数,没有由于中断引起的误差,也应禁止定时器T1中断.采用方式2是一种既省事又精确的产生串行口波特率的方法.
②
将计算出的数值送入TH1和TL1即可.
只讲了自动重新装入方式,未说明更精确。
4、CPU 专用寄存器SCON 中的SM2在多机通信中的作用? SM2的功能如下:
当SM2=1,
• 若接收到的RB8=1,则被确认为呼叫地址帧,将该帧内容装入SBUF ,并置位RI=1,向CPU 请求中断,进行地址呼叫处理;
• 若接收到的RB8=0,为数据帧,将不予理睬,接收的信息被丢弃。
当SM2=0,
• 则无论是地址帧还是数据帧均接收,并置位RI=1,向CPU 请求中断,将该帧内容装入SBUF
因此在进行多机通信中,实现多机通讯的过程如下:
1、 可以先置所有从机的SM2=1,主机发送要访问的从机地址;
2、 所有从机都能接收到地址信号(RB8=1),与自己的地址相比较,相同即为被叫从机;
3、 被叫从机将SM2置0(SM2=0),则被叫从机不论地址信号还是数据信号都能接收。
而其它从机只能接收地址信号.
4、 当主机改变从机通讯时则再发呼叫地址帧,寻呼其他从机,原先被寻址的从机经分析得知主机在寻呼其他从机时,恢复其SM2=1,对其后主机发送的数据不予理睬.
只是说明SM2的功能,没有从多机通信,地址帧、数据帧的角度叙述。
不涉及到串行口的方式问题,题目是多机通信,所以关于方式0,方式1的描述不需要。
六、第8章(扩展)
1、MCS —51单片机的程序存储器和数据存储器共处同一地址空间,为什么不会发生总线冲突?
访问不同存储器,使用不同的指令.如访问ROM 用MOVC,访问片内RAM 则用MOV ,访问片外RAM 则用MOVX 。
不同的指令控制信号有所不同,片外数据存储器扩展时采用控制信号线为/RD 和/WR,程序存储器扩展时采用控制信号线/PSEN ,
正是由于控制信
号的不同,程序存储器和数据存储器的空间在逻辑是严格分开的,所以在访问它们时不会发生总线冲突。
2、8255A 控制字地址为300FH,请按:A 口方式0输入,B 口方式1输出,C 口高位输出、C 口低位输入,确定8255A 控制字,并编初始化程序。
解:控制字为:10010101=95H
初始化程序: MOV DPTR ,#300FH
MOV A ,#95H
MOVX @DPTR,A
3、检查本单片机的串行口是否完好。
将89C51的RXD (P3.0)和TXD(P3.1)短接,P1。
0接一个发光二极管(如图所示),编一个串口自发自收(查询方式)通信程序,检查本单片机的串行口是否完好。
Fosc=12MHz ,波特率=600,取SMOD=0。
解:
波特率
=1123222561⨯⨯-fosc TH SMOD
T1初值=204=CCH
串行接口自检(查询方式)程序如下:
START:MOV TMOD,#20H ;T1工作模式2
MOV TH1,#0CCH
MOV TL1,#0CCH ;设置T1初值
SETB TR1 ;启动T1
MOV SCON,#50H ;串行接口工作方式1,允许接收ABC: CLR TI
MOV P1,,#0FFEH ;LED灭
ACALL DAY ;延时
MOV A,#0FFH
MOV SBUF,A ;发送数据FFH
JNB RI,$ ;RI不等于1则等待
CLR RI
MOV A,SBUF ;接收数据,A=FFH
MOV P1,A ;灯亮
ACALL DAY ;延时
SJMP ABC
DAY: MOV R6,,0FFH
DAL: MOV R7,,0FFH
DJNZ R7,$
DJNZ R6,DAL
RET。