微机原理与接口技术离线作业.docx
《微机原理与接口技术离线作业.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术离线作业.docx(24页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术离线作业.docx](https://file1.bdocx.com/fileroot1/2023-1/3/0bed96f8-3491-4f50-801a-2c7f5f3ef6cf/0bed96f8-3491-4f50-801a-2c7f5f3ef6cf1.gif)
微机原理与接口技术离线作业
浙江大学远程教育学院
《微机原理与接口技术》课程作业
姓名:
范淑芳
学号:
715100202041
年级:
西溪15秋1班
学习中心:
西溪直属
—————————————————————————————
第二章P47
2.80C51单片微机芯片引脚第二功能有哪些?
第一功能第二变异功能
P0.0~P0.7地址总线A0~A7/数据总线D0~D7
P2.0~P2.7地址总线A8~A15
P3.0RXD串行输入
P3.1TXD串行输入
P3.2INTO外部中断0
P3.3INT1外部中断1
P3.4TO定时器/计数器0的外部输入
P3.5T1定时器/计数器0的外部输出
P3.6WR外部数据存储器或I/O的写选通
P3.7RD外部数据存储器或I/O的读选通
4.80C51存储器在结构上有何特点?
在物理上和逻辑上各有哪几种地址空间?
访问片内数据存储器和片外数据存储器的指令格式有何区别?
答80C51单片机采用哈佛Har-yard结构即将程序存储器和数据存储器截然分开分
别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存
器而且还具有较强的外部存储器扩展能力扩展的程序存储器和数据存储器寻址范围都可
达到64KB。
1.在物理上设有4个存储器空间
片内程序存储器
片外程序存储器
片内数据存储器
片外数据存储器
2.在逻辑上设有3个存储器地址空间
片内、片外统一的64KB程序存储器地址空间
片内256字节(80C52为384字节)数据存储器地址空间
片内数据存储器空间在物理上又包含两部分
对于80C51型单片机0~127字节为片内数据存储器空间;128~255字节为特殊功
能寄存器SFR空间实际仅占用了20多个字节
对于80C52型单片机0~127字节为片内数据存储器空间;128~255字节共128
个字节是数据存储器和特殊功能寄存器地址重叠空间。
片外64KB的数据存储器地址空间。
在访问3个不同的逻辑空间时应采用不同形式的指令以产生不同存储空间的选
通信号。
访问片内RAM采用MOV指令访问片外RAM则一定要采用MOVX指令因为
MOVX指令会产生控制信号RD或WR用来访问片外RAM。
访问程序存储器地址空间
则应采用MOVC指令。
6.80C51片内数据存储器低128个存储单元划分为哪4个主要部分?
各部分主要功能是什么?
答80C51片内RAM的低128个存储单元划分为4个主要部分
寄存器区。
共4组寄存器每组8个存储单元各组以R0~R7作为单元编号。
常用于保存操作数及中间结果等。
R0~R7也称为“通用工作寄存器”占用00H~1FH
共32个单元地址。
位寻址区。
单元地址为20H~2FH既可作为一般RAM单元使用按字节进行操作
也可对单元中的每一位进行位操作。
因此称为“位寻址区”。
寻址区共有16个RAM单
共计128位位地址为00H~7FH。
用户RAM区。
在内部RAM低128单元中出去前面两个区剩下80个单元单元
地址为30H~7FH。
在用户RAM区内可以设置堆栈区。
堆栈区及堆栈指示器SP。
其具体功能有两个保护断点和保护现场。
在80C51单片微
机中堆栈在子程序调用和中断时会把断点地址自动进栈和出栈还有对堆栈的进栈和栈
的指令PUSH、POP操作用于保护现场和恢复现场。
第三章P87
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
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
17.已知两个十进制数分别从内部数据存储器中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部数据存储器的30H单元中。
编程实现两个十进制数求和,并把和的结果存放在内部数据存储器40H开始的单元中。
答:
程序如下:
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVR0,#40H
MOVR1,#50H
MOVR2,#30H
CLRC
PP:
MOVA,@R1
ADDCA,@R0
DAA
MOV@R0,A
INCR0
INCR1
DJNZR2,PP
AJMP$
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
第四章P123
6.根据运算结果给出的数据到指定的数据表中查找对应的数据字。
运算结果给出的数据在片内数据存储器的40H单元中,给出的数据大小在00~0FH之间,数据表存放在20H开始的片内程序存储器中。
查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。
其对应关系为:
给出数据;000102……0DH0EH0FH
对应数据:
00A0H7DC2HFF09H3456H89ABH5678H
请编制查表程序段,加上必要的伪指令,并加以注释。
答:
程序如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVA,40H
MOVDPTR,#TAB
RLA
MOV40H,A
MOVCA,@A+DPTR
MOV41H,A
MOVA,40H
INCA
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV42H,A
SJMP$
ORG0070H
TAB:
DB0A0H,00H,0C2H,7DH,09H,0FFH,...,56H,34H
DB0ABH,89H,78H,56H
10.把长度为10H的字符串从内部数据存储器的输入缓冲区INBUF向设在外部数据存储器的输出缓冲区OUTBUF进行传送,一直进行到遇见回车字符“CR”结束传送或整个字符串传送完毕。
加上必要的伪指令,并对源程序加以注释。
答:
程序如下:
ORG000H
AJMPMAIN
ORG0030H
MAIN:
MOVR7,#10H;数据长度
MOVR0,#INBUF;源数据首地址
MOVDPTR,#OUTBUF;目的数据首地址
LOOP:
MOVA,@R0;把源数据的值赋给A
CJNEA,#0DH,LOOP1;判是否是字符“CR”
SJMPEND1;是字符“CR”,则结束传送
LOOP1:
MOVX@DPTR,A;把A中的源数据赋给目的数据区
INCR0;源数据地址加1
INCDPTR;目的数据地址加1
DJNZR7,LOOP;判断数据是否传送完毕
END1:
SJMPEND1
END
12.比较两个ASCII码字符串是否相等。
字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。
如果两个字符串相等,则置用户标志F0为0;否则置用户标志F0为1。
加上必要的伪指令,并加以注释。
(注:
每个ASCII码字符为一个字节,如ASCII码“A”表示为41H)
答:
字符串中每一个字符都可以用一个ASCII码表示。
只要有一个字符不相同,就可以判定字符串不相同。
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVR0,#30H;第一个字符串的首地址
MOVR1,#40H;第二个字符串的首地址
LOOP:
MOVA,@R0;第一个字符串的字符值赋给A
MOVB,@R1;第二个字符串的子符值赋给B
CJNEA,B,NEXT;比较两个字符值,若有不相同则转
INCR0
INCR1
DJNZ20H,LOOP;判字符串是否比较完
CLRF0;字符串相等,则F0位清零
SJMP$
NEXT:
SETBF0;字符串不等,则F0位置1
SJMP$
END
14.80C51单片机从内部数据存储器的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
答:
程序如下:
ORG000H
AJMPMAIN
ORG0030H
MAIN:
MOV20H,#0;统计结果存放单元初始值为0
MOV21H,#0
MOV22H,#0
MOVR0,#31H;数据首地址
LOOP:
MOVA,@R0;取数据
JBACC.7,INC_NEG;符号位为1,表示该数为负,跳转加1CJNEA,#0,INC_POS
INC21H;该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INC22H;该数为负数,负数个数加1
AJMPLOOP1
INC_POS:
INC20H;该数为正数,正数个数加1
LOOP1:
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码
INCR0
POPA
SWAPA
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码
RET
END
17.根据8100H单元中的值X,决定P1口引脚输出为:
2XX>0
P1=80HX=0(-128D≤X≤63D)
X变反X<0
答:
程序如下:
ORG0000H
SJMPBEGIN
ORG0030H
BEGIN:
MOVDPTR,#8100H;取X值
MOVXA,@DPTR
MOVR2,A
JBACC.7,SMALLER;X<0
SJMPUNSIGNED;X≥0
SMALLER:
DECA;X<0,P1输出-X(先减1,再取反)CPLA
MOVP1,A
SJMPOK
UNSIGNED:
CJNEA,#00H,BIGGER;不等于0即大于0
MOVP1,#80H;X=0,P1输出80H
SJMPOK
BIGGER:
CLRC;X>0,P1输出2X
RLCA
MOVP1,A
OK:
SJMP$
END
22.编写求一组无符号数中最小值的子程序,入口条件为:
内部数据存储器的20H和21H中存数据块的起始地址,22H中存数据块的长度,求得的最小值存入30H中。
答:
程序如下:
求无符号数最小值的子程序CMP1
ORG2000H
CMP1:
MOVDPL,20H;数据块起始地址DPTR
MOVDPH,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单片微机内部设有几个定时器/计数器?
简述各种工作方式的功能特点?
答:
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中断矢量。
000B2100AJMPTIME
MAIN:
00307805MOVR0,#05H
0032758903MOV.TMOD,#03H;T0方式3,定时器中断0035758A38MOVTL0,#38H;TLO定时400μs
0038D28CSETBTR0;开启定时器TL0
003AC28ECLR,TRl
003CD2A9SETBET0;开定时器TLO中断003ED2AFSETBEA
004080FESJMP$;中断等待
ORG0100H.
TIME:
0100758A38MOVTL0,#38H;TL0定时400~s
0103B291CPL.P1.1;400μs定时到,P1.1输出变反0105D804DJNZR0,RETURN
01077805MOVR0,#05H
0109B290CP[.P1.0;400μs*5=2ms到,P1.O输出变反RETURN:
010B32RETI
END
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,8位UART,波特率为晶振的1/32或1/64,9位UART ,波特率可变。
第八章P259
1.简述单片微机系统扩展的基本原则和实现方法。
答:
系统扩展是单片机应用系统硬件设计中最常遇到的问题。
系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统要求。
80C51系列单片机有很强的外部扩展能力,外围扩展电路芯片大多是一些常规芯片,扩展电路及扩展方法较为典型、规范。
用户很容易通过标准扩展电路来构成较大规模的应用系统。
对于单片机系统扩展的基本方法有并行扩展法和串行扩展法两种。
并行扩展法是指利用单片机的三组总线((地址总线AB、数据总线DB和控制总线CB进行的系统扩展;串行扩展法是指利用SPI三线总线和I2C双线总线的串行系统扩展。
①外部并行扩展
单片机是通过芯片的引脚进行系统扩展的。
为了满足系统扩展要求,80C51系列系列单片机芯片引脚可以构成三总线结构,即地址总线AB、数据总线DB和控制总线CB。
单片机所有的外部芯片都通过这三组总线进行扩展。
②外部串行扩展
80C51系列单片机的串行扩展包括:
SPI(SerialPeripheralInterface)三线总线和I2C双总线两种。
在单片机内部不具有串行总线时,可利用单片机的两根或三根I/O引脚甩软件来虚拟串行总线的功能。
2.如何构造80C51单片机并行扩展的系统总线?
答:
80C51并行扩展的系统总线有三组。
①地址总线(A0~A15):
由P0口提供低8位地址A0~A7,P0口输出的低8位地址A0~A