微机原理与接口技术离线作业答案必做.doc

上传人:h**** 文档编号:131789 上传时间:2018-07-09 格式:DOC 页数:19 大小:127.50KB
下载 相关 举报
微机原理与接口技术离线作业答案必做.doc_第1页
第1页 / 共19页
微机原理与接口技术离线作业答案必做.doc_第2页
第2页 / 共19页
微机原理与接口技术离线作业答案必做.doc_第3页
第3页 / 共19页
微机原理与接口技术离线作业答案必做.doc_第4页
第4页 / 共19页
微机原理与接口技术离线作业答案必做.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、浙江大学远程教育学院 微机原理与接口技术课程作业 姓名: 学 号: 年级: 学习中心: 温州 第二章 P47 2 80C51 单片微机芯片引脚第二功能有哪些? 答: 80C51 单片机的 P0、 P2 和 P3 引脚都具有第二功能。 第一功能 第二 变异 功能 P0 口 地址总线 A0 A7/数据总线 D0 D7 P2 口 地址总线 A8 A15 P3.0 RXD (串行输入口 ) P3.1 TXD (串行输 出口 ) P3.2 0INT (外部中断 0) P3.3 1INT (外部中断 1) P3.4 T0 (定时器 /计数器 0 的外部输入 ) P3.5 T1 (定时器 /计数器 0 的外

2、部输出 ) P3.6 WR (外部读写存储器或 I/O 的写选通 ) P3.7 RD (外部读写存储器或 I/O 的读选通 ) 4 80C51 存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内数据存储器和片外数据存储器的指令格式有何区别? 答: 80C51 单片机采用哈佛 (Har yard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达 64KB。 在物理上设有 4 个存储器空间 片内程序存储器; 片外程序存储器;

3、 片内数据存储器; 片外数据存储器。 在逻辑上设有 3 个存储器地址空间 片内、片外统一的 64 KB 程序存储器地址空间。 片内 256B( 80C52 为 384 B)数据存储器地址空间。 片内数据存储器空间,在物理上又包含两部分: 对于 80C51 型单片机,从 0 127 字节为片内数据存储器空间;从 128 255 字节为特殊功能寄存器 (SFR)空间(实际仅占用了 20 多个字节)。 片外 64 KB 的数据存储器地址空间。 在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通 信号。 访问片内 RAM采用 MOV指令,访问片外 RAM则一定要采用 MOVX指

4、令,因为 MOVX指令会产生控制信号 RD 或 WR ,用来访问片外 RAM。访问程序存储器地址空间,则应采用MOVC 指令。 6 80C51 片内数据存储器低 128 个存储单元划分为哪 4 个主要部分?各部分主要功能是什么? 答: 寄存器区 : 共 4 组寄存器,每组 8 个存 储 单元,各组以 R0 R7 作为单元编号。常用于保存操作数及中间结果等等。 R0 R7 也称为通用寄存器 , 占用 00H 1FH共 32 个 单元地址。 位 寻址区 : 20H 2FH,既 可作为一般 RAM 单元使用, 按 字节进行操作,也可以对单元中的每一位进行位操作 , 称为位寻址区。寻址区共有 16 个

5、 RAM 单元,共计 128 位 , 位 地 址为 00H 7FH。 堆栈区:设置在 用户 RAM 区 内。 用户 RAM 区 : 在内部 RAM 低 128 单元中,除去前面 3 个区,剩下 的所有 单元。 第三章 P87 9 MOV、 MOVC、 MOVX 指令有什么区别,分别用于那些场合,为什么? 答: MOV 指令用于对内部 RAM 的访问。 MOVC 指令用于对程序存储器的访问,从程序 存储器中读取数据 (如表格、常数等 )。 MOVX 指令采用间接寻址方式访问外部数据存储器,有 Ri 和 DPTR 两种间接寻址方式。MOVX 指令执行时,在 P3.7 引脚上输出 RD 有效信号或在

6、 P3.6 引脚上输出 WR 有效信号,可以用作外部数据存储器或 I/O 的读或写选通信号,与单片机扩展电路有关。 15 已知 (R1)=20H, (20H)=AAH,请写出执行完下列程序段后 A 的内容。 MOV A, #55H ANL A, #0FFH ORL 20H, A XRL A, R1 CPL A 答:各指令执行结果如下: MOV A, #55H ; (A)=55H ANL A, #0FFH ; (A)=55H XRL A, R1 ; (A)=AAH CPL A ; (A) =55H 执行完程序段后, A 的内容为 55H。 16 阅读下列程序,说明其功能。 MOV R0, #30

7、H MOV A, R0 RL A MOV R1, A RL A RL A ADD A, R1 MOV R0, A 答:对程序注释如下: MOV R0, #30H ; (R0)=30H MOV A, R0 ;取数 RL A ; (A) 2 MOV R1, A RL A ; (A) 4 RL A ; (A) 8 ADD A, R1 ; (A) 10 MOV R0, A ;存数 功能:将 30H 中的数乘以 10 以后再存回 30H 中。 条件: 30H 中的数不能大于 25, 25 10=250 仍为一个字节。若 30H 中的数大于 25,则应考虑进位。 17. 已知两个十进制数分别从内部数据存储

8、器中的 40H 单元和 50H 单元开始存放(低位在前),其字节长度存放在内部数据存储器的 30H 单元中。编程实现两个十进制数求和,并把和的结果存放在内部数据存储器 40H 开始的单元中。 【答】程序如下: ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV R0, #40H ;被加数首址又作两个十进制数和的首址 MOV R1, #50H ;加数首址 MOV R2, 30H ;字节长度 CLR C PP: MOV A, R1 ;取加数 ADDC A, R0 ;带进位加 DA A ;二一十进制数调整 MOV R0, A ;存和 INC R0 ;修正地址 INC R1

9、 DJNZ R2, PP ;多字节循环加 AJMP $ END 21 读程序,请画出 P1.0 P1.3 引脚上的波形图,并标出电压 V时间 T 坐标 ; 加以注释。 ORG 0000H START: MOV SP, #20H MOV 30H, #01H MOV P1, #01 MLP0: ACALL D50ms ; 软件延时 50mS MOV A, 30H CJNE A, #08H, MLP1 MOV A, #01H MOV DPTR, #ITAB MLP2 MOV 30H, A MOVC A, A+DPTR MOV P1, A SJMP MLP0 MLP1: INC A SJMP MLP2

10、 ITAB: DB 0, 1, 2, 4, 8 DB 8, 4, 2, 1 D50ms: ; 延时 50ms 子程序 (略 ) RET 答: 序 功能: P1.0 P1.3 引脚上的波形图如图 3-2 所示。 注释见源程序右边所述。 ORG 0000H START: MOV SP, #20H MOV 30H, #01H MOV P1, #01H ; P1.0 P1.3 引脚输出波形 MLP0: ACALL D50ms ;软件延时 50ms MOV A, 30H CJNE A, #08H, MLP1 ;判表格中数据是否取完? MOV A, #01H ;取完,从表头开始取 MOV DPTR, #I

11、TAB ;表格首地址 MLP2 MOV 30H, A MOVC A, A+DPTR ;取表格中数据 MOV P1, A SJMP MLP0 MLP1: INC A ;表格中数据未取完,准备取下一个 SJMP MLP2 ITAB: DB 0, 1, 2, 4, 8 ;表 DB 8, 4, 2, 1 D50ms: ;软件延时 50ms 子程序 RET 第四章 P123 6 根据运算结果给出的数据到指定的数据表中查找对应 的数据字。 运算结果给出的数据在片内数据存储器的 40H 单元中,给出的数据大小在00 0FH 之间,数据表存放在 20H 开始的片内程序存储器中。查表所得数据字(为双字节、高位字

12、节在后)高位字节存于 42H、低位字节存于 41H 单元。其对应关系为: 给出数据; 00 01 02 0D H 0EH 0FH 对应数据: 00A0H 7DC2H FF09H 3456H 89ABH 5678H 请编制查表程序段,加上必要的伪指令,并 加以注释。 答 : 程序如下: ORG 0000H AJMP MAIN , 0RG 0020H TAB: DB OAOH, OOH, 0C2H, 7DH, 09H, OFFH, .,56H, 34H, 0 ABH, 89H, DB 78H,56H; 数据字表 ORG 0050H MAIN: MOV A, 40H ;运算结果给出的数据放在 40H

13、 中 MOV DPTR, #TAB ;指向数据字表首地址 RL A ;由于是双字节,所以 A 左移 1 位 (乘 2) MOV 40H, A ;结果放在 40H MOVC A, A+DPTR ;查表,找出对应的值 MOV 41H, A ;查找出的数据值低字节放入 41H MOV A 40H ADD A, #01H ;查找数据的高位字节 MOV DPTR, #TAB MOVC A, A+DPTR MOV 42H, A 。 ;查找出的数据值高字节放 入 42H SJMP$ 注意:数据表存放在 20 H 开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令 MOVC 的功能是从程序存储器中读

14、数据。 10. 把长度为 10H 的字符串从内部数据存储器的输入缓冲区 INBUF 向设在外部数据存储器的输出缓冲区 OUTBUF 进行传送,一直进行到遇见回车字符 “CR”结束传送或整个字符串传送完毕。加上必要的伪指令,并对源程序加以注释。 答:程序如下: ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV R7, #10H ;数据长度 MOV R0, #INBUF ;源数据首地址 MOV DPTR, #OUTBUF ;目的数据首地址 LOOP: MOV A, R0 ;把源数据的值赋给 A CJNE A, #0DH, LOOP1 ;是 “CR”(ASCII 码值为

15、 0DH) ? SJMP END1 ;是 “CR”,则结束传送 LOOP1: MOVX DPTR, A ;把 A 的值赋给目的数据 INC R0 ;源数据下一个地址值 INC DPTR ;目的数据下一个地址值 DJNZ R7, LOOP ;判数据传送是否完毕? END1: SJMP END1 12比较两个 ASCII 码字符串是否相等。字符串的长度在内部数据存储器的 20H单元,第一个字符串的首地址在内部数据存储器的 30H 中,第二个字符串的首地址在内部数据存储器的 50H 中。如果两个字符串相等,则置用户标志 F0 为 0;否则置用户标志 F0 为 1。 加上必要的伪指令,并加以注释。 (

16、注:每个 ASCII码字符为一个字节,如 ASCII 码“ A”表示为 41H) 答 : 字符串中每一个字符都可以用一个 ASCII 码表示。只要有一个字符不相同,就可以判断字符串不相等。 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV R0, #30H 第一个字符串的首地址 MOV R1, #5 0H 第二个字符串的首地址 LOOP: MOV A, R0 第一个字符串的字符值赋给 A MOV B, R1 ;第二个字符串的字符值赋给 B CJNE A, B, NEXT ;两个字符值比较 INC R0 字符值相等,则继续比较 DJNZ 20H, LOOP ;判断字

17、符串是否比较完 CLR F0 字符串相等,则 F0 位清 0 SJMP $ NEXT: SETB F0 字符串不等,则 F0 位置 1 SJMP $ END 例如: (2OH)=03H, (3OH)=41H, (31H)=42H, (32H)=43H, (5OH)=41H, (51H)= 42H, (52H)=43H。两个字符串均为“ ABC“。 执行结果: F0=0 14. 80C51 单片机从内部数据存储器的 31H 单元开始存放一组 8 位带符号数,字节个数在 30H 中。请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入 20H、 21H 和 22H 三个单元中。加上必要的

18、伪指令,并对源程序加以注释。 答: 分析:带符号数以字节最高位 D7 的值 来区分是正数 (包括零 )和负数。 D7=1,则该带符号数为负数。 程序如下: POS_NUM EQU 20H ;正数个数 ZERO_NUM EQU 21H ;零个数 NEG_NUM EQU 22H ;负数个数 MAIN: MOV POS_NUM, #0 ;计数单位初始化为 0 MOV ZERO_NUM, #0 MOV NEG_NUM, #0 MOV R1, 30H ;数据长度 MOV R0, #31H ;数据首地址 LOOP: MOV A, R0 JB ACC.7, INC_NEG ;符号位为,该数为负数,跳转加 1

19、 CJNE A, #0, INC_POS INC ZERO_NUM ;该数为 0, 0 个数加 1 AJMP LOOP1 INC_NEG: INC NEG_NUM ;负数个数加 1 AJMP LOOP1 INC_POS: INC POS_NUM ;该数为正数,正数个数加 1 LOOP1: INC R0 ;判断统计是否结束 DJNZ R1, LOOP END 例如:已知 (30H)=08H, 31H 单元起存放数据为: 00H, 80H, 7EH, 6DH, 2FH, 34H,EDH, FFH。 执行结果: (20H)=04H, (21H)=01H, (22H)=03H。 16 将外 部数据存储

20、器的 2040H 单元 中的一个字节拆成 2 个 ASCII 码,分别存入内部数据存储器 40H和 41H单元中 ,试编写以子程序形式给出的转换程序 ,说明调用该子程序的入口条件和出口功能。 加上必要的伪指 令,并加以注释。 答 : 子程序的入口条件、出口功能及源代码如下: 子程序人口条件:准备拆为 2 个 ASCII 码的数存入外部 RAM 的 40 H 单元中。 子程序出口功能:完成外部 RAM 单元一个字节拆成 2 个 ASCII 码,分别存入内部数据存储器 40 H 和 41 H 单元中。 ORG 1 000H B_TO_A: MOV DPTR, #40H ;外部 RAM40H 单元

21、MOV R0, #40H MOVX A, DPTR ;取数 PUSH A ANL A, #0FH ;低 4 位转换为 ASCII 码 LCALL CHANGE MOV RO, A INC R0 POP A SWAP A ANL A, #0FH ;高 4 位转换为 ASCII 码 LCALL CHANGE MOV R0, A RET CHANGE: CJNE A, #0AH, NEXT ;转换子程序 NEXT: JNC NEXT2 ; 0AH,转移 ADD A, #3 0H ; 9,数字 0-9 转化为 ASCII 码 RET NEXT2: ADD A, #37H ;字母 A F 转化为 ASC

22、II 码 RET END 设外部 (40 H)=12 H。 执行程序 B_TO_A 后:内部 (40 H)=31 H, (41 H)=32 H。 设外部 RAM(40 H)=ABH。 执行程序 B_TO_A 后 ,内部 (40 H)=41 H, (41 H)=42 H。 17根据 8100H 单元中的值 X,决定 P1 口引脚输出为: 2X X0 P1= 80H X=0 ( 128D X 63D) X 变反 X0 答 : 程序如下: ORG 0000H SJMP BEGIN ORG 0030H BEGIN: MOV DPTR, #8100H MOVX A, DPTR MOV R2, A JB

23、ACC.7, SMALLER;有符号数 0 SJMP UNSIGNED ;无符号数 0 SMALLER: DEC A ; X0,输出 -X(先减 1,再取反 ) CPL A MOV P1, A SJMP OK UNSIGNED: CJNE A, #00H, BIGGER ;不等于 0 即大于 0 MOV P1, #80H ; X 等于 0,输出 80H SJMP OK BIGGER: CLR C ; X 大于 0,输出 A 2 RLC A ; A 2 MOV P1, A OK: SJMP $ END 例如:输入 55 H, P1 口引脚输出 AAH;输入 00 H, P1 口引脚输出 80 H

24、;输入 F1(一 1 5 的补码 ), P1 口引脚输出 0FH。 22. 编写求一组无符号数中最小值的子程序,入口条件为:内部数据存储器的 20H和 21H 中存数据块的起始地址, 22H 中存数据块的长度,求得的最小值存入 30H中。 答 : 程序如下: ;求无符号数最小值 的子程序 CMPI ORG 2000H CMPI: MOV DPL, 20H MOV DPH, 21H MOV 30H, #0FFH ;最小值单元初始值设为最大值 LOOP: MOVX A, DPTR MOVX A, DPTR CJNE A, 3 0H, CHK ;比较两个数大小 SJMP LOOP1 ;两个数相等,不

25、交换 CHK: JNC LOOP1 ; A 较大,不交换 MOV 30H, A ; A 较小,交换 LOOP1: INC DPTR DJNZ 22H LOOP RET 注意: 30 H 中始终存放两个数比较后的较小值,比较结束后存放的即是最小值。 例如: (20 H)=00 H, (21 H)=80 H (22 H)=0 5 H。从 8000 H 开始存放下列数: 02 H, 04 H, 01 H, FFH, 03 H。 调用子程序 CMPl 后的结果: (30 H)=01 H 第五章 p141 1什么是中断?在单片微机中中断能实现哪些功能? 答 : 单片机在程序执行过程中,允许外部或内部“事

26、件通过硬件打断程序的执行,使其转向执行处理外部或内部“事件的中断服务子程序;而在完成中断服务子程序以后,继续执行原来被打断的程序,这种情况称为“中断 “,这样的过程称为“中断响应过程 “。 7 80C51 共有哪些中断源?对其中断请求如何进行控制? 答 : 中断响应是有条件的,即: 中断源申请中断; 该中断源已被允许中断,且 CPU 也已允许中断; 没有同级或高优先级中断在执行中断服务程序。 在接受中断申请时,如遇下列情况之一,硬件生成的长调用指令 LCALL 将被封锁: CPU 正在执行同级或高一级的中断服务程序。因为当一个中断被响应时,其对应的中断优先级触发器被置 1,封锁了同级和低级中断

27、。 查询中断请求的机器周期不是执行当前指令的最后一个周期。目的在于使当前指令执行完毕后,才能进行中断 响应,以确保当前指令的完整执行。 当前正在执行 RETI 指令或执行对 IE、 IP 的读写操作指令。 80C51中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。 12 80C51 的中断与子程序调用有哪些异同点,请各举两点加以说明。 相同点: 都是中断当前正在执行的程序,都要通过执行返回指令,返回到原来的程序。 都是由硬件自动地把断点地址压入堆栈;当执行到返回指令时,自动弹出断点地址以便返回原来的程序。 都要通过软件完成现场保护和现场恢复。 都可以实现嵌

28、套。 不同点: 中断请求信号可以由外部设备发出,是随机的;子程序调用子程序却是由软件编排好的。 中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。 中断响应是受控的,其响应时间会受一些因素影响素;子程序响应时间是固定的。 第六章 P161 1. 80C51 单片微机内部设有几个定时器计数器?简述各种工作方式的功能特点? 答: 80C51 单片机内部设有 2 个 16 位定时器计数器 TO 和 T1。定时器计数器有 4 种工作方式,其特点如下: 方式 O 是 13 位定时器计数器。由 THxT 高 8 位 (作计数器 )和 TLx 的低 5 位 (32 分频的定标器)构成。 TLx 的低 5 位溢出时,向 THxT 进位; THxT 溢出时,硬件置位件 TFx(可用于软件查询 ),并可以申请定时器中断定时器 。 方式 1 是 16 位定时器计数器。 TLxT 的低 8 位溢出时向 THx 进位 (可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。