zoukankan      html  css  js  c++  java
  • 2017.11.20 定时器与数码管

    && : 逻辑与,都为真则真

    ||: 逻辑或,一个为真则为真

    !:逻辑非,

    &:按位与

    |:按位或

    ~:按位取反

    ^:按位异或,相异为1.例如A=0b11001100,B=0b11110000,F=A^B=0b00111100

    时钟周期:晶振就是时钟源,就是晶振分之一。

    机器周期:完成一个操作的最短时间。一个机器周期是12个时钟周期。

    定时器:打开定时器后,定时器“存储寄存器”的值经过一个机器周期自动加1,也就是说,机器周期是定时器的计数周期。

    定时器存储寄存器    sfr地址    复位值

    TH0  定时器  0x8C  0x00

    TL0          0x8A  

    TH1         0x8D

    TL1               0x8B

    TCON 定时器控制寄存器的位分配

    TMOD 定时器模式寄存器的位分配

    #include<reg52.h>

    sbit LED=P0^0;

    sbit ADDR0=P1^0;

    sbit ADDR1=P1^1;

    sbit ADDR2=P1^2;

    sbit ADDR3=P1^3;

    sbit ENLED=P1^4;

    void main()

    {

     ADDR0=0;

    ADDR1=1;

    ADDR2=1;

    ADDR3=1;

    ENLED=0;

    TMOD=0x01;

    TH0= 0xb8;

    TL0=0x00;

    TR0=1;

    unsigned char cnt=0;

    while(1)

    {  /*

      定时器使用方法

     1.设置特殊功能寄存器TMOD,配置好工作模式。

    2.设置计数寄存器TH0和TL0的初值。

    3.设置TCON,通过TR0置1让定时器开始计数

    4.判断TCON寄存器的TF0位,检测定时器溢出情况

    */

    if(TF0==1)

    {

    /*   

    晶振是11.0592MHz ,时钟周期是1/11.0592 *1000000=90422。

    定时20ms=0.02s

    机器周期X  *12/11.0592=0.02

        X=18432;

    定时器到65535+1 溢出

    T0+X=65536

    T0=47104;

    */

      TF0=0;

      TH0=0xb8;

      TL0=0x00;

      cnt++;

      if(cnt>=50)

        {

        cnt=0;

        LED=~LED;

        

        }

    }

    }

    }

    #includ<reg52.h>

    sbit ADDR0=P1^0;

    sbit ADDR1=P1^1;

    sbit ADDR2=P1^2;

    sbit ADDR3=P1^3;

    sbit ENLED=P1^4;

    unsigned char code (放入程序存储空间,节省空间)LED[]={0xC0,数码管真值表。}

    void main()

    {  

      unsigned char cnt=0;

      unsigned char sec=0;

      ENLED =0;

      ADDR3=1;

      ADDR2=0;

      ADDR1=0;

      ADDR0=0;

      TMOD=0x01;

      TH0=0xB8;

      TL0=0x00;

      TR0=1;

     

    while(1)

    {

      if(TF0==1)

      {

        TF0=0;

        TH0=0xB8;

         TL0=0x00;

        cnt++;

        if(cnt>=50)

          {

            cnt=0;

            P0=LED[sec];

            sec++;

            if(sec>=16)

              sec=0;

          }

      }

    }

    }

  • 相关阅读:
    ubuntu下安装gcc,g++
    React Native核心组件View的介绍
    React Native组件生命周期
    React Native的props和state的介绍
    android出现anr(application not response)的分析
    HDU 2050:折线分割平面
    Codeforces 989A:A Blend of Springtime
    Codeforces 990B :Micro-World
    51Nod 1089:最长回文子串 V2(Manacher算法)
    51Nod 1088:最长回文子串(暴力)
  • 原文地址:https://www.cnblogs.com/wongsh/p/7867927.html
Copyright © 2011-2022 走看看