找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1659|回复: 0

西电21秋单片机原理模拟试题一答案

[复制链接]
发表于 2021-9-15 08:21:23 | 显示全部楼层 |阅读模式
一. 基本概念题
   1. 回答问题  ( 每题 3 分)
       1) AT89C51片内程序存贮器是多少KB      (  )
             答案:    4kB
             解释: 要求搞清不同型号的单片机其片内程序存贮器空间大小是不相同的。
AT89C51内程序存贮器是4KB, AT89C52内程序存贮器是8KB

        2)AT89C51 使用内部程序存贮器时/EA 如何接?       ()
           答案:   +5V 或高电平
           解释: 要求掌握AT89C51程序存贮器的正确使用,AT89C51内程序存贮器是4KB,
            通常直接使用内部程序存贮器,不需再扩展外部程序存贮器,但其管脚/EA必须接+5V 或高电平.如用户程序超过4KB,可直接使用AT89C52,其内程序存贮器是8KB,如还不够使用,则可扩展外部程序存贮器,切记/EA应接地。

        3)当P0、P1、 P2、 P3 都用作普通 I/O口时,那些口需要外接上拉电阻?( )
           答案:  P0口           
解释: 要求掌握AT89C51单片机各个口的特点,P1、 P2、 P3口其内部有上挂电阻,作为普通I/O口时,无需要外接上拉电阻,直接使用,P0口内部无上拉电阻,总线方式外接程序存贮器时不需外接上拉电阻,作为普通I/O口时,一定要加上拉电阻,上拉电阻典型值为 5.1k---10k.

        4) 单片机复位后从程序存贮器那个地址开始执行程序?          (  )
答案:  0000H      
解释: MCS51单片机(AT89C51是其中一种)复位后都是从 0000h 开始执行程序。
             要求用户在编写程序时,首条语句必须是   org  0000h, 经汇编后产生HEX目标文件,在烧录片子时,就自动将程序从 0000 单元开始存放。

        5) AT89C51内部RAM通常可划分为几个区?                    ()
答案:  3个区      
解释:AT89C51内部RAM共有256个字节单元,用户可用低128 个单元, 将其划分为: 通用寄存器区00—1fh  32个单元, 、位寻址区20h- 2fh  16个单元、普通RAM区30h –7fh. 80个单元;高128个单元地址作为特殊功能寄存器使用。


        6) 条件转移指令的寻址方式是                                (    )
答案:  相对寻址      
解释:AT89C51单片机条件转移指令满足条件则转,不满足条件则顺序执行,其转移范围在PC  当前值的+127--- -128个字节单元之间。所有的条件转移指令都是相当寻址。

        7)位操作的寻址方式是                                      (   )
答案:  直接寻址      
解释:AT89C51单片机中设有独立的位处理器,位操作指令能对内部RAM中的位寻址区和某些有位地址的特殊功能寄存器进行位操作,也就是说可对位地址空间的每个位进行位变量传送、状态控制、逻辑运算等操作。

        8)  设单片机外加晶振为6M , 则一个机器周期是多少微妙?        (  )
答案:  2微妙      
解释:要求搞清楚概念:  机器周期和时钟周期。  一个机器周期包含 12个时钟周期, 时钟周期又称振荡周期。 外加 6M 晶振,一个振荡周期时间是 1/6微妙,
            12 个振荡周期是  12 *1/6= 2 微妙。
             如果单片机外加晶振为12M , 则一个机器周期是1微妙。
        9)   SP指针是多少位寄存器?                                (  )
答案:  8 位寄存器      
解释:要求搞清楚:AT89C51单片机的堆栈指针 SP为8位的特殊功能寄存器,SP 可指向片内RAM  (00h- 7fh ) 128字节的任何单元,单片机复位后,SP 的初值自动设置为 07H ,通常在用户程序开始,需要用户自己根据RAM单元分配情况设置 SP 值。
        10) PSW 是多少位标志寄存器?                               (  )
答案:  8 位寄存器     
解释:要求搞清楚:程序状态字寄存器 PSW.   它相当于标志寄存器,用于指示指令执行状态,供程序查询和判别之用。是8位寄存器,共有 7个有效标志,其中一位可作为用户标志使用。

    2.判别下列指令是否合法,如合法,在题后写合法,无需讲理由;如非法请写“非法”并讲明理由( 无理由不得分)             ( 每题 3 分)
       1)ADD  R0,A;      
答案:  非法     
     解释: 要求搞清楚AT89C51单片机中,加法指令目的操作数只能是累加器 A ,不能为其它寄存器。并要注意 ADD 和ADDC 的区别, 本题中目的操作数是 R0 , 故非法。
       2) SUBB  A,  @ R0
          答案:  合法
          解释:要求搞清楚什么是寄存器间接寻址。
             寄存器间接寻址是把指令中指定的寄存器的内容作为操作数的地址,把该地址对应单元的内容作为操作数。这种寻址方式可访问内部RAM 和外部 RAM.请注意,在这种寻址方式中寄存器只能只能用R0 或 R1寻址。在AT89C51单片机中减法指令只有一种方式,在应用时要注意区分带借位和不带借位。本题中源操作数采用的是寄存器间接寻址。
       3) DIV  AB;         
          答案:  合法
            解释:要求搞清楚AT89C51单片机是 8位单片机,在直接进行除法时只能8位数除8位数,要求搞清指令的格式及使用的寄存器,要分清哪个寄存器放被除数,那个放除数。如果写为 DIV  BA,就格式错。
       4) INC   70H        
          答案:   合法
           解释:要求搞清楚加1 指令允许直接地址加一, 其指令格式为 INC  DIRECT  ,
             其操作是将直接地址的内容加1,如70H 原来内容为05H,  INC 70H后,70H内容为06H,但务必注意 直接地址的范围,通常只能用在内部RAM  00H-7FH, 对80H 以上的内部RAM 读写,只能用寄存器间接寻址方式。
       5) SETB  28H.0;      
       答案:合法
       解释:要求搞清楚AT89C51单片机内部RAM 单元的位可寻址区,其字节单元地址是从 20H 到 2FH, 位地址是从 00 H – 7FH . 例如 20H.0 其位地址是00H ; 2FH.7其位地址是 7FH; 本题中   SETB  28H.0;等效于 SETB  40H; 即28H.0 的位地址就是 40H;
       6) MOVX  @R0, #156;  
答案:合法
         解释:要求搞清楚什么是寄存器间接寻址,间接寻址寄存器只可使用 R0 或R1,R2到R7都不能作为间接寻址寄存器使用;同时本题要求搞清楚间接寻址源操作数可使用立即数。题中用 R0,且#156是立即数,故合法。
       7) INC     R6        
答案:合法
          解释:要求搞清楚加1指令的功能及格式。  加1 指令的功能是把操作数指定单元的内容加1 ,除奇偶标志外,操作结果不影响 PSW中的标志位,若原来单元的内容是 FFH,加1 后将变为 00H.  本题中指令格式正确,且可使用 R6,其功能就是将 R6 的内容加1。 如 (r6)= 03h, 执行该指令后,(r6)= 04h。
       8)  SWAP   B        
答案:非法
          解释:要求搞清楚SWAP 指令是累加器A 半字节交换指令,其操作数只能是A ,其功能是将 A 的高低4位互换,本题中操作数用 B , 故非法。
       9) PUSH    R0           
答案:非法
          解释:要求搞清楚堆栈操作指令   PUSH   direct    POP  direct,  其操作数是直接地址,  本题中R0 在AT89C51单片机有 4个,工作寄存器区0到工作寄存器区3 ,  
         堆栈不知该压入哪个工作寄存器区的 R0, 故非法。 如用户明确要压入工作寄存器区0 的 R0 , 则可    PUSH   00H;
  10)    RL    R2     
答案:非法
          解释:要求搞清楚RL 是不带进位C 的左移指令,其操作数只能是累加器 A,不能为其它。本题中操作数用的是 R2,故非法。

      3  写出下列指令的源操作数寻址方式  ( 每题 3 分)
         1)  MOV  A,  20H;            
答案:   直接寻址
         解释:要求搞清楚直接寻址方式的特点:指令中直接给出操作数的地址,本条指令中,源操作数 20H是直接地址,注意单片机中立即数与微机原理立即数不同,加井号和不加加井概念完全不同,在使用时要特别注意。

         2)   MOV  DPTR,  #0AAAAH  
答案:  立即寻址
         解释:要求搞清楚立即寻址的特点,它是将一个立即数送入目的操作数,注意立即数只能作为源操作数,本题中#0AAAAH, 是一个立即数且为源操作数。DPTR是一个16位的寄存器,所以可直接放入16位立即数。

         3)   MOV    A,   P1;            
答案:   直接寻址
         解释:要求搞清楚直接寻址方式的特点:指令中直接给出操作数的地址,本条指令中,表面上看,未直接给出地址,给出的是 P1 , 在AT89C51单片机中四个口都有其地址,用专用标志就代替实际地址,方便用户编程。P1实际地址是90H
         4)   MOV    @R1, A           
答案:    寄存器寻址
解释:要求搞清楚寄存器寻址方式的特点:操作数使用的是寄存器,通常是R0到R7,包括累加器 A 等。
         5)   MOV  A,  @R0              
  答案:    寄存器间接寻址
解释:要求搞清楚寄存器间接寻址方式的特点:其寄存器只能用 R0 或R1,寄存器间接寻址是把指令中指定的寄存器的内容作为操作数的地址,把该地址对应单元的内容作为操作数。
二.   编程与应用           (共25分)
1.  将片内 RAM首址为20H 单元的10H个字节内容传到首址为50H的连续单元中
                                               (  )
要求:  1.  画出流程图
2. 编出程序 ,要求用循环程序完成。
解答:





子程序:
                  DATASUB:
                          MOV R0,#20H;   源地址
                          MOV R1,#50H;   目的地址
                          MOV  R7,#10H;  传送的数据长度

                 LOOP1:   MOV  A,@R0;  取数
                           MOV  @R1,A;  存数
                           INC  R0     ;  调整指针
                           INC  R1     ;  调整指针
                           DJNZ   R7, LOOP1; 循环结束判别
                            RET

           解释:   本题提示
(1)要注意数据传送的源地址和目标地址都是在单片机内部RAM。
              (2)要采用循环程序编程,要设置正确源地址,目标地址及传送长度。
              (3)要用寄出去间接寻址方式。   

2        找出内部RAM的存贮单元 ST1和ST2 中存放的两个不带符号的二进制数中的大数,且将其存入 RAM 的ST3单元中。
       (要求用子程序完成)

解答:

      CMPSUB:
                MOV  R0,#ST1
                MOV  A,@R0
                MOV R2,  A
                MOV R0,#ST2
                MOV A,@R0
                CLR   C
                SUBB   A,  R2
                JNC   BIG2
                XCH  A, R2

         BIG1:  MOV R0,#ST3
                 MOV @R0,A
                 RET
         BIG2:   MOV A,@R0
                 SJMP   BIG1

解释:   本题提示:  
(1)要注意本题要比较的两个数存放的地址,它不是直接给出,而是用ST1和ST2 给出,在使用时前面要加井号如MOV  R0,#ST1
                  (2)用相减的方法,判别 C ,是否有借位可知哪个数大。
                  (3).本题要求用子程序完成,要符合子程序格式的要求,有子程序名、及结尾 RET等。



              3.  将片内 RAM 首地址为30H 单元的内容取传送到片外 RAM 首地址为00F0H 单元;        共传送20 个字节;


               要求:   1.  画出流程图
2 . 编出程序

解答:   

   MOVSUB:
          MOV R0,#30H
          MOV DPTR,#00F0H
          MOV  R7,# 20

LOOP1:    MOV  A,@R0
           MOVX  @DPTR,A
           INC  R0
           INC  DPTR
           DJNZ    R7, LOOP1
           RET
           解释:   本题提示:
(1)要注意数据传送的源地址和目标地址,要传送的数是在单片机内部RAM。用MOV 指令。欲将数传送到片外,要用MOVX指令。
            (2)要采用循环程序编程,要设置正确源地址,目标地址及传送长度。
       (3) 流程图参照  1  题




QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-4 03:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表