电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2233|回复: 1
收起左侧

单片机C语言实例-399-51单片机定时器2应用实例

[复制链接]
发表于 2022-4-19 10:31:58 | 显示全部楼层 |阅读模式
单片机C语言实例-399-51单片机定时器2应用实例

#include <reg52.h>

typedef   unsigned char  uchar;
typedef   unsigned int   uint;

uchar  Count,Sec,shift,n;

uchar code  LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,
                          0x82,0xF8,0x80,0x90,0xff};
uchar data  display[2];
/********************************************************

主函数

*********************************************************/
main()
{
   P0 = 0xff;            //端口初始化
   P2 = 0xff;
   Count = 0x00;
   Sec = 0x00;
   n = 0x00;
   shift = 0xfe;         //送位码初值

   TMOD = 0x01;
   TH0 = 0x4c;           //50ms定时
   TL0 = 0x00;
   ET0 = 1;

   T2CON = 0x00;         //设置T2CON寄存器
   TH2 = 0xf8;           //2ms定时
   TL2 = 0xcc;
   ET2 = 1;              //启用Timer2中断
   EA = 1;               //总中断允许
   TR2 = 1;              //启动定时器2
   TR0 = 1;              //启动定时器0

   while(1) ;

}

/*********************************************************

  Timer0中断函数 (负责定时)

**********************************************************/
void Timer0() interrupt 1
{
   TH0 = 0x4c;               //50ms定时
   TL0 = 0x00;
   ++Count;                  //中断计数单元加1
   if(Count == 20)           //50ms×20=1s
   {
     Count = 0;              //清中断计数单元
     ++Sec;                  //秒单元加1
     if(Sec == 100)
     Sec = 0;                //清秒单元
   }
}

/*********************************************************

  Timer2中断函数 (负责数码管显示)

**********************************************************/
void  timer2() interrupt 5
{
   TR2 = 0;
   TF2 = 0;                      //手工清中断标志  
   TH2 = 0xf8;                   //2ms定时常数
   TL2 = 0xcc;

   if(n >= 2)                    //两位数码管显示
   {
     n = 0;
     shift = 0x7f;               //送位码初值
     P2 = 0xff;                  //关闭显示
   }
   else
   {
     display[0] = Sec%10;          //个位
     display[1] = Sec/10;          //十位

     P0 = LEDData[display[n++]];   //送段码
     P2 = shift;                   //送位码
     shift = (shift>>1)|0x80;      //调整位码
   }
   TR2 = 1;
}

/**********************************************************/


更多详情参考附件文档
+08:00C146联盟网1320.png
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

0

主题

27

帖子

105

积分

一级会员

Rank: 1

积分
105
发表于 2023-10-12 16:04:02 | 显示全部楼层
6666666666666
回复 支持 反对

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表