找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2095|回复: 0
打印 上一主题 下一主题
收起左侧

单片机0到99计数器程序 有注释

[复制链接]
跳转到指定楼层
楼主
ID:789069 发表于 2020-12-17 18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//功能:00~99的简易秒表设计,两个静态数码管,定时器采用 <查询方式>
#include  "reg51.h"
void delay1s()       //函数功能:在T1工作方式1下的1s延时函数,采用查询方式实现
{  
    unsigned char i;
    for(i=0;i<20;i++)   //设置20次循环次数
    {                 
          TH1=(65536-50000)/256;    //重新设置T1计数初值高8位,定时时间50ms
          TL1=(65536-50000)%256;   
//重新设置T1计数初值低8位
           TR1=1;               //启动T1
           while(!TF1);                 //查询计数是否溢出,即定时50ms时间到,TF1=1
           TF1=0;         //50ms定时时间到,将T1溢出标志位TF1清零
     }
}
        //函数名:disp(unsigned char i)
        //函数功能:将i的值显示在两个静态连接的数码管上
        //形式参数:i,取值范围0~99
        void disp(unsigned char i)
        {
        unsigned char led[]=
        {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} ;
        //定义0~9显示码,共阳极数码管
        P1=led[i/10];   //显示i高位
        P2=led[i%10];   //显示i低位
         }
void main()                                       
{
      unsigned char miao=0;    //秒计数器定义
      TMOD=0x10;                            //设置T1为工作方式1
      TH1=(65536-50000)/256;   //设置T1计数初值高8位,定时时间50ms
      TL1=(65536-50000)%256;   //设置T1计数初值低8位
      TR1=1;                      //启动定时器开始计数  
      while(1)
      {
        disp(miao);               //显示秒计数器值
        delay1s();                           //调用1s函数
        miao++;                    //秒计数器加1
        if(miao==100)miao=0;     //秒计数计满,则从0开始计数
      }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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