微机原理与接口技术离线作业Word格式文档下载.docx
- 文档编号:16538614
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:49.99KB
微机原理与接口技术离线作业Word格式文档下载.docx
《微机原理与接口技术离线作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术离线作业Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送人PC,程序的流向发生变化。
堆栈地址使用堆栈指示器SP,SP在80C51单片机中存放当前的堆栈栈顶所指存储单元地址,是一个8位寄存器,对数据按照“先进后出”原则进行管理。
外接数据存储器使用的数据指针DPTR,是一个16为的特殊功能寄存器,主要功能是作为片外数据存储器用地址寄存器,这时会产生RD或WR控制信,用于单片机对外扩的数据存储器的读或写控制。
数据指针DPTR也可以作为访问程序存储器时的基址寄存器,这时,寻址的是程序寄存器中的表格、常数等单元,而不是寻址指令地址。
第3章P93
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
1、MOV指令用于对内部数据存储器的访问。
2、MOVC指令用于对程序存储器的访问,从程序存储器中读取数据。
3、MOVX指令采用间接寻址的方式访问外部数据存储器或I/O,有Ri或DPTR两种间接寻址方式,MOVX指令执行时,在P3.7引脚上输出RD有效信号或在P3.6引脚上输出WR有效信号,可以作为单片机扩展外部存储器或I/O的读或写选通信号。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOVA,#55H;
(A)=55H
ANLA,#0FFH;
ORL20H,A;
(20H)=FFH
XRLA,@R1;
(A)=AAH
CPLA;
执行完程序段后,A的内容为55H.
16.阅读下列程序,说明其功能。
MOVR0,#30H;
(R0)=30H
MOVA,@R0;
30H单元内容送A
RLA;
将A中的内容循环左移1位
MOVR1,A;
将A中的内容送到R1
ADDA,R1;
将R1中内容与A中的内容相加,得到和送到A中
MOV@R0,A;
将求和的结果送到30H单元中
21.读下列程序,请完成下列任务:
①画出P1.0~P1.3引脚上的波形图,并标出电压V-时间t坐标。
②对源程序加以注释。
ORG0000H
START:
MOVSP,#20H;
设堆栈指示器初值
MOV30H,#01H;
P1输出第一拍
MOVP1,#01H;
P1引脚输出波形
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;
P1引脚输出波形表
DB8,4,2,1
D50ms:
…;
软件延时50ms
RET
第4章P132
10.把长度为10H的字符串从内部RAM的输入缓冲区INBUF向设在外部RAM的输出缓冲区OUTBUF进行传送,一直进行到遇见字符“CR”时停止,如字符串中无字符“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
14.80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
程序如下:
MAIN:
MOV20H,#0;
统计结果存放单元初始值为0
MOV21H,#0
MOV22H,#0
MOVR0,#31H;
数据首地址
LOOP:
取数据
JBACC.7,INC_NEG;
符号位为1,表示该数为负,跳转加1
CJNEA,#0,INC_POS
INC21H;
该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INC22H;
该数为负数,负数个数加1
INC_POS:
INC20H;
该数为正数,正数个数加1
指向下一个数据地址
DJNZ30H,LOOP;
判断统计是否结束
15.两个10位的无符号二一十进制数,分别从内部RAM的40H单元和50H单元开始存放。
请编程计算该两个数的和,并从内部RAM的60H单元开始存放。
答:
10位无符号二一十进制数,占5个字节,每个字节存放一个压缩BCD码
ORG0000H
MOVR7,#05H;
十位(5个字节)计数
MOVR0,#40H;
被加数首址
MOVR1,#50H;
加数首址
MOVR2,#60H;
和数首址
CLRC;
清C标志位
ADDB:
取被加数
ADDCA,@R1;
与加数相加
DAA;
进行二—十进制调整
MOVB,R0;
保护被加数地址
MOV20H,R2
MOVR0,20H
MOV@R0,A;
存和
MOVR2,20H;
恢复和数地址
MOVR0,B;
恢复被加数地址
INCR0;
三个地址指针均加1
INCR1
INCR2
DJNZR7,ADDB;
多个字节加未结束,则循环
HERE:
SJMPHERE
第6章P177
4.请编程实现80C51单片机产生频率为100kHz等宽矩形波(定时器/计数器T0,方式0,定时器中断),假定80C51的晶振频率为12MHz。
100kHz等宽矩形波,其周期为10微秒,则定时周期为5微秒,机器周期为1微秒。
TC=213-(12*106*5*10-6)/12=8187=1FFBH=0001111111111011B
方式0:
定时常数0001111111111011
TCH=FFH,TCL=1BH
00000130AJMPMAIN
ORG000BH;
定时器T0中断矢量
000B0141AJMPINTER
0030758900MAIN:
MOVTMOD,#00H;
写控制字,设T0为定时器,方式0
0033758CFFMOVTH0,#0FFH;
写定时器常数,定时5微秒
0036758A1BMOVTL0,#1BH
0039D28CSETBTR0;
开启定时器T0
003BD2A9SETBET0;
允许定时器T0中断
003DD2AFSETBEA;
允许CPU中断
003F013FAJMP$;
中断等待
;
定时器T0中断服务子程序
0041758CFFINTER:
MOVTH0,#0FFH;
重写定时常数
0044758A1BMOVTL0,#1BH
0047B290CPLP1.0;
P1口作为输出端,变反输出
004932RET1;
中断返回
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、PSEN、EA、WR、RD
8.外接程序存储器的读信号为PSEN,外接数据存储器的读信号为RD。
14.已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,要求设定A口为基本输入,B口为基本输出,C口为输入方式。
请编写从C口读入数据后,再从B口输出的程序段。
并根据要求画出80C51与8255A连接的逻辑原理图。
已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,若地址线A0、A1被用作8255A端口选择信号,则8255A的C口地址为BFFEH,B口地址为BFFDH,A口地址BFFCH。
可以选用地址线P2.6(A14)作8255A的片选线。
ORG000H
MOVDPTR,#0BFFFH;
8255A控制寄存器地址
MOVA,#99H
MOVX@DPTR,A;
写控制字(PA输入、、PC输入)
MOVDPTR,#0BFFEH;
C口地址
MOVXA,@DPTR;
PC输入
MOVDPTR,#0BFFDH;
B口地址
PB输出
22.利用ADC0809芯片设计以80C51为控制器的巡回检测系统。
请画出电路连接图,并编写进行某一路模拟量转换的源程序。
巡回检测系统如上图所示。
8路输入通道地址国DFF8H-DFFFH。
8路输入的采样周期为0.8us,ADC0809芯片共有8路模拟量输入通道,所以每一路通道输入模拟量的采样时间为0.8s/8=0.1s=100ms。
采用定时器中断采样,每隔100ms对一路模拟量进行转换。
当fosc=12MHz时,机器周期为1us,定时器/计数器方式1的最长定时时间约为65ms。
现设定时间为50ms,定时中断两次即为定时100ms。
计算:
(216-TC)×
1us=50ms,TC=3CB0H。
ORG0000H
AJMPMAIN
ORG000BH;
AJMPTIMER0_INT
ORG0030H
MOVTMOD,#01H;
设T0为定时器、方式1
MOVTH0,#3CH;
设T0定时50ms定时常数
MOVTL0,#0B0H
MOVR4,#2;
两次中断产生100ms
MOVR1,#08H;
转换8路计数器
MOVDPTR,#0DFF8H;
设通道0地址
MOVR0,#40H;
设数据存储单元首地址
SETBTR0;
启动T0定时器
SETBET0;
允许T0中断
SETBEA;
AJMP$;
定时中断等待
TIMER0-INT:
DJNZR4,AGAIN;
若50ms定时未到2次,则转AGAIN
MOVR4,#02H
MOVX@DPTR,A;
100ms定时到,则启动一路AD转换
LCALLD128us;
延时等待AD转换完成
MOVXA,@DPTR;
读入AD转换值
MOV@R0,A;
存入AD转换值
INCDPTR;
指向AD下一通道地址
INCR0;
指向下一数据存储单元
DJNZR1,END1;
8路转换未结束,则循环
重置转换8路计数器
重置通道0地址
重置数据存储单元首地址
AGAIN:
MOVTH0,#3CH;
重置定时器常数
MOVTL0,#B0H
END1:
RETI
D128US:
……;
延时128us子程序(略)
END
《微机原理与接口技术》实验作业
[第一部分简答题]
1.80C51单片微机内部有哪几个常用的地址指针,它们各有什么用处。
80C51单片微机内部有三个常用的指针,即:
PC是程序计数器,存放下一条将要从程序存储器取出的指令的地址。
SP是堆栈指示器,指向堆栈栈顶。
DPTR是数据指针,作为外部数据存储器或I/O的地址指针。
2.简述80C51的程序状态字PSW的主要功能。
程序状态字是一个程序可访问的8位寄存器,其内容的主要部分是算术逻辑运算单元ALU的输出。
PSW中各位的含义如下:
P是奇偶标志位。
该位表示累加器A中位值为1的个数的奇偶性。
OV是溢出标志位。
该位表示运算结果超出了目的寄存器A所能表示的带符号数的范围。
RS1和RS0是4组工作寄存器组选择位。
该两位用于设定当前工作寄存器的组号。
AC是辅助进位标志位。
该位表示当进行加法或减法运算时,若低4位向高4位发生进位或借位时,AC将被硬件置位。
CY是进位标志位。
该位表示当进行算术运算时,运算结果中高位有进位或借位时,CY将被硬件置位。
F0是用户标志位。
留给用户使用,用户根据需要进行设置。
3.80C51访问片内外不同存储空间时采用哪3类传送指令。
MOV指令用于对内部数据存储器的访问;
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等);
MOVX指令采用间接寻址方式访问外部数据存储器或I/O,有Ri和DPTR两种间接寻址方式。
4.简述80C51单片微机内部RAM低128字节4个主要区域的特点。
工作寄存器区:
共4组寄存器,每组占8个存储单元,各组以R0-R7作为单元编号。
占用00H-1FH共32个存储单元地址。
位寻址区:
20H-2FH,既可以一般数据存储器单元作用,按字节进行操作;
也可以对单元中的每一位进行位操作,共计128位,位地址为00H-7FH。
堆栈区:
设置在用户数据存储器区内。
用户数据存储器区:
在内部数据存储器低128存储单元中,除去前面3个区所占用的存储单元,剩下的所有单元为用户数据存储器。
5.简述80C51单片微机的并行扩展三总线(AB、DB和CB)如何构成及应用。
80C51的P0口依靠ALE引脚对锁存器的控制,分时作数据总线D0-D7和地址总线低8位A0-A7。
P2口作地址总线高8位A8-A15。
控制总线由ALE、
、
等控制信号构成。
6.为什么要进行低功耗设计?
原因如下:
实现绿色电子,节约能源。
某些场合(如野外)、某些便携式仪器、仪表要求由电池供电,要求功耗小。
能提高应用系统可靠性,因为进入低功耗后,单片微机对干扰往往不敏感。
7.说明80C51单片微机的复位方式主要有哪几种。
复位操作有上电复位、按键电平复位和外部脉冲复位三种方式。
上电自动复位是通过外部复位电路的电容充电来实现的;
按键电平复位是通过按压复位键使复位端经电阻与VCC接通来实现的;
外部脉冲复位是由外部提供一个宽度大于2个机器周期的复位脉冲来实现的。
8.80C51芯片内部主要集成逻辑功能部件有哪些?
80C51芯片内容主要包括中央处理器、内部程序存储器、内部数据存储器、定时器/计数器、并行I/O口P0-P3、串行口、中断系统以及定时控制逻辑电路等,各个部分通过内部总线相连。
9.80C51的程序存储器中有几个特定地址。
有6个特定地址。
复位地址:
0000H-0002H
外部中断0地址:
0003H-000AH
定时计数器0地址:
000BH-0012H
外部中断1地址:
0013H-001AH
定时计数器1地址:
001BH-0022H
串行口地址:
0023H-002AH
10.请简述如何在实验室完成实验任务,使用哪些资源?
仿真软件由WAVE的编辑软件及MICETEK公司的EasyProbe8052F仿真软件组成,自编源程序在PC上进行编辑、编译以及将编译通过后所生成的后缀名为HEX的机器码文件,通过RS-232串行口下载给仿真器,仿真器采用MICETEK公司的EasyProbe8052F仿真器,在仿真器上完成实验的验证、修改和完成。
[第二部分读程序]
要求:
⑴直接在源程序“;
”右侧对程序加以注释。
⑵写出程序功能和运行后结果。
程序1ORG0000H
SJMPMAIN
MAIN:
MOVDPTR,#2000H;
设置外部数据存储器首地址
MOVR0,#10H;
设置内部数据存储器首地址
MOVR1,#20H;
设置存放求和的首地址
MOVR2,#05H;
设置取数据的长度
CLRC
ADDA:
MOVXA,@DPTR;
从外部数据存储器取出数据
ADDCA,@R0;
将内部数据存储器数据与外部数据存储器数据求和
DAA;
调整求和的结果
MOV@R1,A;
将调整后求和结果存放到指定的内部存储器中
INCDPTR;
取出下一个地址空间的数据
INCR0
INCR1
DJNZR2,ADDA;
判断是否达到数据长度,若没有则返回继续取数
AJMP$
⑵程序功能:
从外部数据存储器2000H地址开始取数,一直取到2004H地址空间,再从内部数据存储器10H地址取数,一直取到14H地址空间,将取出外部存储器和内部存储器分别求和,求和结果存放到以20H地址开始的存储器中,一直存放到24H地址空间中。
问题1:
若删去”DAA”一行,
则程序功能为:
将不能得到正确的求和结果
问题2:
若”MOVR2,#05H”改为”MOVR2,#02H”,
则程序功能:
只取出外部数据存储器2000H和2001H地址中的数据与内部数据存储器10H和11H地址中数据分别相加,求和结果依次存入20H和21H地址空间中。
问题3:
若和需存入10H-14H中,
则修改
ORG0000H
SJMPMAIN
ORG0030H
MOVDPTR,#2000H
MOVR0,#10H
MOVR2,#05H
MOVXA,@DPTR
ADDCA,@R0
DAA
MOV@R0,A
INCDPTR
DJNZR2,ADDA
程序2
SJMPMAIN
ORG0030H
MOVDPTR,#TAB;
设置数据指针指向程序存储器常数表的首地址
MOVA,#02H;
设置取数间隔
MOVCA,@A+DPTR;
取出程序存储器常数表中第三个常数22H
MOVR0,A;
将取出的常数存放起来
SJMP$
ORG2080H
TABDB00H,11H,22H,33H……;
表(略)
程序功能:
运行后结果:
1问题1:
若”MOVA,#02H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 离线 作业