单片机习题.docx

上传人:b****8 文档编号:9464365 上传时间:2023-05-19 格式:DOCX 页数:18 大小:29.78KB
下载 相关 举报
单片机习题.docx_第1页
第1页 / 共18页
单片机习题.docx_第2页
第2页 / 共18页
单片机习题.docx_第3页
第3页 / 共18页
单片机习题.docx_第4页
第4页 / 共18页
单片机习题.docx_第5页
第5页 / 共18页
单片机习题.docx_第6页
第6页 / 共18页
单片机习题.docx_第7页
第7页 / 共18页
单片机习题.docx_第8页
第8页 / 共18页
单片机习题.docx_第9页
第9页 / 共18页
单片机习题.docx_第10页
第10页 / 共18页
单片机习题.docx_第11页
第11页 / 共18页
单片机习题.docx_第12页
第12页 / 共18页
单片机习题.docx_第13页
第13页 / 共18页
单片机习题.docx_第14页
第14页 / 共18页
单片机习题.docx_第15页
第15页 / 共18页
单片机习题.docx_第16页
第16页 / 共18页
单片机习题.docx_第17页
第17页 / 共18页
单片机习题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机习题.docx

《单片机习题.docx》由会员分享,可在线阅读,更多相关《单片机习题.docx(18页珍藏版)》请在冰点文库上搜索。

单片机习题.docx

单片机习题

单片机基础问答题答案:

第2章

1、.8051单片机芯片包含哪些主要逻辑功能部件?

各有什么主要功能?

答:

CPU:

控制单片机各部份协调工作进行算术和逻辑运算

内部数据存储器:

存储数据

内部程序存储器:

存储程序

定时器/计数器,并行I/O口

串行口,中断控制系统,时钟电路

2、MCS—51单片机的EA信号有何功能?

在使用8031时EA信号引脚应如何处理?

答:

访问程序存储器控制信号,EA=0访问外部程序存储器,EA=1访问内部程序存储器。

8031无内部程序存储器,所以EA接地。

3、MCS—51  单片机有哪些信号需要芯片引脚以第二功能的方式提供?

答:

P3口,ALE/PROG(30脚),EA/VPP(31脚),

  RST/VPD(9脚)

4、内部RAM低128单片划分为哪3个主要部分?

说明各部分的使用特点?

答:

 1.寄存器区,可寄存器寻址

   2.位寻址区,可位寻址

   3.用户RAM区,其单元地址为30H~7FH,一般还把堆栈开辟在用户RAM区

5、程序计数器(PC)作为不可寻址寄存器,它有哪些特点?

答:

PC是一个16位的计数器。

其内容为将要执行的指令地址,寻址范围达64KB。

有以下功能:

A.自动加1功能,从而实现程序的顺序执行。

 B.上电复位功能。

 C.能接收内部数据总线上来的数据,主要通过转移,调用,返回等指令改变其内容

以实现程序的转移,转移范围216=64K=65536。

PC没有地址,是不可寻址的。

6、堆栈有哪些功能?

堆栈指示器(SP)的作用是什么?

在程序设计时,为什么还要对SP重新赋值?

答:

堆栈是一种数据结构,堆栈的最大特点就是“后进先出”的数据操作规则。

堆栈是为子程序调用和中断操作而设立的。

其具体功能有两个:

保护断点和保护现场。

堆栈指示器SP的作用是指示栈顶地址。

程序设计时一般把SP值初始化为30H以后,因为复位时,SP初始化为07H,而这里是寄存器区和位寻址区。

7、MCS—51的4个I/O口在使用上有哪些分工和特点?

试比较各口的特点?

答:

P1口:

只有一种功能通用I/O口

   P2口:

通用I/O口和地址总线高八位

  P3口:

一种功能通用I/O口和第二功能状态

   P0口:

一种功能通用I/O口和AB/DB复用总线

8、MCS—51单片机运行出错或程序进入死循环,如何摆脱困境?

答:

按复位键以重新启动。

9、什么是指令周期,机器周期和时钟周期?

如何计算机器周期的确切时间?

答:

执行一条指令所需的时间称之为指令周期,

  机器周期就是振荡脉冲的十二分频,

  时钟周期定义为状态(用S表示),2个振荡脉冲。

10、使单片机复位有哪几种方法?

复位后机器的初始状态如何?

答:

复位操作有上电自动复位和按键手动复位两种方式。

按键手动复位有电平方式和脉冲方式两种。

它们的复位状态如下:

PC  0000H  TCON  00H

ACC  00H  TL0  00H

PSW  00H  TH0  00H

SP  07H  TL1  00H

DPTR  0000H  TH1  00H

P0~P3  FFH  SCON  00H

IP  xx000000B  SBUF  不定

IE  0x000000B  PCON  0xxx0000b

TMOD  00H    

-----------------------------------------------------------------------------------------------------------

单片机基础编程题答案:

第4章

1、把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM输出缓冲区outbuf进行传送,一直进行到遇见回车符CR或整个字符传送完毕。

         ORG 0030H

        MOV R0,#inbuf

        MOV R1,#outbuf       

        MOV R4,#10H

  LOOP:

MOV A,@R0;从内部RAM取数

CJNE A,#0DH,LL;是否为回车符CR

       SJMP STOP;是转停止传送

 LL:

 MOVX @R1,A;不是则传送到外部RAM

      INC R0

      INC R1 

      DJNZ R4,LL;沒传送完则循环

STOP:

 SJMP$

2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。

编程实现在表中找出最小数。

      ORG 0030H

      MOVR0,#list

       MOVA,@R0;取第一个正数

 LOOP:

INCR0;指向下一个正数

       MOV3AH,@R0

   CJNEA,3AH,CHK;前一个数与后一个数比较

CHK:

 JC LOOP1;前一个数小,则转

       MOVA,@R0;前一个数大,取后一个数

LOOP1:

XCHA,3AH

      CJNEA,#0FFH,LOOP

      XCHA,3AH;取最小数

       MOV 3BH,A

       SJMP$

3、求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。

        ORG0030H

     MOVR0,#table

     MOVR6,#07H

     MOVR3,#00H

     MOVA,@R0

     CLRC

LOOP:

INCR0

     ADD A,@R0;累加

     JNC LOOP1

       INC R3

LOOP1:

DJNZ R6,LOOP

       CLRC

       MOV R5,#03H

       MOV R2,A

 LOOP2:

MOV A,R3;除8

      RRCA

      MOV R3,A

      MOVA,R2

      RRCA     

MOV R2,A

     DJNZR5,LOOP2

   4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。

该数存放在内部RAM中byte单元中。

变换后行到的8个ASCII码存放在外部RAM以buf始的存储单元中去。

           ORG 0030H

     MOV R0,#byte

     MOV DPTR,#buf

     MOV R5,#08H

     MOV A,@R0

LOOP:

RLC A

    MOV R7,A

         JC LOOP1

         MOV A,#30H

         SJMP LOOP2

 LOOP1:

 MOV A,#31H

 LOOP2:

MOVX @DPTR,A

         MOV A,R7

        INC DPTR

        DJNZ R5,LOOP

5、搜索一串ASCII码字符中最后一个非空格字符,字符串从外部RAM8100H单元开始存放,并用一个回车符(0DH)作结束。

编程实现搜索并把搜索到的非空格字符的地址存入内部RAM单元40H和41H中,其中高字节放入41H单元。

           ORG0030H

     MOVDPTR,#8100H

     MOV40H,#00H

     MOV41H,#00H

LOOP:

MOVXA,@DPTR

      INCDPTR

     CJNEA,#0DH,LOOP;是否为回车符

loop1:

mova,dpl;dptr-1,指向0dh单元地址

     clrc

     subba,#01h

     movdpl,a

     mova,dph

     subba,#00h

     movdph,a

loop2:

mova,dpl;dptr-1,调整单元地址

       clrc

      subba,#01h

      movdpl,a

     mova,dph

      subba,#00h

      movdph,a

      movxa,@dptr;取下一个数

      cjnea,#20h,loop3;是否为空格字符,不是转

     sjmploop2;是空格字符则转调整单元地址

loop3:

 mov40h,dpl;存最后一个非空格字符的

      mov41h,dph;地址

      sjmp$

      end

6、比较两个ASCII码字符串是否相等。

字符串的长度在内部RAM41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。

如果两个字符串相等,则置内部RAM40H单元为00H;否则置40H单元为FF。

    ORG 0030H

   MOVR0,#42H

   MOVR1,#52H

   MOVR7,41H

LOOP:

MOVA,@R0

   MOV30H,@R1

      CJNEA,30H,LK

      INC R0

      INC R1

      DJNZ R7,LOOP

      MOV 40H,#00H

      SJMP DD

 LK:

 MOV40H,#0FFH

 DD:

 SJMPDD

7.外部RAM首址为table的数据表中,有10个字节的数据。

编程将每个字节的最高位无条件地置“1”。

       ORG0030H

  MOV DPTR,#table

   MOV R6,#10

LOOP:

MOVXA,@DPTR

   SETB E7H

   MOVX@DPTR,A

   INC DPTR

   DJNZR6,LOOP

8、 8000H开始的有200个字节的源数据区,隔一个单元送到4000H开始的数据区。

在目的数据区中,每隔两个单元写一个数。

如遇0DH(回车)则传送结束。

           ORG 0030H

     MOV DPTR,#8100H;源数据区首址

      PUSH DPL    ;源首址暂存堆栈

      PUSH DPH    ;

      MOV DPTR,#4000H;目的数据区首址

      MOV R2,DPL;目的首址暂存寄存器

      MOV R3,DPH   ;

MOV R7,#200

LOOP:

POP DPH     ;取回源地址

       POP DPL     ;

       MOVX A,@DPTR;取出数据

       INC DPTR     ;源地址增量

      INC DPTR      ;隔一个单元

      PUSH DPL    ;源地址暂存堆栈

       PUSH DPH    ;

      MOV DPL,R2  ;取回目的地址

      MOV DPH,R3  ;

      CJNEA,#0DH,LL;是否为0DHSJMP LP    ;是0DH则传送结束

LL:

 MOVX @DPTR,A  ;数据送目的区

     INC DPTR  ;目的地址增量

     INC DPTR;隔两个单元

     INC DPTR   

     MOV R2,DPL     ;目的地址暂存寄存器

      MOV R3,DPH  ;

      DJNZ R7,LOOP  ;没完,继续循环

   LP:

    RET    ;返回主程序

9、 输入缓冲区inbuf存有80个字节,编程实现将其中所有的组分隔符(1DH)地址依次压入separ栈中。

           ORG 0030H

      MOV SP,#separ

      MOV R0,#inbuf

      MOV R4,#80

 LOOP:

MOV A,@R0

      CJNE A,#1DH,LPP;是否为1DH

       MOV 7FH,R0;是则将组分隔符

       PUSH 7FH;地址依次压入separ栈中。

LPP:

INCR0

     DJNZ R4,LOOP

10、内部RAM缓冲区buffin向外部RAMbuffou传送一个字符串,遇0DH结束,置PSW的F0位为“1”;或传送完128个字符后结束,并置PSW的OV位为“0”。

              ORG 0030H

     MOV R0,#buffin

     MOV DPTR,#buffou

     MOV R7,#128

LOOP:

MOV A,@R0

     CJNE A,#0DH,LP

     SJMP STOP

 LP:

MOVX@DPTR,A

    INC R0

    INC DPTR

    DJNZ R7,LOOP

    CLR OV

    SJMP PP

STOP:

SETB F0

 PP:

  SJMP PP

11、编写读取运行定时器中计数器值并送LED显示器的程序。

可根据需要定义子程序。

12、求16位带符号二进制补码数的绝对值。

假定补码放在内部RAM的num和num+1单元中,求得的绝对值仍放在原单元中。

     ORG0030H

   MOVR0,#num+1

   MOVA,@R0

   JNBACC.7,KK

   DECR0

   MOVA,@R0

     MOV @R0,A

     INC R0

    MOV A,@R0

    CPLA

    ADDC A,#00H

    MOV@R0,A

KK:

SJMPKK

13、求16位补码数的原码。

16位补码数放在内部RAM的data和data+1单元中,转换后得到的原码仍放在原单元中。

      ORG0030H

   MOVR0,#data+1

   MOVA,@R0

   JNBACC.7,KK

   DECR0

   MOVA,@R0

   CPLA

   ADDA,#01H

    MOV @R0,A

     INC R0

    MOV A,@R0

    CPLA

    ADDC A,#00H

    MOV@R0,A

KK:

SJMPKK

14、从内部RAM20H单元中开始存放一组带符号数,字节数存在1FH中,请统计出其中大于0,等于0和小于0的数的数目,并把统计结果分别存入one、two、therr3个单元中。

           ORG 0030H

     MOV R0,#20H

     MOV R7,1FH

     CLR A

     MOV one,A

     MOV two,A

     MOV therr,A

LOOP:

MOV A,@R0

      JNZ KK

      INCtwo;0单元计数

      SJMPKP

  KK:

 JBACC.7,PP

      INCone;正数单元计数

      SJMPKP

  PP:

 INCtherr;負数单元计数

  KP:

 INCR0

     DJNZ R7,LOOP

15、5个双字节数,存放在外部RAM从barf开始的单元中,求它们的和,并把和存放在sumg开始单元中,请编程实现。

START:

MOV   R0,#BARF

         MOV   R1,#SUMG

         MOV   R2,#04H

         MOVX  A,@R0

         MOV   R3,A

          INC     R0

          MOVX  A,@R0

          MOV    R4,A

LOOP:

  INC     R0

         MOVX  A,@R0

         ADD    A,R3

         MOV    R3,A

         INC     R0

         MOVX  A,@R0

         ADDC  A,R4

         MOV    R4,A

         JNC     HER

         CLR    A

         ADDC   A,#00H

         MOV    R5,A

HER:

  DJNZ    R2,LOOP

         MOV   A,R3

         MOVX @R1,A

         INC     R1

         MOV    A,R4

         MOVX  @R1,A

         INC     R1

         MOV    A,R5

         MOVX  @R1,A

HERE:

  SJMP    $

16、把外部RAM中block1为首地址的数据块传送到内部RAM以block2为首地址的单元中去,数据块的长度为N字节。

MOV    R0,#BLOCK1

         MOV    R1,#BLOCK2

         MOV    R7,#N

LOOP:

  MOVX  A,@R0

         MOV    @R1,A

         INC     R0

         INC     R1

         DJNZ    R7,LOOP

   CPLA

   ADDA,#01H

-------------------------------------------------------------------------------------------------------------

单片机基础问答题答案:

第5章

1、 在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,为什么不会发生冲突?

答:

外接程序存储器和数据存储器的连接信号不同,及所使用的指令不同。

外接程序存储器连接PSEN信号,数据存储器连接WR,RD信号,另外访问外接程序存储器用MOVC指令,访问外接数据存储器用MOVX指令。

2、 以两片Intel2716给80C51单片机扩展一个4KB的外部程序存储器,要求地址空间与8051的内部ROM相銜接,请画出逻辑连接图。

   3、 试以一片Intel2716和一片Intel6116组成一个既有程序存储器又有数据存储器的存储器扩展系统,请画出逻辑连接图,并说明各芯片的地址范围。

 

 4.以译码编址方式,把4片Intel6116组成8KB的数据存储器,请画出逻辑连接图,并说明各芯片的地址范围。

-------------------------------------------------------------------------------------------------------------

第六章  习  题

  编程题和问答题

1、单片机用内部定时方法产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现。

答:

定时5μ

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2