微机原理与接口技术作业解答.docx

上传人:b****7 文档编号:23847496 上传时间:2023-05-21 格式:DOCX 页数:29 大小:183.58KB
下载 相关 举报
微机原理与接口技术作业解答.docx_第1页
第1页 / 共29页
微机原理与接口技术作业解答.docx_第2页
第2页 / 共29页
微机原理与接口技术作业解答.docx_第3页
第3页 / 共29页
微机原理与接口技术作业解答.docx_第4页
第4页 / 共29页
微机原理与接口技术作业解答.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术作业解答.docx

《微机原理与接口技术作业解答.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术作业解答.docx(29页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术作业解答.docx

微机原理与接口技术作业解答

浙江大学远程教育学院

《微机原理与接口技术》课程作业

姓名:

学号:

年级:

13春电气工程

学习中心:

杭州

—————————————————————————————

第二章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的外部输出) 

P3.6               WR(外部读写存储器或1/0的写选通)

P3.7               RD(外部读写存储器或1/0的读选通) 

4.80C51存储器在结构上有何特点?

在物理上和逻辑上各有哪几种地址空间?

访问片内数据存储器和片外数据存储器的指令格式有何区别?

答:

80C51单片机采用哈佛(Har-yard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。

不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达64KB。

1. 在屋里上设有4个存储器空间 

● 片内程序存储器;

● 片外程序存储器; 

● 片内数据存储器; 

● 片外数据存储器。

2. 在逻辑上设有3个存储器地址空间

● 片内、片外统一的64KB程序存储器地址空间。

 

● 片内2568(80C52为384 B)数据存储器地址空间。

 

片内数据存储器空间,在物理上又又包含两部分:

 

一对于80C51型单片机,从0~127字节为片内数据存储器空间;从128~255字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。

 

● 片外64KB 数据存储器地址空间。

 

在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。

 

访问片内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区:

在内部RAM低128单元中,除去前面3个区,剩下的所有单元。

第三章P87

9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?

答:

MOV指令用于对内部RAM的访问。

 

MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。

 

MOVX指令采用间接寻址方式访问外部数据存储器或I/O,有Ri和DPTR两种间接寻址方式。

MOVX指令执行时,在P3.7引脚上输出RD有效信号或在P3.6引脚上输出WR有效信号,可以用作外部数据存储器或1/0的读或写选通信号。

15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。

MOVA,#55H

ANLA,#0FFH

ORL20H,A

XRLA,@R1

CPLA

答:

 各指令执行结果如下:

 

     MOV  A,    #55H      ; (A)=55H 

ANL   A,    #OFFH    ;  (A)=55H      

ORL   20H,   A         ; (20H)=FFH

XRL   A ,     @R1      ; (A)=AAH      

CPL   A                 ; (A) = 55H 

执行完程序段后,A的内容为55H。

16.阅读下列程序,说明其功能。

MOVR0,#30H

MOVA,@R0

RLA

MOVR1,A

RLA

RLA

ADDA,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.已知两个十进制数分别从内部数据存储器中的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

答:

 

① 程序功能:

P1.0~P1.3引脚上的波形图如下图1所示:

图1  P1.0~P1.3引脚上的波形图

② 注释见如下所述:

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, @A+DPTR    :

 判表格中的数据是否取完?

            

MOV  A,#01H            :

取完,从表头开始取            

MOV  DPTR,#1TAB         :

表格首地址 

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开始的片内程序存储器中。

查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。

其对应关系为:

给出数据;000102……0DH0EH0FH

对应数据:

00A0H7DC2HFF09H3456H89ABH5678H

请编制查表程序段,加上必要的伪指令,并加以注释。

答:

程序如下:

ORG0000H

AJMPMAIN

ORG0020H

TAB:

DB0A0H,00H,0C2H,7DH,09H,0FFH,…,56H,34H,0,ABH,89H,DB,78H,56H,数据字表

ORG0050H

MAIN:

MOVA,40H;运算结果给出的数据放在40H中

MOVDOTR,#TAB;指向数据字表首地址

RLA;由于是双字节,所以A左移一位(乘2)

MOV40H,A;结果放在40H

MOVCA;@A+DPTR;查表,找出对应的值

MOV41H,A;查找出的数据值低字节放入41H

MOVA,40H

ADDA,#01H;查找数据的高位字节

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV42H,A。

;查找出的数据值高字节放入42H

SJMP$

注意:

数据存表放在20H开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令MOVC的功能是从程序存储器中读数据。

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码值为ODH)?

       

 SJMP   END1                ; 是“CR”, 则结束传送 

LOOP1:

MOVX   @DPTR, A        ;把A的值赋给目的数据         

INC     RO                 ;源数据下一个地址值         

INC    DPTR                ;目的数据下一个地址值         

DJNZ   R7,LOOP           ;判数据传送是否完毕?

 

END1:

 SJMP   END1

12.比较两个ASCII码字符串是否相等。

字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。

如果两个字符串相等,则置用户标志F0为0;否则置用户标志F0为1。

加上必要的伪指令,并加以注释。

(注:

每个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    字符值相等,则继续比较     

INC    R1. 

DJNZ    20H,LOOP   判断字符串是否比较完     

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三个单元中。

加上必要的伪指令,并对源程序加以注释。

答:

  

分析:

带符号数以字节最高位D7的值来区分是正数(包括零)和负数。

D7=1,则该带符号数为负数。

 

程序如下:

      

POS_NUM      EQU      20H ;正数个数      

ZERO_NUM     EQU      21H ;零个数      

NEG_NUM      EQU      22H  ;负数个数 

ORG     0000H 

AJMP    MAIN 

ORG    0030H 

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,该数为负数,跳转加1 

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.将外部数据存储器的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单元     

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转化为ASCII码     

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口引脚输出为:

2XX>0

P1=80HX=0(-128D≤X≤63D)

X变反X<0

【答】程序如下:

     

ORG 0000H     

SJMP    BEGIN     

ORG 0030H 

BEGIN:

    MOV DPTR,#8100H     

MOVX    A,@DPTR     

MOV    R2,A 

JB    ACC.7,SMALLER;有符号数<0     

SJMP    UNSIGNED    ;无符号数≥0 

SMALLER:

DEC    A    ;X<0,输出-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;输入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    ;两个数相等,不交换     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.什么是中断?

在单片微机中中断能实现哪些功能?

【答】单片机在程序执行过程中,允许外部或内部“事件’’通过硬件打断程序的执行.,使其转向执行处理外部或内部“事件’’的中断服务子程序;而在完成中断服务子程序以后,继续执行原来被打断的程序,这种情况称为“中断",这样的过程称为“中断响应过程"

7.80C51共有哪些中断源?

对其中断请求如何进行控制?

【答】中断响应是有条件的,即:

 

·中断源申请中断; 

·该中断源已被允许中断,且CPU也已允许中断; ·没有同级或高优先级中断在执行中断服务程序。

 

 在接受中断申请时,如遇下列情况之一,硬件生成的长调用指令LCALL将被封锁:

 ①CPU正在执行同级或高一级的中断服务程序。

因为当一个中断被响应时,其对应的中断优先级触发器被置1,封锁了同级和低级中断。

 

②查询中断请求的机器周期不是执行当前指令的最后一个周期。

目的在于使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。

 

③当前正在执行RETI指令或执行对IE、IP的读/写操作指令。

80C51.中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。

12.80C51的中断与子程序调用有哪些异同点,请各举两点加以说明。

① 相同点:

 

⑴ 都是中断当前正在执行的程序,都要通过执行返回指令,返回到原来的程序。

 ⑵ 都是由硬件自

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1