找回密码
 立即注册

QQ登录

只需一步,快速开始

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

利用单片机中断实现0~100的计时器

[复制链接]
跳转到指定楼层
楼主
ID:341039 发表于 2018-6-4 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
//#include <instrins.h>
#define uchar unsigned char
#define uint unsigned int
#define z 5
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar bai,shi,ge,num1,num2/*,temp*/;
void delays(uchar XS);
void display(uchar bai,uchar shi,uchar ge );
void init();
//void waterLight();
void main()
{
  init();
  while(1)
  {
   display(bai,shi,ge);
  }
}
void init()
{
  TMOD = 0x01;
  TH0 = (65536-50000)/256;
  TL0 = (65536-50000)%256;
  EA = 1;
  ET0 = 1;
  TR0 = 1;
}
void time0() interrupt 1
{
  TH0 = (65536-50000)/256;
  TL0 = (65536-50000)%256;
  num1++;
  if(num1 == 20)
{
   num1 = 0;
   num2++;
   ge = num2 % 10;
   shi = num2 / 10 % 10;
   bai = num2 / 100;
   if(num2 == 999)
   num2 = 0;
   }
}
void display(uchar bai,uchar shi,uchar ge)
{
                                  P1 = 0xf2;
    P0 = table[ge];
    delays(z);                                                                                                            
    //P0 = 0X00;
    P1 = 0xf4;
    P0 = table[shi];
    delays(z);
    //P0 = 0x00;
     
    P1 = 0xf8;
    P0 = table[bai];
    delays(z);
    //P0 = 0x00;
}
void delays(uchar XS)
{
      uchar i,j;
   for(i = 0;i < XS;i++)
     for(j = 0; j < 110; j++);
}
/*(void waterLight()
{
  temp = 0xfe;
  P2 = temp;
  while(1)
  {
       temp = _crol_(temp,1);
    P2 = temp;
    delays(500);
  }
}   */


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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