⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ledchange.c

📁 口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河
💻 C
字号:
#include"reg52.h"
#define unchar unsigned char
unsigned int t=0;
bit T1s=0;
bit T5ms=0;
unchar seg[10 ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unchar scan_con[4]={0xfe,0xfd,0xfb,0xf7};
//unchar num[]={(t%60)%10,(t%60)/10,(t/60)%10,(t/60)/10};

/*****初始化T2,5ms中断一次******/
void initT2()
{
T2CON=0x04; //自动重装方式
TH2=0xfc;
TL2=0x18;
RCAP2L=0x18;
RCAP2H=0xfc;
EA=1;
ET2=1;
}

/******秒加1******/
void add()
{
t++;
if(t==3600)
{t=0;}
}

/***主函数***/
void main()
{
void initT2();
unchar i=0;
initT2();
while(1)
{
if(T1s)
{
T1s=0;
add();
}
else if(T5ms)
{
T5ms=0;
i=scan_con[i];
//P0=num[i];
switch(i) //动态扫描
{
case 0:{P0=seg[(t%60)%10];break;}	 //秒个位
case 1:{P0=seg[(t%60)/10];break;}	 //	秒十位
//case 2:{P1=seg[(t/60)%10];break;}	 //	分个位
case 3:{P1=seg[(t/60)/10];break;}	 //	分十位
default:{break;}
}
i++;
if(i==4)i=0;  //列扫描归位
}}}

/*******T2中断入口**********/
void timer2() interrupt 5
{
int s;
TF2=0;
T5ms=1;
s++;
if(s==300)
{
s=0;
T1s=1;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -