📄 3led_51.c
字号:
#include <reg52.h>
sbit com0=P2^0;
sbit com1=P2^1;
sbit com2=P2^2;
code unsigned char DispBuf[10]= {0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09};
//函数声明
void disp_selec(unsigned char seg);
/**************************************************
** 函数名称: dellay
** 入口参数:h(unsigned int型)
** 出口参数:无
** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
void dellay(unsigned int h)
{
while(h--); //0.01MS
}
unsigned char time_temp; //全局变量,定时器加1
unsigned char time_num0; //全局变量,显示的数加1
unsigned char time_num1;
unsigned char time_num2;
/************主程序**************/
main()
{
time_num0=0;
time_num1=0;
time_num2=0;
time_temp=0;
ET0=1;
TMOD=1; //16位定时器
TH0=-50000/256; //定时器赋值,定时约50毫秒
TL0=-50000%256;
TR0=1;
EA=1;
dellay(100);
while(1)
{
com0=0;com1=0;com2=1;disp_selec(time_num0);
com0=0;com1=1;com2=0;disp_selec(time_num1);
com0=1;com1=0;com2=0;disp_selec(time_num2);
}
//单片机待机
}
/**************************************************
** 函数名称: disp_selec
** 入口参数:bit_selec,seg
** 出口参数:无
** 功能描述: 选择相应数码管,进行显示
****************************************************/
void disp_selec(unsigned char seg)
{
P1=DispBuf[seg];
}
void time0() interrupt 1 using 0
{
EA=0;
time_temp++;
if(time_temp>20) //约1S
{
time_temp=0;
if(time_num0>9)
{time_num0=0;
if(time_num1>9)
{ time_num1=0;
if(time_num2>9)
{time_num2=0;
}
else time_num2++;
}
else time_num1++;
}
else time_num0++;
}
TH0=-50000/256; //定时器赋值
TL0=-50000%256;
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -