微机原理与接口技术离线作业答案必做.docx
《微机原理与接口技术离线作业答案必做.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术离线作业答案必做.docx(34页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术离线作业答案必做
浙江大学远程教育学院《微机原理与接口技术》课程作业
号:
姓名:
学
温州学习中心:
年级:
—————————————————————————————P47第二章单片微机芯片引脚第二功能有哪些80C51.2P2和P3引脚都具有第二功能。
P0答:
80C51单片机的、第一功能第二变异功能D7D0~地址总线A0~A7/数据总线P0口A15地址总线口A8~P2RXD(串行输入口)
串行输出口)TXD(
0INT(外部中断0)
INT1(外部中断1)
T0(定时器/计数器0的外部输入)
T1(定时器/计数器0的外部输出)
WR(外部读写存储器或I/O的写选通)
(外部读写存储器或I/O的读选通)RD
80C51存储器在结构上有何特点在物理上和逻辑上各有哪几种地址空间访问.4片内数据存储器和片外数据存储器的指令格式有何区别
答:
80C51单片机采用哈佛(Har-yard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达64KB。
⒈在物理上设有4个存储器空间
片内程序存储器;
片外程序存储器;
片内数据存储器;
片外数据存储器。
⒉在逻辑上设有3个存储器地址空间
片内、片外统一的64KB程序存储器地址空间。
)数据存储器地址空间。
384B为80C52(256B片内
片内数据存储器空间,在物理上又包含两部分:
255
字节为片内数据存储器空间;从128~0-对于80C51型单片机,从~127
空间(实际仅占用了20多个字节)。
字节为特殊功能寄存器(SFR)片外64KB的数据存储器地址空间。
以产生不同存储空间的选通信在访问三个不同的逻辑空间时,应采用不同形式的指令,号。
MOVXRAM指令,因为则一定要采用MOVX访问片内RAM采用MOV指令,访问片外WR。
访问程序存储器地址空间,则应采用或指令会产生控制信号RAM,用来访问片外RD指令。
MOVC
个主要部分各部分主要480C51片内数据存储器低128个存储单元划分为哪.6功能是什么作为单元编号。
R7每组8个存储单元,各组以R0寄存器区:
答:
共~4组寄存器,1FH~常用于保存操作数及中间结果等等。
R0~R7也称为通用寄存器,占用00H个单元地址。
共32单元使用,按字节进行操作,也可以对2FH,既可作为一般位寻址区:
20H~RAM单元,共计个RAM单元中的每一位进行位操作,称为位寻址区。
寻址区共有167FH。
128位,位地址为00H~RAM区内。
堆栈区:
设置在用户3个区,剩下的所有单元。
RAM低128单元中,除去前面用户RAM区:
在内部
P87第三章指令有什么区别,分别用于那些场合,为什么、MOVC、MOVX9.MOVRAM的访问。
答:
MOV指令用于对内部MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
MOVX指令执行时,在引脚上输出有效信号或在引脚上输出有效信号,可以用作外部数据WRRD存储器或I/O的读或写选通信号,与单片机扩展电路有关。
已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
.15MOVA,#55H
A,#0FFHANL
20H,AORL
A,XRL@R1
ACPL
答:
各指令执行结果如下:
MOVA,#55H(A)=55H;
ANLA;(A)=55H,#0FFH
XRLA(A)=AAH;,@R1
A
CPL(A)=55H;
执行完程序段后,A的内容为55H。
阅读下列程序,说明其功能。
.16MOVR0,#30H
@R0MOVA,RLA
AR1MOV,RLA
RLA
R1AADD,MOV@R0,A
答:
对程序注释如下:
MOVR0,#30H;(R0)=30H
MOVA,@R0;取数
RLA;(A)×2
MOVR1,A
RLA;(A)×4
RLA;(A)×8
ADDA,R1;(A)×10
MOV@R0,A;存数
功能:
将30H中的数乘以10以后再存回30H中。
条件:
30H中的数不能大于25,25×10=250仍为一个字节。
若30H中的数大于25,则应考虑进位。
17.已知两个十进制数分别从内部数据存储器中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部数据存储器的30H单元中。
编程实现两个十进制数求和,并把和的结果存放在内部数据存储器40H开始的单元中。
【答】程序如下:
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVR0,#40H;被加数首址.又作两个十进制数和的首址
MOVR1,#50H;加数首址
MOVR2,30H;字节长度
CLRC
PP:
MOVA,@R1;取加数
ADDCA,@R0;带进位加
DAA;二一十进制数调整
;存和A,@R0MOV
INCR0;修正地址
INCR1
DJNZR2,PP;多字节循环加
AJMP$
END
21.读程序,请⑴画出~引脚上的波形图,并标出电压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
答:
序功能:
~引脚上的波形图如图3-2所示。
②注释见源程序右边所述。
ORG0000H
START:
MOVSP,#20H
MOV30H,#01H
MOVP1,#01H;~引脚输出波形
MLP0:
ACALLD50ms;软件延时50ms
MOVA,30H
CJNEA,#08H,MLP1;判表格中数据是否取完
MOVA,#01H;取完,从表头开始取
MOVDPTR,#ITAB;表格首地址
MLP2∶MOV30H,A
MOVCA,@A+DPTR;取表格中数据
MOVP1,A
SJMPMLP0
MLP1:
INCA;表格中数据未取完,准备取下一个
MLP2SJMP
;表ITAB:
DB0,1,2,4,8
DB8,4,2,1
D50ms子程序;软件延时50ms:
…
RET
第四章P123
6.根据运算结果给出的数据到指定的数据表中查找对应的数据字。
运算结果给出的数据在片内数据存储器的40H单元中,给出的数据大小在00~0FH之间,数据表存放在20H开始的片内程序存储器中。
查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。
其对应关系为:
给出数据;000102……0DH0EH0FH
对应数据:
00A0H7DC2HFF09H3456H89ABH5678H
请编制查表程序段,加上必要的伪指令,并加以注释。
答:
程序如下:
ORG0000H
AJMPMAIN,
0RG0020H
TAB:
DBOAOH,OOH,0C2H,7DH,09H,OFFH,...,56H,34H,0.ABH,89H,DB78H,56H;数据字表
ORG0050H
MAIN:
MOVA,40H;运算结果给出的数据放在40H中
MOVDPTR,#TAB;指向数据字表首地址
RLA;由于是双字节,所以A左移1位(乘2)
MOV40H,A;结果放在40H'
MOVCA,@A+DPTR;查表,找出对应的值
MOV41H,A;查找出的数据值低字节放入41H
40H.AMOV
ADDA,#01H;查找数据的高位字节
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV42H,A。
;查找出的数据值高字节放入42H
SJMP$
注意:
数据表存放在20H开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令MOVC的功能是从程序存储器中读数据。
10.把长度为10H的字符串从内部数据存储器的输入缓冲区INBUF向设在外部数据存储器的输出缓冲区OUTBUF进行传送,一直进行到遇见回车字符“CR”结束传送或整个字符串传送完毕。
加上必要的伪指令,并对源程序加以注释。
答:
程序如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVR7,#10H;数据长度
MOVR0,#INBUF;源数据首地址
MOVDPTR,#OUTBUF;目的数据首地址
LOOP:
MOVA,@R0;把源数据的值赋给A
CJNEA,#0DH,LOOP1;是“CR”(ASCII码值为0DH)
SJMPEND1;是“CR”,则结束传送
LOOP1:
MOVX@DPTR,A;把A的值赋给目的数据
INCR0;源数据下一个地址值
INCDPTR;目的数据下一个地址值
DJNZR7,LOOP;判数据传送是否完毕
END1:
SJMPEND1
12.比较两个ASCII码字符串是否相等。
字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。
如果两个字符串相等,则置用户标志F0为0;否则置用户标志F0为1。
加上必要的伪指令,并加以注释。
(注:
每个ASCII码字符为一个字节,如ASCII码“A”表示为41H)
答:
字符串中每一个字符都可以用一个ASCII码表示。
只要有一个字符不相同,就可以判断字符串不相等。
ORG0000H'
AJMPMAIN·
ORG0030H
MAIN:
MOVR0,#30H第一个字符串的首地址
MOVR1.,#50H第二个字符串的首地址
LOOP:
MOVA,@R0第一个字符串的字符值赋给A
MOVB,@R1;第二个字符串的字符值赋给B
CJNEA,B,NEXT;两个字符值比较
字符值相等,则继续比较R0INC
DJNZ20H,LOOP;判断字符串是否比较完
CLRF0字符串相等,则F0位清0
SJMP$
NEXT:
SETBF0字符串不等,则F0位置1
SJMP$
END
例如:
(2OH)=03H,(3OH)=41H,(31H)=42H,(32H)=43H,(5OH)=41H,(51H)=
42H,(52H)=43H。
两个字符串均为“?
屃。
执行结果:
F0=0
14.80C51单片机从内部数据存储器的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
答:
分析:
带符号数以字节最高位D7的值来区分是正数(包括零)和负数。
D7=1,则该带符号数为负数。
程序如下:
POS_NUMEQU20H;正数个数
ZERO_NUMEQU21H;零个数
NEG_NUMEQU22H;负数个数
MAIN:
MOVPOS_NUM,#0;计数单位初始化为0
MOVZERO_NUM,#0
MOVNEG_NUM,#0
MOVR1,30H;数据长度
MOVR0,#31H;数据首地址
LOOP:
MOVA,@R0
JB,INC_NEG;符号位为1,该数为负数,跳转加1
CJNEA,#0,INC_POS
INCZERO_NUM;该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INCNEG_NUM
;负数个数加1
LOOP1AJMP
INC_POS:
INCPOS_NUM;该数为正数,正数个数加1
LOOP1:
INCR0;判断统计是否结束
DJNZR1,LOOP
END
例如:
已知(30H)=08H,31H单元起存放数据为:
00H,80H,7EH,6DH,2FH,34H,EDH,FFH。
执行结果:
(20H)=04H,(21H)=01H,(22H)=03H。
16.将外部数据存储器的2040H单元中的一个字节拆成2个ASCII码,分别存入内部数据存储器40H和41H单元中,试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。
加上必要的伪指令,并加以注释。
子程序的入口条件、出口功能及源代码如下:
:
答.
40H单元中。
ASCII码的数存入外部RAM的子程序人口条件:
准备拆为2个码,分别存入内部数据个ASCII子程序出口功能:
完成外部RAM单元一个字节拆成2
41H单元中。
存储器40H和1000HORG
RAM40H单元;外部B_TO_A:
MOVDPTR,#40H
,#40HR0MOV
;取数@DPTRMOVXA,
APUSH
ASCII码;低4位转换为A,#0FHANL
CHANGELCALL.
A@RO,MOV
R0INC
'POPA
ASWAP
码位转换为ASCII;高4ANLA,#0FH
CHANGELCALL
A@R0,MOV
RET
;转换子程序#0AH,NEXTCHANGE:
CJNEA,
0AH,转移NEXT2;≥NEXT:
JNC
ASCII码,数字0-9转化为A,#30H;≤9ADD
RET
码F转化为ASCII#37H;字母A~NEXT2:
ADDA,
RET
END
。
设外部(40H)=12H
。
,(41H)=32H执行程序B_TO_A后:
内部(40H)=31H
。
设外部RAM(40H)=ABH
。
,(41H)=42H后,内部(40H)=41H执行程序B_TO_A
P1口引脚输出为:
8100H单元中的值X,决定17.根据X>02X
P1=80HX=0(-128D≤X≤63D)
X变反X<0
答:
程序如下:
ORG0000H
SJMPBEGIN
ORG0030H
BEGIN:
MOVDPTR,#8100H
MOVXA,@DPTR
A,R2MOV
JB,SMALLER;有符号数<0
SJMPUNSIGNED;无符号数≥0
SMALLER:
DECA;X<0,输出-X(先减1,再取反)
CPLA
MOVP1,A
SJMPOK
UNSIGNED:
CJNEA,#00H,BIGGER;不等于0即大于0
MOVP1,#80H;X等于0,输出80H
SJMPOK
BIGGER:
CLRC;X大于0,输出A×2
RLCA;A×2
MOVP1,A
OK:
SJMP$
END
例如:
输入55H,P1口引脚输出AAH;输入00H,P1口引脚输出80H;输入F1(一15的补码),P1口引脚输出0FH。
22.编写求一组无符号数中最小值的子程序,入口条件为:
内部数据存储器的20H和21H中存数据块的起始地址,22H中存数据块的长度,求得的最小值存入30H中。
答:
程序如下:
.
;求无符号数最小值的子程序CMPI
ORG2000H
CMPI:
MOVDPL,20H
MOVDPH,21H
MOV30H,#0FFH;最小值单元初始值设为最大值
LOOP:
MOVXA,@DPTR
MOVXA,@DPTR'
CJNEA,30H,CHK;比较两个数大小
SJMPLOOP1;两个数相等,不交换
CHK:
JNCLOOP1;A较大,不交换
MOV30H,A;A较小,交换
LOOP1:
INCDPTR
DJNZ22H.LOOP
RET
注意:
30H中始终存放两个数比较后的较小值,比较结束后存放的即是最小值。
例如:
(20H)=00H,(21H)=80H.(22H)=05H。
从8000H开始存放下列数:
02H,
04H,01H,FFH,03H。
调用子程序CMPl后的结果:
(30H)=01H
p141第五章.
1.什么是中断在单片微机中中断能实现哪些功能
答:
单片机在程序执行过程中,允许外部或内部“事件''通过硬件打断程序的执行.,使其转向执行处理外部或内部“事件''的中断服务子程序;而在完成中断服务子程序以后,继续执行原来被打断的程序,这种情况称为“中断,这样的过程称为“中断响应过程。
7.80C51共有哪些中断源对其中断请求如何进行控制
答:
中断响应是有条件的,即:
·中断源申请中断;
·该中断源已被允许中断,且CPU也已允许中断;
·没有同级或高优先级中断在执行中断服务程序。
在接受中断申请时,如遇下列情况之一,硬件生成的长调用指令LCALL将被封锁:
①CPU正在执行同级或高一级的中断服务程序。
因为当一个中断被响应时,其对应的中断优先级触发器被置1,封锁了同级和低级中断。
②查询中断请求的机器周期不是执行当前指令的最后一个周期。
目的在于使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。
③当前正在执行RETI指令或执行对IE、IP的读/写操作指令。
80C51.中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。
12.80C51的中断与子程序调用有哪些异同点,请各举两点加以说明。
①相同点:
⑴都是中断当前正在执行的程序,都要通过执行返回指令,返回到原来的程序。
⑵都是由硬件自动地把断点地址压入堆栈;当执行到返回指令时,自动弹出断点地址以便返回原来的程序。
⑶都要通过软件完成现场保护和现场恢复。
⑷都可以实现嵌套。
②不同点:
⑴中断请求信号可以由外部设备发出,是随机的;子程序调用子程序却是由软件编排好的。
⑵中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。
⑶中断响应是受控的,其响应时间会受一些因素影响素;子程序响应时间是固定的。
第六章P161
1.80C51单片微机内部设有几个定时器/计数器简述各种工作方式的功能特点
答:
80C51单片机内部设有2个16位定时器/计数器TO和T1。
定时器/计数器有4种工作方式,其特点如下:
①方式O是13位定时器/计数器。
由THxT高8位(作计数器)和TLx的低5位(32分频的定标器)构成。
TLx的低5位溢出时,向THxT进位;THxT溢出时,硬件置位件TFx(可用于软件查询),并可以申请定时器中断定时器。
②方式1是16位定时器/计数器。
TLxT的低8位溢出时向THx进位(可,并可以申请定时器中断。
)用于软件查询.
③方式2是定时常数是定时自动重装载的8位定时器/计数器。
TLx作为8位计数寄存器,THx作为8位计数常数寄存器数。
当TLx计数溢出时,一方面将TFx置位,并申请中断;另一方面将THx的内容的自动重新装入TLxT中,继续计数。
由于重新装重入不影响THx的内容,所以可以多次连续再装入。
方式2对定时控制特别有用。
④方式3只适用于TO,T0被拆成两个独立的8位计数器位计TLO和THO。
TLO做8位计数器,它占用了T0的GATE、INTO、启动/停止控制位TRO、TO引脚()以及计数溢出标志位TF0和TO的中断矢量(地址为000BH)等TH0只能做8位定时器用,因为此时的外部引脚TO已为定时器/计数器TLO所占用。
这时它占用了定时器/计数器T1的启动/停止控制位TRl、计数溢出标志位
TFl.及T1中断矢量(地址为001BH)。
T0设为方式3后,定时器/计数器T1只可选方式O、1或2。
由于此时计数溢出标志位TFI.及T1中断矢量(地址为001BH)已被TH0T所占用,所以T1仅能作为波特率发生器或其他不用中断的地方。
5.在80C51单片微机系统中,已知时钟频率为6MHz,选用定时器T0方式3,请编程使P1.0和P1.l引脚上分别输出周期为2ms和400μs的方波。
加上必要的伪指令,并对源程序加以注释。
答:
机器周期为2μs,定时分别为定时分2ms和400μs。
8-TC)T×2μs,TC=38Hμs定时,400μs=(2。
计算:
4004
程序如下:
ORG0000H
00000130AJMAMAIN
ORG000BH;定时器TO中断矢量。
000B2100AJMPTIME
MAIN:
00307805MOVR0,#05H
0032758903MOV.TMOD,#03H;T0方式3,定时器中断
0035758A38MOVTL0,#38H;TLO定时400μs
0038D28CSETBTR0T;开启定时器定TL0
003AC28ECLR,TR1
003CD2A9SETBET0E;开定时器TLO中断
003ED2AFSETBEA
004080FESJMP$