×
单片机 > 单片机程序设计 > 详情

51手记之MEGAWIN

发布时间:2020-06-05 发布时间:
|
        MEGAWIN系列单片机基于80C51的高效1-T结构的单芯片微处理器,每条指令需要1~7个时钟周期 (比标准8051快6~7倍),与8051指令集兼容。
1.基本特性
    工作频率:24MHZ(最大,外部晶体)
    有两种节能模式和8位的系统时钟分频器。
    时钟源:外部晶体/时钟,内部高频/低频RC振荡器;上电后,内部高频RC振荡器(12MHZ)为默认的系统时钟源。软件能使能其它振荡器电路和通过编程AUXRA寄存器对它们进行切换。切换时钟源为外部晶体时,必须使能外部晶体振荡器电路并等它稳定后再切换。选好时钟后,可软件禁止未用的振荡器电路以减少能耗。
    切换系统时钟为外部时钟:
    1).使能外部时钟
    IFMT=0X07;//AUXRA读操作
        SCMD=0X46;
        SCMD=0XB9;//此时IFD的值=AUXRA的值
        IFD |= 0X08;//设置使能外部晶体,将AUXRA的预设值写入IFD
        IFMT=0X06;//AUXRA写操作
        SCMD=0X46;
         SCMD=0XB9;
        2).切换到外部时钟
        IFMT=0X07;
        SCMD=0X46;
        SCMD=0XB9;
        IFD |= 0X03;//设置外部晶体为系统时钟
        IFMT=0X06;
        SCMD=0X46;
        SCMD=0XB9;
        3).关闭内部时钟
        IFMT=0X07;
        SCMD=0X46;
        SCMD=0XB9;
        IFD &= 0XFB;//设置将内置晶体停止
        IFMT=0X06;
        SCMD=0X46;
        SCMD=0XB9;
        有六个复位源: 上电复位、WDT复位、软件复位、外部(RST)复位、掉电检测器(brown-out)复位及非法地址复位。
2.存储器
1)程序存储器
    支持ISP(在系统可编程)/IAP(在应用可编程);IAP空间可用作数据闪存。
        IAP区域由IAPLB和ISP起始地址共同决定:IAP低边界 = IAPLB * 256;IAP高边界 = ISP起始地址 – 1;IAP低边界地址必须不要高于ISP起始地址或非设备定义的空间。否则,可能会导致Flash存储器中数据内容遭到破坏。
2)数据存储器
        片上256字节随机存取储存器和1024字节片上扩展存储器(XRAM)
3.通用I/O口
    有41个普通I/O口(GPIO),P0, P1, P2, P3, P4(P40-P46)能被配置为准双向口、上拉输出、集电极开漏输出以及高阻输入,P6.0 和 P6.1 仅可作准双向口模式及复用为 XTAL2和 XTAL1。每个端口有两个模式寄存器来选择各端口引脚的输出类型:
4.中断系统
    有四级中断优先级的14个中断源。与这四级中断有关联的特殊功能寄存器有IE、 IP0L、 IP0H、EIE1、EIP1L、EIP1H及XICON。
    nINT0/nINT1 触发类型:低电平或下降沿;
    nINT2/nINT3触发类型:低电平、下降沿、高电平或上升沿
5.定时器
    三个16位定时/计数器:定时器 0、定时器1及定时器2;每一个包含两个8位寄存器THx和TLx(这里,x=0、1或2)。它们可配置为定时器或事件计数器。三个定时器输出口(T0CKO 对应P34、T1CKO对应P35、T2CKO对应P10);T0/T1/T2时钟可以选择X12 模式。
    定时器功能,TLx寄存器每12个系统时钟周期(标准C51的机器周期)或每1个系统时钟周期(是标准C51的12倍)加1,通过软件设置AUXR2.T0X12、 AUXR2.T1X12和 T2MOD.T2X12位来选择 。每12个系统时钟周期加一,计数速率是1/12的晶振频率。
    计数器功能,根据对应的外部输入引脚的下降沿T0、T1或T2寄存器加1。在这功能中,每个定时器时钟周期对外部输入信号(T0、T1和T2引脚)进行采样,当采样信号出现一个高电平接着一个低电平,计数加1。当检测到跳变时新计数值出现在寄存器中。
    定时器2有四种工作模式:捕获、自动加载(向上或向下计数)、波特率发生器和可编程时钟输出,通过专用寄存器T2CON和T2MOD来选择。
    1)捕获模式
    当外部输入信号T2EX由下降沿跳变时引起定时器2的寄存器TH2和TL2分别对应的捕获到RCAP2H和RCAP2L。
    2)自动加载模式
    在复位之后,DCEN=0意思是默认为定时器2向上计数。如果DCEN置位,定时器2向上或向下计数由T2EX引脚的值来决定。
    3)波特率发生器模式
    T2CON寄存器的RCLK和/或RCLK位允许串行口发送和接收波特率既可源自定时器1或定时器2。当TCLK=0时,定时器1作为串行口传送波特率发生器。当TCLK=1,定时器2作为串行口传送波特率发生器。RCLK对串行口接收波特率有相同的功能
    4)可编程时钟输出模式
    CP/RL2=0且T2OE=1;定时器2作为一个输出占空比为50%的可编程时钟发生器,所产生的时钟从P1.0 引脚输出来。
输出频率=Fosc/4(65536-(RCAP2H,RCAP2L))
定时器2 的可编程时钟输出模式编程步骤如下:
    a.置位T2MOD寄存器的T2OE位。    
    b.清除T2CON寄存器的C/T2位。
    c.从公式计算出16位加载值并输入到RCAP2H和RCAP2L寄存器。
    d.在TH2和TL2输入一个16位初始值。可以和重载值相等。
    e.设置T2CON的TR2控制位开启动定时器。
在时钟输出模式,定时器2翻转不会产生中断
6.串行口
    2个全双工串行口,功能同标准51;
    串行口可以工作在四种模式:模式 0 提供同步通讯同时模式 1、2 和模式 3 提供异步通讯。异步通讯作为一个全双工的通用异步收发器(UART),可以同时发送和接收并使用不同的波特率。
    模式0:8位数据(低位先出)通过RXD0(P3.0)传送和接收,波特率可通过SCFG寄存器的URM0X6位选择为系统时钟频率的1/12或1/2。
    模式1:10位数据通过TXD0传送或通过RXD0接收,波特率是可变的。
    模式2:11位数据通过TXD0传送或通过RXD0接收,波特率可以配置为1/32或1/64 的系统时钟频率
    模式3:11位数据通过TXD0传送或通过RXD0接收,波特率是可变的。
    除了标准操作外,UART0还能具有侦察丢失停止位的帧错误和自动地址识别的功能。
    串口1使用独立波特率发生器,串口0可选择使用定时器1或定时器2(T2CON的RCLK和TCLK决定),也可共用串口1的波特率(RCLK=0,TCLK=0及URTS=1)
     串口1使用的寄存器SCON1、SBUF1、S1BRT需要切换到SFR页1才能使用:SFRPI=0X01;
7.可编程计数器阵列(PCA)
     该功能与标准定时/计数器相比以更少的CPU占用提供了更多的定时能力。它的优点包括减少了软件复杂度并提高了精度。
     PCA由一个专用定时/计数器作为一个6组比较/捕获模块的时间基础,6组比较/捕获模块中的每一组都可以编程为如下任意模式:
     - 上升和/或下降沿捕获
     - 软件定时器
     - 高速输出
     - 脉宽调制(PWM)输出
1)PCA 定时器/计数器
     它的时钟输入可以从以下来源选择(CPS1 和 CPS0选择):
     - 1/12 系统时钟频率
     - 1/2 系统时钟频率
     - 定时器0溢出,可以让低频时钟源输入到PCA定时器
     - 外部时钟输入,ECI(P1.1)引脚的1-0反转
2)比较/捕获模块
     6组比较/捕获模块中的每一组都有一个模式寄存器,叫做CCAPMn(n代表0,1,2,3,4,5),来选择其工作模式。ECCFn位控制当中断标志置位时每个模块的中断开启/关闭。
3)PCA运行模式
     具体工作模式与STC同。
     提供4种精度的PWM输出:8位(可自动重载)、10位、12位、16位(后3种需手动重载溢出值)
8.串行外设接口(SPI)
     提供了一个高速串行通讯接口(SPI)。SPI接口是一种全双工、高速同步通讯总线,有两种操作模式:主机模式和从机模式。无论哪种模式,12MHz系统时钟时支持高达3Mbps的通讯速度。SPI状态寄存器(SPSTAT)有一个传送完成标志(SPIF)和写冲突标志(WCOL)。
     SPI接口有4个引脚:MISO (P1.6), MOSI (P1.5), SPICLK (P1.7) 和nSS (P1.4)。
1)典型SPI配置模式:
a.单主机单从机
b.互为主机/从机
c.单主机多从机
2)注意事项
     SPI通讯中,传输总是由主机发起 。若 SPI使能(SPEN=1)并作为主机运行,写入SPI数据寄存器(SPDAT) 数据即可启动SPI时钟生成器和数据传输器,大约半个到1个SPI位时间后写入SPDAT的数据开始出现在MOSI线上。
     在开始传输之前,主机通过拉低相应nSS引脚选择一个从机作为当前从机。写入SPDAT寄存器德数据从主机MOSI引脚移出,同时从从机MISO移入主机MISO的数据也写入到主机的SPDAT寄存器中。移出1字节后,SPI时钟发生器停止,置传输完成标志SPIF,若SPI中断使能则生成一个中断。主机CPU和从机CPU中的两个移位寄存器可以看成一个分开的16位环形移位寄存器,数据从主机移到从机同时数据也从从机移到主机。这意味着,在一次传输过程中,主从机数据进行了交换。
    SPI在发送方向是单缓冲的,而在接收方向是双缓冲的。发送数据直到上一次数据发送完成后才能写入移位寄存器,数据发送过程中写入数据寄存器就会使WCOL(SPSTAT.6) 置位来表明数据冲突。这种情况下,正在发送的数据继续发送,而刚写入数据寄存器造成冲突的数据就会丢失。WCOL使用软件向其位写入’1’来清零。
     SPI时钟频率选择(主机模式)使用SPCTL寄存器的SPR1 和SPR0 位来设置。
9.键盘中断
     键盘中断功能主要用于当P2口等于或不等于某个值时产生一个中断,这个功能可以用作总线地址识别或键盘键码识别。
     键盘中断掩码寄存器(KBMASK) 用来定义P2口哪些引脚可以产生中断;键盘模式寄存器(KBPATN)用来定义与P2口值进行比较的值,比较匹配时硬件置键盘中断控制寄存器(KBCON)中的键盘中断标志(KBIF)。
10.10位模数转换器ADC
     ADC子系统由一个模拟多路器(AMUX)、一个200ksps、10逐次逼近型模数转换器组成。ADC转换时钟由ADCON寄存器的SPEED1、SPEED0两位决定的系统时钟分频而来。(备注:目前建议ADC操作时,系统时钟不要超过20MHz)
     ADC转换结果=Vin*1024/Vdd;
     在使用ACD功能之前,用户应:   
     a.设置ADCEN 位启动ADC硬件;     
     b.设置SPEED1 和 SPEED0位设定转换速度;
     c.设置CHS2、CHS1 和CHS0选择输入通道;
     d.设置P1M0和P1M1寄存器将所选引脚设定成只输入模式;
     e.设置ADRJ 位配置ADC转换结果输出形式。
     一旦转换结束,硬件自动清除ADCS位,设置中断标志ADCI,并将转换结果按照ADRJ的设置存入ADCH和ADCL。为了获得最佳转换效果,用作ADC的引脚应当禁止其数字输出和输入,可以将引脚设为只输入模式。
11.看门狗定时器WDT
     看门狗定时器 (WDT) 用来使程序从跑飞或死机状态(诸如电源噪音/波动、静电干扰等使CPU运行出现混乱或死机)恢复的一个手段。软件跑飞时,WDT使系统复位来防止系统执行错误的代码。WDT由一个15位独立定时器、一个8分频器和一个控制寄存器(WDTCR)组成。
      看门狗溢出时间=12*分频值*32768/SYSCLK (系统时钟为12Mhz时,最长延时8s,时钟越高,延时越短)



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR单片机语音识别电路模块设计