微机原理与接口技术作业.docx
《微机原理与接口技术作业.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术作业.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术作业
浙江大学远程教育学院
《微机原理与接口技术》课程作业
姓名:
张鹏飞
学号:
713128202005
年级:
13春
学习中心:
华家池
第2章P52
2.80C51单片机引脚有哪些第二功能?
答:
80C51单片机的P0、P2和P3引脚都具有第二功能。
第一功能第二变异功能
P0口地址总线A0~A7/数据总线D0~D7
P2口地址总线A8~A15
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4T0(定时器/计数器0的外部输入)
P3.5T1(定时器/计数器0的外部输出)
P3.6
(外部读写存储器或1/0的写选通)
P3.7
(外部读写存储器或1/0的读选通)
4.80C51存储器在结构上有何特点?
在物理上和逻辑上各有哪几种地址空间?
访问片内数据存储器和片外数据存储器的指令格式有何区别?
答:
80C51单片机采用哈佛(Har-yard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达64KB。
1.在屋里上设有4个存储器空间
●片内程序存储器;
●片外程序存储器;
●片内数据存储器;
●片外数据存储器。
2.在逻辑上设有3个存储器地址空间
●片内、片外统一的64KB程序存储器地址空间。
●片内2568(80C52为384B)数据存储器地址空间。
片内数据存储器空间,在物理上又又包含两部分:
一对于80C51型单片机,从0~127字节为片内数据存储器空间;从128~255字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。
●片外64KB数据存储器地址空间。
在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。
访问片内RAM采用MOV指令,访问片外RAM则一定要采用MOVX指令,因为MOVX指令会产生控制信号
或
用来访问外RAM。
访问程序存储器地址空间,则应采用MOVC指令。
6.80C51单片机片内RAM低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区:
在内部RAM低128单元中,除去前面3个区,剩下的所有单元。
13.程序存储器指令地址、堆栈地址和外接数据存储器地址各使用什么指针?
为什么?
答:
程序存储器指令地址使用程序计数器PC指针,PC中存放的是下一条将要从程序存储器中取出的指令地址。
程序计数器PC变化的轨迹决定程序的流程。
PC的最基本的工作方式是自动加1。
在执行条件转移或无条件转移指令时,将转移的目的地址送入程序计数器,程序的流向发生变化。
在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送入PC,程序流向发生变化。
堆栈地址使用堆栈指示器SP,SP在80C51中存放当前的堆栈栈顶所指存储单元地址,是一个8位寄存器,对数据按照“先进后出”原则进行管理。
外接数据存储器地址使用数据DPTR,是一个16位的特殊功能寄存器,主要功能是作为片外数据存储器或1/0寻址用的地址寄存器,这时会产生
或
控制信号,用于单片机对外扩的数据存储器或1/0的控制。
数据指针DPTR也可以作为访问程序存储器的基址寄存器,这时寻址程序存储器中的表格、常数等单元,而不是寻址指令。
第3章P93
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
答:
MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器或I/O,有Ri和DPTR两种间接寻址方式。
MOVX指令执行时,在P3.7引脚上输出
有效信号或在P3.6引脚上输出
有效信号,可以用作外部数据存储器或1/0的读或写选通信号。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOVA,#55H
ANLA,#0FFH
ORL20H,A
XRLA,@R1
CPLA
答:
各指令执行结果如下:
MOVA,#55H;(A)=55H
ANLA,#OFFH;(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
答对应程序注释如下:
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,则应考虑进位。
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
答:
1程序功能:
P1.0~P1.3引脚上的波形图如下图1所示。
图1P1.0~P1.3引脚上的波形图
②注释见源程序右边所述。
ORG0000H
START:
MOVSP,#20H
MOV30H,#01H
MOVP1,#01H:
P1.0~P1.3引脚输出波形
MLP0:
ACALLD50ms:
软件延时50ms
MOVA,30H
CJNEA,@A+DPTR:
判表格中的数据是否取完?
MOVA,#01H:
取完,从表头开始取
MOVDPTR,#1TAB:
表格首地址
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
第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,LOOP1;是“CR”(ASCII码值为ODH)?
SJMPEND1;是“CR”,则结束传送
LOOP1:
MOVX@DPTR,A;把A的值赋给目的数据
INCRO;源数据下一个地址值
INCDPTR;目的数据下一个地址值
DJNZR7,LOOP;判数据传送是否完毕?
END1:
SJMPEND1
16.80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
答
程序如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOV20H,#0;统计结果存放单元初始值为0
MOV21H,#0
MOV22H,#0
MOVR0,#31H;数据首地址
LOOP:
MOVA,@R0;取数据
JBACC.7.INC_NEG;符号位为1,该数为负数,跳转加1
CJNEA,#0,ING_POS
INC21H;该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INC22H;该数为负数,负数个数加1
AJMPLOOP1
INC_POS:
INC20H;该数为正数,正数个数加1
LOOP1:
INCR0;指向下一数据地址
DJNZ30H,LOOP;判断统计是否结束
END
例如:
已知(30H)=08H,31H单元起存放数据为:
00H,80H,7EH,6DH,2FH,34H,EDH,FFH。
执行结果:
(20H)=04H,(21H)=01H,(22H)=03H。
17.两个10位的无符号二一十进制数,分别从内部RAM的40H单元和50H单元开始存放。
请编程计算该两个数的和,并从内部RAM的60H单元开始存放。
加上必要的伪指令,并对源程序加以注释。
答
分析:
10位的无符号二十一进制数,占5个字节,每个字节存放一个压缩BCD(2位)。
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVR7,#05H;十位(5个字节)计数
MOVRO,#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;恢复被加数地址
INCRO;三个地址指针均加1
INCR1
INCR2
INCR7,ADDB;多字节加未结束,则循环
HERE:
SHMPHERE
END
注意:
寄存器间接寻址只针对R0和R1,所以存和时不能使用指令MOV@R2,A。
例如:
40H~44H内容为78H,10H,10H,10H,10H
50H~54H内容为42H,10H,10H,10H,10H
即BCD数1010101078
+1010101042
2020202120
运行结果:
60H~64H单元中的数为20H,21H,20H,20H,20H
第6章P177
3.请编程实现80C51单片机产生频率为100kHz等宽矩形波(定时器/计数器T0,方式0,定时器中断),假定80C51的晶振频率为12MHz。
加上必要的伪指令,并对源程序加以注释。
答
分析:
100kHz等宽矩形波,周期为10μs,定时周期为5μs,机器周期为1μs。
计算:
方式0:
定时常数TCH=FFH,TCL=1BH。
ORG0000H
00000130AJMPMAIN
ORG000BH;定时器T0中断矢量
000B0141AJMPINTER
ORG0030H
0030758900MAIN:
MOVTMOD,#00H;写控制字,设T0为定时器,方式0
0033728CFFMOVTH0,#0FFH;写定是常数,定时为5μs
0036758A1BMOVTH0,#1BH
0039D28CSETBTR0;开启定时器T0
003BD2A9SETBET0;允许定时器T0中断
003DD2AFSETBEA;开中断
003F013FAJMP$;中断等待
;定时器T0中断服务子程序
0041758CFFINTER:
MOVTH0,#0FFH;重写定时常数
0044758A1BMOVTL0,#1BH
0047B290CPLP1.0;P1口作为输出端,变反输出
004932RETI;中断返回
END
第8章P279
2.如何构造80C51单片机并行扩展的系统总线?
答:
80C51并行扩展的系统总线有三组。
1地址总线(A0~A15):
由P0口提供8位地址A0~A7,P0口输出的低8位地址A0~A7必须用锁存器锁存,锁存器的锁存控制信号为单片机引脚ALE输出的控制信号。
由P2口提供高8位地址A8~A15。
2数据总线(D0~D7):
由P0口提供,其宽度为8位,数据总线要连到多个外围芯片上,而在同一时间里只能够有一个是有效的数据传送通道。
哪个芯片的数据通道有效,则由地址线控制各个芯片的片选线来选择。
3控制总线(CB):
包括片外系统扩展用控制线和片外信号对单片机的控制线。
系统扩展用控制线有ALE、
、
、
。
8.外接程序存储器的读信号为
,外接数据存储器的读信号为
。
14.已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,要求设定A口为基本输入,B口为基本输出,C口为输入方式。
请编写从C口读入数据后,再从B口输出的程序段。
并根据要求画出80C51与8255A连接的逻辑原理图。
加上必要的伪指令,并对源程序加以注释。
答:
已知8255A的控制寄存器地址为BFFFH,若地址线A0、A1被用做8255A端口选择信号,则8255A的C口地址为BFFFH,B口地址为BFFDH,A口地址为BFFCH。
可以选用地址线P2.6(A14)作8255A的片选线。
8255A与80C51连接图如图8-7所示。
图8-78255A与80C51连接图
程序如下:
ORG0000H
MOVDPTR,#0BFFFH;8255A控制寄存器地址
MOVA,#99H
MOVX@DPTR,A;写控制字(PA输入、PB输出、PC输入)
MOVDPTR,#0BFFEH;C口地址
MOVXA,@DPTR;PC输入
MOVDPTR,#0BFFDH;B口地址
MOVX@DPTR,A;PB输出
22.利用ADC0809芯片设计以80C51为控制器的巡回检测系统。
请画出电路连接图,并编写进行某一路模拟量转换的源程序。
加上必要的伪指令,并对源程序加以注释。
答:
巡回检测系统如图8-11所示。
图8-11巡回检测系统
分析:
8路输入通道IN0-IN7的地址为DFF8H~DFFFH。
(P2.5=0)。
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#0DFF8H;通道0地址
MOVR0,#40H;存储单元首址
LOOP:
MOVX@DPTR,A;启动A/D转换
LCALLD128μs;延时等待完成
MOVXA,@DPTR;读入转换值
MOV@R0,A;存入内存
……
D128μs:
……;延时128μs子程序
RET
END