打印

MCS-51单片机常见问题14问

[复制链接]
2848|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tee.|  楼主 | 2012-12-18 11:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?

MCS-51单片机在一块芯片中集成了 CPU 、RAM、ROM、定时/计数器、多功能 I/O 口 和中断控制等基本功能部件。 单片机的核心部分是 CPU ,CPU 是单片机的大脑和心脏。 程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据 暂存和缓冲、标志位等。 定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时 ,它是定时器;当它对外部事件进行计数时,它是计数器。 I/O 接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外 设状态)和发布命令等。 中断控制可以解决 CPU 与外设之间速度匹配的问题,使单片机可以及时处理系统中许 多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。

二、MCS-51单片机的 EA、ALE和PSEN 端的功能是什么?

答:ALE——ALE 为地址锁存允许信号,在访问外部存储器时,ALE 用来锁存 P0送出的低 8 位地址信号。 PSEN ——外部程序存储器的读选通信号。当访问外部 ROM 时, PSEN 产生负脉冲作 为外部 ROM的选通信号;在访问外部 RAM或片内 ROM时,不会产生有效的PSEN 信 号。 PSEN 可驱动 8 个LSTTL 门输入端。 EA ——访问外部程序存储器控制信号。对 8051 和8751 ,它们的片内有 4KB 的程序存 储器。当 EA 为高电平时,CPU 访问程序存储器有两种情况:一是访问的地址空间在 0 ~4K 范围内,CPU 访问片内程序存储器;二是访问的地址超出 4K 时,CPU 将自动执 行外部程序存储器的程序。对于 8031 ,EA 必须接地,只能访问外部 ROM。

三、MCS-51单片机的 P3口具有哪些功能?

答:P3口是双功能口,除了作为准双向通用 I/O 口使用外,每一根口线还具有第二种功能 ,P3口的各位如不设定为第二功能则自动处于第一功能。P3的第二功能涉及到串行口 、外部中断、定时器,与特殊功能寄存器有关。

四、89C51单片机有几个中断源?它们的中断标志位分别是什么?这些中断标志位是如何产生的?又是如何清“0”的?

答:5个,外部中断0:IE0,开放中断后,当INTO引脚有下降沿或者低电平时产生,响应中断后自然清0
定时器0:TF0外部中断1:IE1开放中断后,当INT1引脚有下降沿厚着低电平时产生,响应中断后自然清0
定时器1:TF1开放中断后,当定时或计数时间到产生,响应中断后自然清0.另外如果不开放中断,采用软件判断是,需要软件清0.
串口:RI/TI,通信开始后当接收完或者发送完一帧后产生,响应中断后需要软件清0.

五、如果采用晶振的频率为 3MHz ,定时/计数器工作方式 0、1、2 下,其最大的定时时间为多少?

答:内部定时脉冲周期=机器周期=12/3Mhz=4us
工作方式 0:Tmax
=8192*4us=32.768ms
工作方式 1:Tmax
=65536*4us=262.144ms
工作方式 2:Tmax
=256*4us=1.024ms

六、定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?

答:其计数脉冲由单片机振荡脉冲 12 分频输出的机器周期脉冲提供,定时时间与工作方式、晶振频率和预置数等因素有关。

七、定时/计数器的工作方式 2 有什么特点?适用于哪些应用场合?

答:工作方式2 具有初值自动重新加载和循环工作的特点,适用于产生固定脉宽的脉冲信号,和作为串行口波特率发生器使用。

八、一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时?

答:方法一:让一个定时器先定时,溢出后,再启动另一个定时器定时;
方法二:在第一个中断处理子程序中加入计数器,计数器满后,就去启动另一个定时器定时,把要处理的事件放第二个中断处理子程序中。

九、简述串行口接收和发送数据的过程。

答:MCS-51单片机内部有一个全双工的异步串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据,也可以发送数据,串行口发送的过程是:先从累加器 A 中读入 8 位数据到 SBUF,随后在串行口有硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的控制下,由 TXD端串行输出,一个字符帧发送完后,使 TXD输出线维持在 1 状态下,并将 SCON 寄存器的 TI置1,通知 CPU 可以发送下一个字符帧。串行口接收的过程是:SCON 的REN 位应处于允许接收状态(REN=1),在此前提下,串行口采样 RXD端,当采样到从 1 向0 的状态跳变时,就认定是接收到起始位,随后在移位脉冲的控制下,把通过位采样脉冲接收到的数据位移入接收寄存器中,直到停止位到来之后把停止位送入 RB8 中,并置位中断标志位 RI ,通知 CPU 从SBUF 取走接收到的一个字符。

十、为什么定时/计数器 T1用做串行口波特率发生器时,应采用方式 2?若已知时钟频率、通信波特率,
如何计算其初值?

答:因为方式 2 是有自动重装载计数值的功能,从而可以产生精确的波特率。串行工作方式0 和方式 2 波特率是固定的,所以不用设初值;串行工作方式 1 和方式 3 时:波特率:BR = (2SMOD×Td)/32溢出一次的时间:1/ Td  = (256-TH1)*12/ fosc溢出率:Td  =  fosc/[12×(256-TH1)]初值:TH1 = 256-  fosc/(12* Td)

十一、单片机应用系统中为什么要进行系统扩展?

答:8031 、8032 等单片机不提供用户程序存储器,必须进行程序存储器的扩展,以存放控制程序、数据表格等;8751 等单片机虽然向用户提供 EPROM 程序存储器,但程序存储器空间容量不大,程序存储空间不足时,还必须扩展外部程序存储器。MCS-51系列单片机内部通常有 128B至256B的片内数据存储器,用于一般的控制及运算是足够的,但若用于数据存储,其容量是不足的,在这种情况下,必须扩展数据存储器。MCS-51系列单片机对外提供 32 条I/O 口线,但其 P0口作为地址/数据复用口,P2口用于提供高 8 位地址,而其 P3口具有第二功能,若扩展了程序存储器或数据存储器,单片机的 I/O 口往往也不够用,有时必须进行 I/O 口的扩展。应用系统中有时还涉及到数据的输入、输出、人机交互信息等接口问题,必须进行有关接口电路扩展。

十二、A/D 及D/A 转换的含义是什么?

答:A/D 转换是指将模拟信号转换为数字信号,主要用于微机控制系统的模拟信号数据采集。D/A 转换是指将数字信号转换为模拟信号,主要用于恢复模拟信号或进行模拟控制。

十三、DAC0832器件有哪些主要技术指标?其含义是什么?

答:DAC0832是将数字信号转换为模拟信号的器件。它的主要技术指标及含义如下:分辨率:8 位,可以将 8 位数字量转换为模拟量;建立时间:1μS ,即从数字量写入 8 位DAC寄存器到产生与输入数字量对应的模拟量输出的时间;输入信号:与 TTL 电平兼容的二进制信号;输出信号:与输入二进制信号对应的电流信号;电源:单一+5V 电源;

十四、ADC0809器件有哪些主要技术指标?其含义是什么?

答:ADC0809是将模拟信号转换为数字信号的 AD器件,它的主要技术指标及含义如下:分辨率:8 位,可以将输入模拟量转换为与之对应的 8 位数字量;信号输入范围:0-5V;转换时间:即完成一次 A/D 转换所需时间,与外加时钟信号频率有关,外部时钟信号为500KHz 时转换时间为 128μS ;输出信号:与输入模拟信号对应的 8 位二进制数字量,信号电平与 TTL 电平兼容;电源:单一+5V 电源;

相关帖子

沙发
autopccopy| | 2012-12-18 13:04 | 只看该作者
本帖最后由 autopccopy 于 2012-12-18 13:06 编辑

不错,很基本的东西。顶!

不过用了增强型51单片机,很多外设都内置了,例如程序ROM, EEPROM(FLASH), AD, PWM, 复位电路等。原来的不少引脚已经可解放为普通IO了,典型如:EA、ALE和PSEN。甚至例如STC15F2K60S2,STC15F204EA等只要底线和电源2根线就是最小系统! :)

使用特权

评论回复
板凳
zf_015820| | 2012-12-18 13:17 | 只看该作者
不错,顶

使用特权

评论回复
地板
tangtvc| | 2013-4-4 17:25 | 只看该作者

使用特权

评论回复
5
张金禄| | 2013-5-25 12:45 | 只看该作者
急求汇编语言大师帮我看一下我这个电路图怎么让系统报警和实现双机通信          ORG 0000H
      JMP MAIN
          ORG 0003H
          JMP INT_0
          ORG 000BH
          JMP T0_INT
          ORG 0013H
          JMP INT_1
          ORG 001BH
          JMP T1_INT
          ORG 0023H
          JMP _SBUF                  
MAIN: SETB EA                 //开中断 ,
      SETB ET0
          SETB ET1
          SETB EX0
          SETB IT0
          SETB EX1
          SETB IT1
          MOV TMOD,#52H
          MOV TH0,#106
          MOV TL0,#106
          MOV TH1,#0F8H
          MOV TL1,#30H
          SETB TR0
          SETB TR1
          MOV 20H,#30  //报警下限
          MOV 21H,#120  //报警上限
          MOV SCON,#60H//开串口通信


          clr p3.6
          clr p3.7
LOOP: JB P1.7,$                 //3秒内计数,模拟传感器采集数据
          INC R5
          JNB P1.7,$
          JMP LOOP

INT_0: INC R4
           MOV A,R4      // 与测试值比较
           MOV B,R5                 //保存实测滴速
           SUBB A,R5
           Jc LOOP1

       MOV A,R4
           LCALL DISPLAY
           MOV P0,A
           jmp out0
           loop1:

           out0:
           RETI
INT_1:
       DEC R4                //设定值
           MOV A,R4            //与测试值比较
           MOV B,R5                                          //保存实测滴速
           SUBB A,R5
           Jc LOOP2            
                                  
       MOV A,R4
           LCALL DISPLAY
           MOV P0,A
           jmp out2
           LOOP2:

           out2:
           RETI                         
T0_INT:
       CPL P3.4
       RETI
     
T1_INT:
      MOV TH1,#0F8H
          MOV TL1,#30H
          INC R6
          CJNE R6,#3,OUT
          MOV A,R5                           //3秒采集的次数传入累加器A
          //MOV SBUF,R5                   //传向sbuf通信
          MOV B,#20                           //3秒中的滴数乘以20就是一分钟的数
          MUL AB                         //采集到(计算出)1分钟点滴速度
          //MOV R1,B                        //保存数据高八位
          //MOV R2,A                   //保存低八位
          SUBB A,R4       //设置好的滴速 //AB寄存器中怎么和在一起?
          Jc LOOP3
         
          //MOV A,R2
          //MOV B,R1
          //MOV P1,R1           //B中为高八位不可能超过九直接输出
           LCALL DISPLAY   //调用显示程序
           mov p0,a
           clr p3.6
           SETB P3.7
          MOV R6,#0           //中断次数清零
          MOV R5,#0         //         测试到点滴速度清零
          LOOP3:
              //电机
           OUT:
       RETI            
          
_SBUF:
          
      
          
          RETI

DISPLAY:
         MOV B,#10
         DIV AB
         SWAP A
         ADD A,B
         RET

/*LOOP1:MOV A,B                //判断滴速是否在上限与下限之外
      SUBB A,20H
          JNC WARN
          MOV A,B
          SUBB A,#21H
          JC WARN
          LCALL DISPLAY
          LCALL BUJIN        //设定速度与测得速度不等且不超过范围
          RET */
WARN:SETB P2.4                 //激发报警器
     SETB P3.7                   //点亮红灯
         LCALL BUJIN          //驱动步进电机
         JB P1.7,WARN          //判断是否按取消报警键
         CLR P2.4
         CLR P3.6
          SETB P3.7
          RET
BUJIN:MOV A,B
SUBB A,R5
      //JC  LOOP2//跳到反转
          //JNC LOOP3//跳到正转
                   
          END
          

QQ截图20130525122350.png (21.11 KB )

QQ截图20130525122350.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有进步,嘿嘿。。

23

主题

1652

帖子

6

粉丝