登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] 定时器

[复制链接]
发表于 2018-2-28 21:07:01 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 利用定时器进行倒计时
开始时间: 2018-02-28
结束时间: 2018-02-28
    要实现倒计时并在数码管上显示,需要学习定时器,数组,以及数码管的显示。
   
210659kjqgssj3dx7m7cza.jpg
     将0~15的数值储存在数组里即可。
    点亮数码管的方法和点亮led小灯的方法一样。
    至于定时器的运用可按照以下四个步骤:
210659omnmbx5x5ww56qx1.jpg
   

      通过设置TMOD来确定定时器工作模式。

210700qzimgbbhi6yiftp5.jpg
     M1=0,M=1设置工作模式1,16位定时器。
     
210701sqs7cup7h46d65p6.jpg
     值得一提的是通过设置TH0和TL0的值计算一共有多少机器周期即时间。
#include<STC12C5A60S2.H>
void main()
{
        unsigned char cnt = 0;
        signed char see = 15;
        unsigned char code LEDchar[] = {0xC0, 0xF9, 0xA4,                         0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88,0x83, 0xC6, 0xA1, 0x86, 0x8E};
                P22 = 0;        P21 = 0;
          P20 = 0;        P11 = 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 = LEDchar[see];
                                        see--;       
                                if(see<=-1)
                                                see = 15;
                                }       
                                                        }
                }
}
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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