bokee.net

电子/电气工程师博客

正文 更多文章

MCS51单片机学习

                      MCS51单片机学习
                         徐丽红
                 wbymsc51.blog.bokee.net
  在初学单片机时,王工(王佰营)见我整日看书比较枯燥就花费了一些时间和精力给出了一套题让我对照题目有目的的去看书学习,当时那样做了以后效果的确很好,转眼几年过去了,回想起来那些题目确实很有意义,现在就将它抄录下来,以便于那些初学者借鉴。

一、问答题:
1.单片机复位脚保持什么电平?且至少需要多长时间,可产生复位动作?
2.单片机四组端口有什么异同?
3.单片机是如何实现数据地址复用的?
4.如何实现片内程序与片外程序的切换?
5.如何实现片内RAM与片外RAM的访问?
6.如何实现片内80H~FFHRAM及特殊功能寄存器的访问?
7.端口的低电平吸收电流和高电平输出电流哪个大?
8.如何读端口某脚的电平?
9.C/T0~C/T2是加计数还是减计数?做计数器用时,最高计时频率是多大?
10.C/T0作为定时器启动后,CPU是原地等它还是继续干自己的事?
11.在定时器C/T0动作期间,能读到其初值吗?
12.当串口在一位一位接收或发送数据期间,CPU是原地等待它还是继续干自己的事?
13.如何启动串口发送或接收数据?
14.串口默认的波特率发生器是哪个定时计数器?
15.串口接收或发送数据时,是以字节为单位收和发的吗?那在什么时刻产生中断?
16.当定时器溢出,或串口收完数据后,会自动将TF0或RI置1,产生中断,那么用程序将TF0或RI置1可产生中断吗?
17.当有两个中断申请,高优先级中断执行完后,是否直接执行低优先级中断处理程序?
18.中断处理程序用ret和reti结束有何不同?可以互换吗?
19.如何实现在中断处理结束时,去指定地方执行一段子程序,最后回到原断点处?
20.如何实现DEC dptr功能?

二、判断指令正误
1. mov      2000h,    #50h
2. mov      a,          #FFh
3. mov      #50h,      a
4. setb      TMOD.2
5. clr          PCON.4
6. setb      TR0
7. setb      20h.7
8. clr         21h.7
9. mov      sp,            #ffh
10. setb   sp.7
11. setb   a.7
12. clr      b.7
13. ORG         0007h
    jz                   next
    …….  ………………….
    ORG         f00h
next:     mov       a,              #50h   
14.       setb      GF0, 
15.       mov       r0,            #1ffh
16.       mov      dptr,          #1ffh
17.       mov      dpth,         #05h
18.       mov      dptrl,         #50h
19.       xch        a,              b
20.       xch        b,              a
21.       xch        a,              #50h
22.       mov      a,              50h
23.       movx    a,              r0
24.       movx    r0,            a
25.       mov      r0,           r1
26.       mov      r0,          @r1
27.       mov      a,           @r2
28.       mov     dptr,         a
29.        cpl      50h
30.       xrl        50h,        00h
31.       rr            b
32.       rl            c
33.     cjne        R1,          50h,       abc
34.     cjne         a,            50h,       abc2
35.     djnz         a,            next
36.     cjne         @r0,       #50h,     abc3
37.     cjne         @r0,       50h,        abc4
38.     jnb            a.7,        xxx
39.     mov         c,            50h
40.     mov         c,            #50h
41.     mov         c,            tr0
42.     ORG        0000h
           sjmp       main
           ORG         0020h
           main:       ajmp     end
          …….  ………………….
         ORG         0FF0h  

end:   mov         b,           a
43.     orl            50h,      c
44.     movc      300h,     a
45.    dec          dptr 
46.    inc           dptr
47.    mov          r1,          #90h
         mov          a,            @r1
48.   mov          a,            #0fh
        mov          r0,           #70h
        xch            a,             r0
       orl              a,             r0
三、指令分析(执行后的值)
1)     mov a,  #01h
 mov b,  @02h
 mov psw, #03h
 push a
 push b
 push psw
 pop  a
 pop  b
 pop  psw
 a=?
2) mov sp, #60h
 mov a, #00h
 mov b, #01h
 mov psw, #03h
 push a
 push b
 push psw
 mov a, #50h
 mov b, #60h
 mov psw, #70h
 pop  a
 pop  b
 pop  c
 a=?
3) mov a, #07h
 setb  acc.7
 cpl  a
 a=?
4) mov a, #7eh
 mov a, #00h
 mov b, #01h
 mov psw, #02h
 push a
 push b
 push psw
 …………………….
 pop  psw
 pop  b
 pop  a
 psw=?
5) mov a, #8fh
 rlc  a
 jc  abc
 mov b, #20h
abc:    mov b, #80h
 b=?
6) mov a, #37h
 mov 20h, #37h
 xrl  a, 20h
 a=?
7) mov psw, #00h
 mov r0,  #50h
 mov 50h, #0ffh
 mov psw, #08h
 mov a, @r0
 a=?
8) mov a, #0ffh
abc: jb  p1.1, abc
 mov a, #00h
 怎样可使(a)=0
9) mov a, #00h
 jb  p1.1, $
 mov a, 0ffh
 怎样可使(a)=0ffh?
10) mov dptr, #3007h
 movx @dptr, a
 mov a, #00h
 mov p2, #30h
 mov r0, #07h
 mov a, @r0
 a=?  
四、编程序
1)已知:x在内RAM30h
y在内RAM31h
|x-y|送到外RAM0100h中
2)用查表方式求1~9的平方
已知:x在内RAM20h
x2放在外RAM0020h中
3)用阴极发光管,接线方式如下:
a  b  c  d  e  f  g  h -LED
D6 D5 D4 D3 D2 D1 D0 D7-P1口
请写出0~F的码值
4)编一程序,用查表法,利用上面的码值,可显示0~F

关键词:单片机 MCS51 学习 习题

分享到:

上一篇:用VC++6.0编程配置ODBC数据

下一篇:再谈通过VC编程修改注册表配置ODB

评论 (0条) 发表评论

抢沙发,第一个发表评论
验证码