微机原理与接口技术作业含答案剖析.docx
《微机原理与接口技术作业含答案剖析.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术作业含答案剖析.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术作业含答案剖析
浙江大学远程教育学院
《微机原理与接口技术》课程作业
姓名:
学号:
年级:
学习中心:
第2章P52
2.80C51单片机引脚有哪些第二功能?
第一功能第二功能
P0.0~P0.7地址总线Ao~A7/数据总线D0~D7
P2.0~P2.7地址总线A8~A15
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0外部中断0)
P3.3IINT1(外部中断1)
P3.4TO(定时器/计数器0的外部输入)
P3.5T1(定时器/计数器0的外部输出)
P3.6WR(外部数据存储器或I/O的写选通)
P3.7RD外部数据存储器或I/O的读选通)
4.80C51单片机的存储器在结构上有何特点?
在物理上和逻辑上各有哪几种地址空间?
访问片内RAM和片外RAM的指令格式有何区别?
1、80C5l单片机采用哈佛结构,即将程序存储器和数据存储器截然分开,分别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有较强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围都可达64KB。
2、在物理上设有4个存储器空间
·片内程序存储器;
·片外程序存储器;
·片内数据存储器;.
·片外数据存储器。
在逻辑上设有3个存储器地址空间
●片内、片外统一的64KB程序存储器地址空间。
●片内256字节(80C52为384字节)数据存储器地址空间。
片内数据存储器空间在物理上又包含两部分:
●对于80C51型单片机,0~127字节为片内数据存储器空间;128~255字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。
●对于80C52型单片机,O~127字节为片内数据存储器空间;128~255字节共128个字节是数据存储器和特殊功能寄存器地址重叠空间。
片外64KB的数据存储器地址空间。
3、在访问3个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。
访问片内RAM采用MOV指令,访问片外RAM则一定要采用MOVX指令,因为MOVX指令会产生控制信号RD或WR,用来访问片外RAM。
访问程序存储器地址空间,则应采用MOVC指令。
6.80C51单片机片内RAM低128个存储单元划分为哪3个主要部分?
各部分主要功能是什么?
80C51片内RAM的低128个存储单元划分为3个主要部分:
1、寄存器区。
共4组寄存器,每组8个存储单元,各组以R0~R7作为单元编号。
常用于保存操作数及中间结果等。
:
R0~R7也称为“通用工作寄存器”,占用00H~1FH共32个单元地址。
2、位寻址区。
单元地址为20H~2FH,既可作为一般RAM单元使用,按字节进行操作,也可对单元中的每一位进行位操作。
因此,称为“位寻址区”。
寻址区共有16个RAM单元,共计128位,位地址为OOH~7FH。
3、用户RAM区。
在内部RAM低128单元中,除去前面两个区,剩下80个单元,单元地址为30H~7FH。
在用户RAM区内可以设置堆栈区。
13.程序存储器指令地址、堆栈地址和外接数据存储器地址各使用什么指针?
为什么?
1、程序存储器指令地址使用程序计数器PC指针,PC中存放的是下一条将要从程序存储器中取出的指令的地址。
程序计数器PC变化的轨迹决定程序的流程。
PC最基本的工作方式是自动加1。
在执行条件转移或无条件转移指令时,将转移的目的地址送入程序计数器,程序流向发生变化。
在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送人PC,程序流向发生变化。
2、堆栈地址使用堆栈指针.SP。
SP在80C51中存放当前的堆栈栈顶所指存储单元地址,是一个8位寄存器,对数据按照“先进后出”原则进行管理。
外接数据存储器地址使用数据指针DPTR。
DPTR是一个16位特殊功能寄存器,主要功能是作为片外数据存储器或I/0寻址用的地址寄存器,这时会产生RD或wR控制信号,用于单片机对外扩的数据存储器或I/0的控制。
3、数据指针DPTR也可以作为访问程序存储器时的基址寄存器,此时是寻址程序存储器中的表格、常数等单元,而不是寻址指令。
第3章P93
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器.有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)=55H
ANLA,#0FFH;(A)=55H
ORL20H,A;(20H)=FFH
XRLA,@R1;(A)=AAH
CPLA;(A)=55H
执行完程序段后,A的内容为55H
16.阅读下列程序,说明其功能。
MOVR0,#30H
MOVA,@R0
RLA
MOVR1,A
RLA
RLA
ADDA,R1
MOV@R0,A;
功能:
将30H中的数乘以10以后再存回30H中。
条件:
30H中的数不能大于25,25×10=250仍为一个字节。
若30H中的数大于25,则应考虑进位。
21.读下列程序,请完成下列任务:
①画出P1.0~P1.3引脚上的波形图,并标出电压V-时间t坐标。
②对源程序加以注释。
ORG0000H
START:
MOVSP,#20H
MOV30H,#01H
MOVP1,#01H
MLP0:
ACALLD50ms
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:
…
RET
P1.O~P1.3引脚上的波形图如图所示。
注释说明:
判断表格中数据是否取完?
取完,从表头开始取
给出表格首地址
取表格中数据
表格中数据未取完,准备取下一个
软件延时50ms子程序
第4章P132
10.把长度为10H的字符串从内部RAM的输入缓冲区INBUF向设在外部RAM的输出缓冲区OUTBUF进行传送,一直进行到遇见字符“CR”时停止,如字符串中无字符“CR”,则整个字符串全部传送。
加上必要的伪指令,并对源程序加以注释。
程序如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVR7,#10H;数据长度
MOVR0,#INBUF;源数据首地址
MOVDPTR,#OUTBUF;目的数据首地址
LOOP:
MOVA,@R0;把源数据的值赋给A
CJNEA,#0DH,LOOPl;判断是否为“CR”(ASCII码值为0DH)
SJMPENDl;是“CR",则结束传送
LOOPl:
MOVX@DPTR,A;把A的值赋给目的数据
INCR0;源数据下一个地址值
INCDPTR;目的数据下一个地址值
DJNZR7,L00P;判断数据传送是否完毕
ENDI:
SJMPENDI
END
14.80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
程序如下:
LENGTHEQU30H;数据长度
DATA_ADREQU31H;数据首地址
POS_NUMEQU20H;正数个数
ZERO_NUMEQU21H;0个数
NEG_NUMEQU22H;负数个数
ORG0000H
AJMPMAIN,
ORG0030H
MAIN:
MOVPOS_NUM,#0;计数单元初始化为0
MOVZERO_NUM,#0
MOVNEG_NUM,#0
MOVR1,#LENGTH;数据长度
MOVR0,#DATA_ADR;数据首地址
LOOP:
MOVA,@R0.
JBACC.7,INC_NEG;符号位为1,该数为负数,跳转加1
CJNEA,#0,INC_POS
INCZERO_NUM;该数为0,0个数加1
AJMPL00P1
INCNEG:
INCNE~_NUM;负数个数加1
AJMPLOOPl.
INC_POS:
INCPOS_NUM;该数为正数,正数个数加1
LOOPl:
INCR0;判断统计是否结束
DJNZR1,LOOP
END
15.两个10位的无符号二一十进制数,分别从内部RAM的40H单元和50H单元开始存放。
请编程计算该两个数的和,并从内部RAM的60H单元开始存放。
加上必要的伪指令,并对源程序加以注释。
10位的无符号二~十进制数,占5字节,每个字节存放一个压缩BCD码(2位)。
ORG0000H
AJMPMAIN
0Re0030H
MAIN:
MOVR7,#05H;十位(5字节)计数
MOVR0,#40H;被加数首址
MOVR1,#50H;加数首址
MOVR2,#60H;和数首址
CLRC;清C标志位
ADDB:
MOVA,@R0
ADDCA,@R1
DAA;二一十进制调整
MOVB,R0;保护被加数地址
MOV20H,R2
MOVR0,20H
MOV@R0,A;存和
MOVR2,20H;恢复和数地址
MOVR0,B;恢复被加数地址
INCR0;三个地址指针均加1
INCR1
INCR2
DJNZR7,ADDB;多字节加未结束,则循环
HERE:
SJMPHERE
END
第6章P177
4.请编程实现80C51单片机产生频率为100kHz等宽矩形波(定时器/计数器T0,方式0,定时器中断),假定80C51的晶振频率为12MHz。
加上必要的伪指令,并对源程序加以注释。
100kHz等宽矩形波,周期为10us,定时周期为5us,机器周期为1s。
计算:
TC=213一(12X106X5X106)÷12=8187=1FFBH
方式0:
定时常数TCH=FFH,TCL=1BH。
·
程序如下:
ORG0000H
00000130AJMPMAIN
ORG000BH定时器T0中断矢量
000B0141AJMPINTER‘
ORG0030H
0030758900MAIN:
MOVTMOD,#00H;写控制字,设TO为定时器,方式O
0033758CFFMOVTH0,#OFFH;写定时常数,定时为5μ
0036758AIBMOVTL0,#IBH
0039D28cSETBTR0;开启定时器T0
003BD2A9SETBET0;开定时器T0中断’
003DD2AFSETBEA;开中断
003F013FAJMP$;中断等待‘
定时器T0中断‘
0041758CFFINTER:
MOVTH0,#0FFH;重写定时常数
0044758AIBMOVTL0,#IBH
0047B290CPLP1.0;P1口作为输出端,P1.0变反输出
004932RETI;中断返回
END
第8章P279
2.如何构造80C51单片机并行扩展的系统总线?
总线有:
1、片内总线;
2、片总线(又称元件级总线或局部总线).
3、内总线(又称微型机总线或板级总一般称为系统总线)
4、外总线(又称通信总线).
总线的类型:
1、地址总线.是微机用来传送地址的信号线.2、数据总线.传送数据和代码的总一般为双向信号线,3、控制总线.传送控制信号的总线,用来实现命令,状态传送,中断,储器传送的请求与控制信号传送,以及提供系统使用的时钟和复位信号等.
8.外接程序存储器的读信号为
,外接数据存储器的读信号为
。
14.已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,要求设定A口为基本输入,B口为基本输出,C口为输入方式。
请编写从C口读入数据后,再从B口输出的程序段。
并根据要求画出80C51与8255A连接的逻辑原理图。
加上必要的伪指令,并对源程序加以注释。
1.ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#2000H
MOVB,20H;设定的温度值送B
MOVXA,@DPTR;取实测温度值
CLRC
SUBBA,B
JNCLOWER;实测温度值>设定温度值,P1.0输出低电平
MOVB,20H;取设定的温度值
MOVXA,@DPTR;取实测温度值
CLRC
SUBBA,B
JCHIGH;实测温度值<设定温度值,P1.0输出高电平
SJMPMAIN;实测温度值=设定温度值,P1.0输出不变
LOWER:
CLRP1.0
SJMPMAIN
HIGH:
SETBP1.0
SJMPMAIN
END
2.
答:
ORG0000H
MOVDPTR,#2000H;无符号数存放单元首址
MOVR1,#10D;无符号数长度
MOV40H,#00H;最大值存放单元预置为最小值
STEP:
MOVXA,@DPTR;取数
CJNEA,40H,STEP1;比较大小
SJMPNEXT;(A)=(40H),不交换
STEP1:
JCNEXT;(A)<(40H),不交换
MOV40H,A;(A)>(40H),则较大值存入40H中
NEXT:
INCDPTR
DJNZR1,STEP
SJMP$
END
22.利用ADC0809芯片设计以80C51为控制器的巡回检测系统。
请画出电路连接图,并编写进行某一路模拟量转换的源程序。
加上必要的伪指令,并对源程序加以注释。
巡回检测系统连接如图所示:
ADC0809的IN0通道地址为7FF8H。
计算:
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
LOOP:
MOVDPTR,#7FF8H;A/D通道0地址
MOVR0,#20H;数据存入地址
MOVX@DPTR,A;启动A/D转换
LCALLD128μs;A/D转换等待
MOVXA,@DPTR;读入A/D转换后的数据
MOV@R0,A;存入内部RAM
……;中断返回
D128μs:
……;延时子程序(可以直接调用)
RET
END
《微机原理与接口技术》实验作业
[第一部分简答题]
1.80C51单片微机内部有哪几个常用的地址指针,它们各有什么用处。
80C51单片微机内部有三个常用的指针,即
PC-程序计数器,存放下一条将要从程序存储器取出的指令的地址。
SP-堆栈指示器,指向堆栈栈顶。
DPTR-数据指针,作为外部数据存储器或I/O的地址指针。
2.简述80C51的程序状态字PSW的主要功能。
PSW的主要部分是算术逻辑运算单元ALU的输出。
有些位根据指令运算结果,由硬件自动生成。
如OV为溢出标志位,用于指示8位带符号数运算后有否超出8位带符号数允许范围。
C标志为进位/借位标志位。
多倍精度的加减法运算。
3.80C51访问片内外不同存储空间时采用哪3类传送指令。
MOV传送指令用于访问片内数据存储器。
MOVC传送指令用于对程序存储器内的表格进行查表操作。
MOVX传送指令用于访问片外数据存储器或I/O,因为执行MOVX指令时会产生控制信号
或
。
4.简述80C51单片微机内部RAM低128字节4个主要区域的特点。
寄存器区:
共4组寄存器,每组8个存储单元,以R0~R7作为单元编号。
位寻址区:
20H~2FH中的每一位进行位操作。
堆栈区:
设置在用户RAM区内,数据先进后出。
用户RAM区:
除去前面3个区,剩下的所有单元。
5.简述80C51单片微机的并行扩展三总线(AB、DB和CB)如何构成及应用。
AB共16位,由P0口经锁存后得到A0-A7、P2口构成A8-A15。
作地址总线。
DB由P0口分时构成。
作数据总线。
CB主要有ALE、/RD、/WR、/PSEN等。
作控制总线。
6.为什么要进行低功耗设计?
实现绿色电子,节约能源。
某些场合(如野外)要求便携并由电池供电,要求功耗小。
能提高应用系统可靠性,因为在低功耗下,单片微机对干扰不敏感
7.说明80C51单片微机的复位方式主要有哪几种。
主要有上电复位方式、按键电平复位方式和外脉冲复位方式
8.80C51芯片内部主要集成逻辑功能部件有哪些?
有中央处理器、存储器、定时器/计数器、I/O口等
9.80C51的程序存储器中有几个特定地址。
0000H为复位后PC初始值,0003H为外部中断0中断矢量地址,000BH为T0中断矢量地址,0013H为外部中断1中断矢量地址,001BH为T1中断矢量地址和0023H为串行口中断矢量地址
10.请简述如何在实验室完成实验任务,使用哪些资源?
仿真软件由WAVE的编辑软件及MICETEK公司的EasyProbe8052F仿真软件组成,源程序在PC上进行编辑、编译,将编译通过后所生成的后缀名为HEX的机器码文件,通过RS—232串行口下载给仿真器,仿真器采用MICETEK公司的EasyProbe8052F仿真器。
在仿真器上完成实验的验证、修改和完善
[第二部分读程序]
要求:
⑴直接在源程序“;”右侧对程序加以注释。
⑵写出程序功能和运行后结果。
程序1ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#2000H;被加数首地址
MOVR0,#10H;加数首地址
MOVR1,#20H;和首地址
MOVR2,#05H;5字节相加
CLRC
ADDA:
MOVXA,@DPTR;取被加数
ADDCA,@R0;加上加数
DAA;二-十进制数校正
MOV@R1,A;和存入
INCDPTR;修正地址
INCR0
INCR1
DJNZR2,ADDA;5字节BCD码数加法循环
AJMP$
END
⑵程序功能:
将片外数据存储器中被加数与片内数据存储中加数以5个字节长度的BCD码数形式相加,和存入20H-24H
问题1:
若删去”DAA”一行,
则程序功能为:
”以5个字节长度的二进制数相加,和存入20H-24H
问题2:
若”MOVR2,#05H”改为”MOVR2,#02H”,
则程序功能:
”以2个字节长度的BCD码数相加,和存入20H-24H”。
问题3:
若和需存入10H-14H中,
则修改MOV@R0,A;和存入
程序2
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#TAB;指向表首址
MOVA,#02H;取查表值
MOVCA,@A+DPTR;查表
MOVR0,A;查表结果存R0中
SJMP$
ORG2080H
TABDB00H,11H,22H,33H……;表(略)
END
程序功能:
此为查表程序,需要查的值为02H,通过查表得到对应结果。
运行后结果:
1问题1:
若”MOVA,#02H”改为”MOVA,#03H”,
则运行后结果:
(R0)=33H。
2问题2:
若运行后结果为00H,则修改
MOVA,#00H