微机原理与接口技术离线作业.docx
《微机原理与接口技术离线作业.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术离线作业.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术离线作业
浙江大学远程教育学院
《微机原理与接口技术》课程作业
姓名:
严超
学号:
716081202003
年级:
16秋电气
学习中心:
武义
—————————————————————————————
第二章P47
2.80C51单片微机芯片引脚第二功能有哪些?
答:
80C51单片机的P0、P2、P3的引脚都具有第二功能。
第一功能第二变异功能P0口地址总线A0—A7/数据总线D0—D7P2口地址总线A8—A15P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1),P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器0的外部输出),P3.6WR(片外数据存储器或I/O的写选通)P3.7RD(片外数据存储器或I/O的读选通)
4.80C51存储器在结构上有何特点?
在物理上和逻辑上各有哪几种地址空间?
访问片内数据存储器和片外数据存储器的指令格式有何区别?
答:
80C51单片机采用哈佛(Har-yard)结构,将程序存储器和数据存储器截然分开,分别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器,以及众多的特殊功能寄存器,而且还具有很强的外部存储器扩展能力,扩展的程序存储器和数据存储器的寻址范围分别可达64KB。
1、在物理上设有4个存储器空间:
①片内程序存储器;②片外程序存储器;③片内数据存储器;④片外数据存储器。
2、在逻辑上设有3个存储器地址空间:
①片内、片外统一的64KB程序存储器地址空间;②片内256B(80C52为384B)数据存储器地址空间;③片外64KB的数据存储器地址空间。
6.80C51片内数据存储器低128个存储单元划分为哪4个主要部分?
各部分主要功能是什么?
答:
80C51单片机片内RAM低128个存储单元划分为四个主要部分:
①寄存器区:
共4组寄存器,每组8个存储单元,各组以R0—R7作为单元编号。
常用于保存操作数及中间结果等。
R0—R7也称为通用寄存器,占用00H—1FH共32个地址单元。
②位寻址区:
20H—2FH既可作为一般数据存储单元使用,按字节进行操作,也可对单元内每一位进行位操作,因此称为位寻址区。
寻址区共16个数据存储器单元,共计128位,位地址为00H—7FH。
③堆栈区:
设置在内部数据存储器区内。
④用户数据存储器区:
在内部数据存储器00H—7FH低128单元中,除去前面3个区中可能会使用的单元外,剩下的单元都作为用户数据存储器区。
第三章P87
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
答:
①MOV指令用于对内部数据存储器的访问。
②MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
③MOVX指令采用间接寻址的方式访问外部数据存储器或I/O,有Ri和DPTR两种间接寻址方式。
MOVX指令执行时,在P3.7引脚上输出RD有效信号或在P3.6引脚上输出WR有效信号,可以作为单片机扩展外部存储器或I/O的读或写选通信号。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOVA,#55H
ANLA,#0FFH
ORL20H,A
XRLA,@R1
CPLA
答:
各指令执行结果如下:
MOVA,#55H;(A)=55HANLA,#0FFH;(A)=55HORL20H,A;(20H)=FFHXRLA,@R1;(A)=AAHCPLA;(A)=55H
16.阅读下列程序,说明其功能。
MOVR0,#30H
MOVA,@R0
RLA
MOVR1,A
RLA
RLA
ADDA,R1
MOV@R0,A
答:
源程序如下:
MOVMOVRLAMOVRLARLAADDMOV,R1,AA,R1,@R0,A,R0,#30H;(R0)=30H
A,@R0;30H单元内容送A;将A中的内容循环左移1位R1,A;将A中的内容送到R1;将A中的内容循环左移1位;将A中的内容循环左移1位A,R1;将R1中内容与A中的内容相加,得到和送到A中@R0,A;将求和的结果送到30H单元中
17.已知两个十进制数分别从内部数据存储器中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部数据存储器的30H单元中。
编程实现两个十进制数求和,并把和的结果存放在内部数据存储器40H开始的单元中。
答:
程序如下:
ORG0000HSJMPMAINORG0030HMAIN:
MOVR0,#40HMOVR1,#50HMOVR2,#30HCLRCPP:
MOVA,@R1ADDCA,@R0DAA
MOV@R0,AINCR0INCR1DJNZR2,PPAJMP$END
21.读程序,请⑴画出P1.0~P1.3引脚上的波形图,并标出电压V-时间T坐标;
⑵加以注释。
ORG0000H
START:
MOVSP,#20H
MOV30H,#01H
MOVP1,#01
MLP0:
ACALLD50ms;软件延时50mS
MOVA,30H
CJNEA,#08H,MLP1
MOVA,#01H
MOVDPTR,#ITAB
MLP2∶MOV30H,A
MOVCA,@A+DPTR
MOVP1,A
SJMPMLP0
MLP1:
INCA
SJMPMLP2
ITAB:
DB0,1,2,4,8
DB8,4,2,1
D50ms:
…;延时50ms子程序(略)
RET
(1)、波形图:
(2)、加以注释:
ORG0000HSTART:
MOVSP,#20H;设堆栈指示器初值MOV30H,#01H;P1输出第一拍MOVP1,#01H;P1引脚输出波形MLP0:
ACALLD50msMOVA,30HCJNEA,#08H,MLP1;判断表格中数据是否取完MOVA,#01H;取完,从表头开始取
MOVDPTR,#ITAB;表格首地址
MLP2∶MOV30H,AMOVCA,@A+DPTR;取表格中数据MOVP1,ASJMPMLP0MLP1:
INCA;表格中数据未取完,准备取下一个SJMPMLP2ITAB:
DB0,1,2,4,8;P1引脚输出波形表DB8,4,2,1D50ms:
…;软件延时50ms
RET
第四章P123
6.根据运算结果给出的数据到指定的数据表中查找对应的数据字。
运算结果给出的数据在片内数据存储器的40H单元中,给出的数据大小在00~0FH之间,数据表存放在20H开始的片内程序存储器中。
查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。
其对应关系为:
给出数据;000102……0DH0EH0FH
对应数据:
00A0H7DC2HFF09H3456H89ABH5678H
请编制查表程序段,加上必要的伪指令,并加以注释。
答:
程序如下:
ORG0000HAJMPMAINORG0030HMAIN:
MOVA,40H
MOVDPTR,#TABRLA
MOV40H,A
MOVCA,@A+DPTRMOV41H,AMOVA,40HINCA
MOVDPTR,#TABMOVCA,@A+DPTRMOV42H,ASJMP$
ORG0070H
TAB:
DB0A0H,00H,0C2H,7DH,09H,0FFH,...,56H,34HDB0ABH,89H,78H,56H
10.把长度为10H的字符串从内部数据存储器的输入缓冲区INBUF向设在外部数据存储器的输出缓冲区OUTBUF进行传送,一直进行到遇见回车字符“CR”结束传送或整个字符串传送完毕。
加上必要的伪指令,并对源程序加以注释。
答:
程序如下:
ORG000HAJMPMAINORG0030H
MAIN:
MOVR7,#10H;数据长度
MOVR0,#INBUF;源数据首地址MOVDPTR,#OUTBUF;目的数据首地址LOOP:
MOVA,@R0;把源数据的值赋给ACJNEA,#0DH,LOOP1;判是否是字符“CR”SJMPEND1;是字符“CR”,则结束传送
LOOP1:
MOVX@DPTR,A;把A中的源数据赋给目的数据区
INCR0;源数据地址加1INCDPTR;目的数据地址加1
DJNZR7,LOOP;判断数据是否传送完毕
END1:
SJMPEND1END
12.比较两个ASCII码字符串是否相等。
字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。
如果两个字符串相等,则置用户标志F0为0;否则置用户标志F0为1。
加上必要的伪指令,并加以注释。
(注:
每个ASCII码字符为一个字节,如ASCII码“A”表示为41H)
答:
字符串中每一个字符都可以用一个ASCII码表示。
只要有一个字符不相同,就可以判定字符串不相同。
ORG0000HAJMPMAINORG0030H
MAIN:
MOVR0,#30H;第一个字符串的首地址
MOVR1,#40H;第二个字符串的首地址
LOOP:
MOVA,@R0;第一个字符串的字符值赋给AMOVB,@R1;第二个字符串的子符值赋给B
CJNEA,B,NEXT;比较两个字符值,若有不相同则转INCR0INCR1
DJNZ20H,LOOP;判字符串是否比较完
CLRF0;字符串相等,则F0位清零SJMP$
NEXT:
SETBF0;字符串不等,则F0位置1SJMP$END
14.80C51单片机从内部数据存储器的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
答:
程序如下:
ORG000HAJMPMAINORG0030H
MAIN:
MOV20H,#0;统计结果存放单元初始值为0MOV21H,#0MOV22H,#0
MOVR0,#31H;数据首地址
LOOP:
MOVA,@R0;取数据
JBACC.7,INC_NEG;符号位为1,表示该数为负,跳转加1CJNEA,#0,INC_POS
INC21H;该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INC22H;该数为负数,负数个数加1AJMPLOOP1
INC_POS:
INC20H;该数为正数,正数个数加1LOOP1:
INCR0;指向下一个数据地址DJNZ30H,LOOP;判断统计是否结束END
16.将外部数据存储器的2040H单元中的一个字节拆成2个ASCII码,分别存入内部数据存储器40H和41H单元中,试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。
加上必要的伪指令,并加以注释。
答:
子程序的入口条件、出口功能及源代码如下:
子程序入口条件:
准备拆为2个ASCII码,分别存入外部数据存储器的40H单元中。
子程序出口功能:
拆成2个ASCII码,分别存入内部数据存储器40H和41H单元中。
ORG1000H
B_TO_A:
MOVDPTR,#40H;外部数据存储器40H单元MOVR0,#40H;内部数据存储器40H单元MOVXA,@DPTR;取数PUSHA
ANLA,#0FH;低4位转换为ASCII码LCALLCHANGE;调用转换子程序
MOV@R0,A;存入转换后的ASCII码INCR0POPASWAPA
ANLA,#0FH;高4位转换为ASCII码LCALLCHANGE;调用转换子程序
MOV@R0,A;存入转换后的ASCII码RET
CHANGE:
CJNEA,#0AH,NEXT;转换子程序AJMPNEXT2;=0AH,转移NEXT:
JNCNEXT2;>0AH,转移
ADDA,#30H;<=9,数字0-9转化为ASCII码RET
NEXT2:
ADDA,#37H;字母A-F转化为ASCII码RETEND
17.根据8100H单元中的值X,决定P1口引脚输出为:
2XX>0
P1=80HX=0(-128D≤X≤63D)
X变反X<0
答:
程序如下:
ORG0000HSJMPBEGINORG0030H
BEGIN:
MOVDPTR,#8100H;取X值MOVXA,@DPTRMOVR2,A
JBACC.7,SMALLER;X<0SJMPUNSIGNED;X≥0
SMALLER:
DECA;X<0,P1输出-X(先减1,再取反)CPLA
MOVP1,ASJMPOK
UNSIGNED:
CJNEA,#00H,BIGGER;不等于0即大于0MOVP1,#80H;X=0,P1输出80HSJMPOK
BIGGER:
CLRC;X>0,P1输出2XRLCA
MOVP1,AOK:
SJMP$END
编写求一组无符号数中最小值的子程序,入口条件为:
内部数据存储器的20H和21H中存数据块的起始地址,22H中存数据块的长度,求得的最小值存入30H中。
答:
程序如下:
;求无符号数最小值的子程序CMP1
ORG2000H
CMP1:
MOVDPL,20H;数据块起始地址DPTRMOVDPH,21H
MOV30H,#0FFH;最小值单元初始值设为最大值LOOP:
MOVXA,@DPTR;取数据
CJNEA,30H,CHK;比较两个数大小
SJMPLOOP1;两个数相等,不交换CHK:
JNCLOOP1;A较大,不交换MOV30H,A;A较小,交换LOOP1:
INCDPTR;数据地址加1
DJNZ22H,LOOP,判数据是否比较结束
RET
第五章p141
1.什么是中断?
在单片微机中中断能实现哪些功能?
答:
单片微机在程序执行过程中,允许外部或内部“事件”通过硬件打断程序的执行,使其转向执行处理外部或内部“事件”的中断服务子程序;而在完成中断服务子程序后,继续执行原来被打断的程序,这种情况称为“中断”,这样的过程称为“中断响应过程”。
7.80C51共有哪些中断源?
对其中断请求如何进行控制?
答:
1.中断源80C51单片微机中有5个中断源,包括两个外部中断源和三个内部中断源。
两个外部中断源INT0和INT1,三个内部中断源为定时器/计数器T0、T1的定时/计数溢出中断源和串行口发送或接送中断源。
2.中断的允许和禁止由中断允许寄存器IE控制,IE寄存器中相应位设置为0时,所对应的中断源被禁止中断;相应位设置为1时,所对应的中断源允许中断。
12.80C51的中断与子程序调用有哪些异同点,请各举两点加以说明。
答:
中断与子程序调用的相似点:
①两者都是中断当前正在执行的程序,转去执行子程序或中断服务子程序。
②两者都是有硬件自动地把断点地址压入堆栈,然后通过软件完成现场保护。
③执行完子程序或中断服务子程序后,都要通过软件完成现场恢复,并通过执行返回指令,重新返回到断点处,继续执行程序。
④两者都可以实现嵌套,如中断嵌套和子程序嵌套。
中断和子程序调用的不同点:
①中断请求信号可以由外部设备发出,是随机的,比如故障产生的中断请求。
②中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。
③中断响应是受控的,其响应时间会受一些因素影响;而子程序响应时间是固定的。
第六章P161
1.80C51单片微机内部设有几个定时器/计数器?
简述各种工作方式的功能特点?
1.80C51单片微机内部设有几个定时器/计数器?
简述各种工作方式的功能特点?
答:
80C51单片机内部设有2个16位定时器/计数器TO和T1。
定时器/计数器有4种工作方式,其特点如下:
①方式O是13位定时器/计数器。
由THx高8位(作计数器)和TLx的低5位(32分频的定标器)构成,TLx的低5位溢出时,向THx进位;THx溢出时,硬件置位TFx(可用于软件查询),并可以申请定时器中断。
②方式1是16位定时器/计数器。
TLx的低8位溢出时向THx进位,THx溢出时,硬
件置位TFx(可用于软件查询),并可以申请定时器中断。
③方式2是定时常数自动重装载的8位定时器/计数器。
TLx作为8位计数寄存器,
THx作为8位计数常数寄存器。
当TLx计数溢出时,一方面将TFx置位,并申请中断;另一方面将THx的内容自动重新装入TLx中,继续计数。
由于重新装入不影响THx的内容,所以可以多次连续再装入。
方式2对定时控制特别有用。
.④方式3只适用于TO,T0被拆成两个独立的8位计数器TLO和TH0。
TLO做8位计
数器,它占用了T0的GATE、INTO、启动/停止控制位TRO、TO引脚(P3.4)以及计数溢出标志位TF0和TO的中断矢量(地址为000BH)等TH0只能做8位定时器用,因为此时的外部引脚T0已为定时器/计数器TLO所占用。
这时它占用了定时器/计数器T1的启动/停止控制位TRl、计数溢出标志位TFl.及T1中断矢量(地址为001BH)。
T0设为方式3后,定时器/计数器T1只可选方式O、1或2。
由于此时计数溢出标志位TFI.及T1中断矢量(地址为001BH)已被TH0所占用,所以T1仅能作为波特率发生器或其他不用中断的地方。
5.在80C51单片微机系统中,已知时钟频率为6MHz,选用定时器T0方式3,请编程使P1.0和P1.l引脚上分别输出周期为2ms和400μs的方波。
加上必要的伪指令,并对源程序加以注释。
答:
机器周期为2μs,定时分别为2ms和400μs。
计算:
400μs定时,400μs=(28-TC)×2μs,TC=38H。
程序如下:
ORG0000H
00000130AJMPMAIN
ORG000BH;定时器TO中断矢量。
000B2100AJMPTIMEMAIN:
00307805MOVR0,#05H
0032758903MOV.TMOD,#03H;T0方式3,定时器中断0035758A38MOVTL0,#38H;TLO定时400μs0038D28CSETBTR0;开启定时器TL0003AC28ECLR,TRl
003CD2A9SETBET0;开定时器TLO中断
003ED2AFSETBEA
004080FESJMP$;中断等待ORG0100H.TIME:
0100758A38MOVTL0,#38H;TL0定时400~s
0103B291CPL.P1.1;400μs定时到,P1.1输出变反0105D804DJNZR0,RETURN01077805MOVR0,#05H
0109B290CP[.P1.0;400μs*5=2ms到,P1.O输出变反RETURN:
010B32RETIEND
14.监视定时器T3功能是什么?
它与定时器/计数器T0、T1有哪些区别?
答:
T3俗称“看门狗\,它的作用是强迫单片机进入复位状态,使之从硬件或软件故障中解脱出来。
在实际应用中,由于现场的各种干扰或者程序设计错误,可能使单片机的程序进入了“死循环\或\程序区\如表格数据区)之后,在一段设定的时间内,假如用户程序没有重装监视定时器T3,则监视电路将产生一个系统复位信号,强迫单片机退出“死循环\或“非程序区”,重新进行“冷启动”或“热启动”。
在程序正常运行时,需要不断地对T3进行“喂狗”,当由于干扰而没能及时“喂狗\,则强迫单片机进入复位状态,从而退出非正常运行状态。
“喂狗”的时间间隔就是允许的失控时间。
T3的定时溢出表示出现非正常状态,而TO和T1的定时溢出是正常状态。
第七章P186
⒌简述串行通信接口芯片UART的主要功能?
答:
①它是用于控制计算机与串行设备的芯片。
②将由计算机内部传送过传来的并行数据行转换为输出的串行数据流。
③将计算机外部来的串行数据串转换为字节,供计算机内部并行数据的器件使用。
④在输出的串行数据串流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验奇偶。
⑤在输出数据流中加入启停标记,并从接收数据流中删除启停标记启停。
⑥处理由键盘或鼠标发鼠出的中断信号(键盘和鼠标也是串行设备也是串行)。
⑦可以处理计算机与外部串行设备的同步管理问题。
⒎80C51单片微机串行口共有哪几种工作方式?
各有什么特点和功能?
答:
80C51单片机串行口有4种工作方式。
各方式的特点:
方式0:
串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。
波特率固定为晶振频率的1/12。
方式1:
为10位数据异步通信口。
波特率可变。
方式2或方式3:
为11位数据的异步通信口。
方式2波特率固定,相对于固定的晶振频率只有两种波特率。
方式3波特率可变。
使用时,根据需要和各方式的特点配合选择。
12.80C51单片微机串行口共有四种工作方式,它们的波特率分别为移位寄存器方式:
波特率为晶振的1/12,8位UART:
波特率可变,9位UART:
波特率为晶振的1/32或1/64,9位UART:
波特率可变。
第八章P259
1.简述单片微机系统扩展的基本原则和实现方法。
答:
系统扩展是单片机应用系统硬件设计中最常遇到的问题。
系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统要求。
80C51系列单片机有很强的外部扩展能力,外围扩展电路芯片大多是一些常规芯片,扩展电路及扩展方法较为典型、规范。
用户很容易通过标准扩展电路来构成较大规模的应用系统。
对于单片机系统扩展的基本方法有并行扩展法和串行扩展法两种。
并行扩展法是指利用单片机的三组总线((地址总线AB、数据总线DB和控制总线CB进行的系统扩展;串行扩展法是指利用SPI三线总线和I2C双线总线的串行系统扩展。
①外部并行扩展单片机是通过芯片的引脚进行系统扩展的。
为了满足系统扩展要求,80C51系列系列单片机芯片引脚可以构成三总线结构,即地址总线AB、数据总线DB和控制总线CB。
单片机所有的外部芯片都通过这三组总线进行扩展。
②外部串行扩展