微机原理与接口技术离线作业答案必做_第1页
微机原理与接口技术离线作业答案必做_第2页
微机原理与接口技术离线作业答案必做_第3页
微机原理与接口技术离线作业答案必做_第4页
微机原理与接口技术离线作业答案必做_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学远程教育学院微机原理与接口技术课程作业姓名: 学 号:年级: 学习中心: 温州第二章 P47280C51 单片微机芯片引脚第二功能有哪些?答:80C51 单片机的 P0、P2 和 P3 引脚都具有第二功能。第一功能 第二变异功能P0 口 地址总线 A0 A7/数据总线 D0D7P2 口 地址总线 A8A15P3.0 RXD (串行输入口)P3.1 TXD (串行输出口 )P3.2 (外部中断 0)0INTP3.3 (外部中断 1)1P3.4 T0 (定时器 /计数器 0 的外部输入)P3.5 T1 (定时器 /计数器 0 的外部输出)P3.6 (外部读写存储器或 I/O 的写选通)WRP3.7 (外部读写存储器或 I/O 的读选通)D480C51 存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内数据存储器和片外数据存储器的指令格式有何区别?答:80C51 单片机采用哈佛(Haryard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达 64KB。在物理上设有 4 个存储器空间 片内程序存储器; 片外程序存储器; 片内数据存储器; 片外数据存储器。在逻辑上设有 3 个存储器地址空间 片内、片外统一的 64 KB 程序存储器地址空间。 片内 256B(80C52 为 384 B)数据存储器地址空间。片内数据存储器空间,在物理上又包含两部分:对于 80C51 型单片机,从 0127 字节为片内数据存储器空间;从128255 字节为特殊功能寄存器(SFR)空间(实际仅占用了 20 多个字节) 。 片外 64 KB 的数据存储器地址空间。在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。访问片内 RAM 采用 MOV 指令,访问片外 RAM 则一定要采用 MOVX 指令,因为MOVX 指令会产生控制信号 或 ,用来访问片外 RAM。访问程序存储器地址空间,RDW则应采用 MOVC 指令。680C51 片内数据存储器低 128 个存储单元划分为哪 4 个主要部分?各部分主要功能是什么? 答:寄存器区:共 4 组寄存器,每组 8 个存储单元,各组以 R0R7 作为单元编号。常用于保存操作数及中间结果等等。R0R7 也称为通用寄存器,占用00H1FH 共 32 个单元地址。 位寻址区:20H2FH ,既可作为一般 RAM 单元使用,按字节进行操作,也可以对单元中的每一位进行位操作,称为位寻址区。寻址区共有 16 个 RAM 单元,共计 128 位,位地址为 00H7FH。 堆栈区:设置在用户 RAM 区内。 用户 RAM 区:在内部 RAM 低 128 单元中,除去前面 3 个区,剩下的所有单元。第三章 P879MOV、MOVC 、MOVX 指令有什么区别,分别用于那些场合,为什么?答:MOV 指令用于对内部 RAM 的访问。MOVC 指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等) 。MOVX 指令采用间接寻址方式访问外部数据存储器,有 Ri 和 DPTR 两种间接寻址方式。MOVX 指令执行时,在 P3.7 引脚上输出 有效信号或在 P3.6 引脚上输出 有效信号,RDWR可以用作外部数据存储器或 I/O 的读或写选通信号,与单片机扩展电路有关。15已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后 A 的内容。MOV A,#55HANL A,#0FFHORL 20H,AXRL A,R1CPL A答:各指令执行结果如下:MOV A,#55H ;(A)=55HANL A,#0FFH ;(A)=55HXRL A,R1 ;(A)=AAHCPL A ;(A) =55H执行完程序段后,A 的内容为 55H。16阅读下列程序,说明其功能。MOV R0,#30H MOV A,R0 RL A MOV R1,ARL ARL AADD A,R1MOV R0,A 答:对程序注释如下:MOV R0,#30H ;(R0)=30HMOV A,R0 ;取数RL A ;(A)2MOV R1,ARL A ;(A) 4RL A ;(A)8ADD A,R1 ;(A) 10MOV R0, A ;存数 功能:将 30H 中的数乘以 10 以后再存回 30H 中。条件:30H 中的数不能大于 25,2510=250 仍为一个字节。若 30H 中的数大于 25,则应考虑进位。17. 已知两个十进制数分别从内部数据存储器中的 40H 单元和 50H 单元开始存放(低位在前) ,其字节长度存放在内部数据存储器的 30H 单元中。编程实现两个十进制数求和,并把和的结果存放在内部数据存储器 40H 开始的单元中。 【答】程序如下:ORG 0000HSJMP MAINORG 0030HMAIN:MOV R0,#40H ;被加数首址又作两个十进制数和的首址MOV R1,#50H ;加数首址MOV R2,30H ;字节长度CLR CPP: MOV A,R1 ;取加数ADDC A,R0 ;带进位加DA A ;二一十进制数调整MOV R0,A ;存和 INC R0 ;修正地址INC R1DJNZ R2,PP ;多字节循环加AJMP $END21读程序,请画出 P1.0P1.3 引脚上的波形图,并标出电压 V时间 T 坐标; 加以注释。 ORG 0000HSTART:MOV SP,#20HMOV 30H,#01HMOV P1,#01 MLP0:ACALL D50ms ; 软件延时 50mSMOV A, 30HCJNE A, #08H,MLP1MOV A, #01H MOV DPTR,#ITABMLP2MOV 30H, AMOVC A,A+DPTRMOV P1, ASJMP MLP0MLP1:INC ASJMP MLP2ITAB: DB 0,1,2,4,8DB 8,4,2,1D50ms: ; 延时 50ms 子程序(略)RET答: 序功能:P1.0P1.3 引脚上的波形图如图 3-2 所示。注释见源程序右边所述。ORG 0000HSTART: MOV SP,#20HMOV 30H,#01HMOV P1,#01H ;P1.0P1.3 引脚输出波形MLP0:ACALL D50ms ;软件延时 50msMOV A, 30HCJNE A, #08H,MLP1 ;判表格中数据是否取完?MOV A, #01H ;取完,从表头开始取MOV DPTR,#ITAB ;表格首地址MLP2MOV 30H,AMOVC A,A+DPTR ;取表格中数据MOV P1, ASJMP MLP0MLP1:INC A ;表格中数据未取完,准备取下一个SJMP MLP2ITAB: DB 0,1,2,4,8 ;表DB 8,4,2,1D50ms: ;软件延时 50ms 子程序RET第四章 P1236 根据运算结果给出的数据到指定的数据表中查找对应的数据字。运算结果给出的数据在片内数据存储器的 40H 单元中,给出的数据大小在000FH 之间,数据表存放在 20H 开始的片内程序存储器中。查表所得数据字(为双字节、高位字节在后)高位字节存于 42H、低位字节存于 41H 单元。其对应关系为:给出数据;00 01 02 0DH 0EH 0FH对应数据:00A0H 7DC2H FF09H 3456H 89ABH 5678H请编制查表程序段,加上必要的伪指令,并加以注释。答: 程序如下:ORG 0000HAJMP MAIN ,0RG 0020HTAB:DB OAOH,OOH,0C2H,7DH,09H,OFFH,.,56H,34H,0ABH,89H,DB 78H,56H; 数据字表ORG 0050HMAIN: MOV A,40H ;运算结果给出的数据放在 40H 中MOV DPTR,#TAB ;指向数据字表首地址RL A ;由于是双字节,所以 A 左移 1 位(乘 2)MOV 40H,A ;结果放在 40H MOVC A,A+DPTR ;查表,找出对应的值MOV 41H,A ;查找出的数据值低字节放入 41HMOV A40HADD A,#01H ;查找数据的高位字节MOV DPTR,#TABMOVC A,A+DPTRMOV 42H,A 。 ;查找出的数据值高字节放入 42HSJMP$注意:数据表存放在 20 H 开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令 MOVC 的功能是从程序存储器中读数据。10. 把长度为 10H 的字符串从内部数据存储器的输入缓冲区 INBUF 向设在外部数据存储器的输出缓冲区 OUTBUF 进行传送,一直进行到遇见回车字符 “CR”结束传送或整个字符串传送完毕。加上必要的伪指令,并对源程序加以注释。答:程序如下:ORG 0000HAJMP MAINORG 0030HMAIN: MOV R7,#10H ;数据长度MOV R0,#INBUF ;源数据首地址MOV DPTR,#OUTBUF ;目的数据首地址LOOP: MOV A,R0 ;把源数据的值赋给 ACJNE A,#0DH,LOOP1 ;是“CR”(ASCII 码值为 0DH) ?SJMP END1 ;是“CR”,则结束传送LOOP1:MOVX DPTR,A ;把 A 的值赋给目的数据INC R0 ;源数据下一个地址值INC DPTR ;目的数据下一个地址值DJNZ R7,LOOP ;判数据传送是否完毕?END1: SJMP END112比较两个 ASCII 码字符串是否相等。字符串的长度在内部数据存储器的20H 单元,第一个字符串的首地址在内部数据存储器的 30H 中,第二个字符串的首地址在内部数据存储器的 50H 中。如果两个字符串相等,则置用户标志 F0为 0;否则置用户标志 F0 为 1。 加上必要的伪指令,并加以注释。 (注:每个ASCII 码字符为一个字节,如 ASCII 码“A”表示为 41H)答: 字符串中每一个字符都可以用一个 ASCII 码表示。只要有一个字符不相同,就可以判断字符串不相等。ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV R0,#30H 第一个字符串的首地址MOV R1 ,#5 0H 第二个字符串的首地址LOOP: MOV A,R0 第一个字符串的字符值赋给 AMOV B,R1 ;第二个字符串的字符值赋给 BCJNE A,B,NEXT ;两个字符值比较INC R0 字符值相等,则继续比较DJNZ 20H,LOOP ;判断字符串是否比较完CLR F0 字符串相等,则 F0 位清 0SJMP $NEXT: SETB F0 字符串不等,则 F0 位置 1SJMP $END例如:(2OH)=03H,(3OH)=41H,(31H)=42H,(32H)=43H,(5OH)=41H,(51H)=42H,(52H)=43H。两个字符串均为“ABC“。执行结果:F0=014. 80C51 单片机从内部数据存储器的 31H 单元开始存放一组 8 位带符号数,字节个数在 30H 中。请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入 20H、21H 和 22H 三个单元中。加上必要的伪指令,并对源程序加以注释。答:分析:带符号数以字节最高位 D7 的值来区分是正数( 包括零)和负数。D7=1,则该带符号数为负数。程序如下:POS_NUM EQU 20H ;正数个数ZERO_NUM EQU 21H ;零个数NEG_NUM EQU 22H ;负数个数MAIN: MOV POS_NUM,#0 ;计数单位初始化为 0MOV ZERO_NUM,#0MOV NEG_NUM,#0 MOV R1,30H ;数据长度MOV R0,#31H ;数据首地址LOOP: MOV A,R0JB ACC.7, INC_NEG ;符号位为,该数为负数,跳转加 1CJNE A,#0,INC_POSINC ZERO_NUM ;该数为 0,0 个数加 1AJMP LOOP1INC_NEG: INC NEG_NUM ;负数个数加 1AJMP LOOP1INC_POS: INC POS_NUM ;该数为正数,正数个数加 1LOOP1: INC R0 ;判断统计是否结束DJNZ R1,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 单元中,试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。加上必要的伪指令,并加以注释。答: 子程序的入口条件、出口功能及源代码如下:子程序人口条件:准备拆为 2 个 ASCII 码的数存入外部 RAM 的 40 H 单元中。子程序出口功能:完成外部 RAM 单元一个字节拆成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论