这个是一个四位数字串行显示的定时器,按键可设定,在实际电路上调试羡颂过
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,
0xb6,0xbe,0xe0,0xfe,0xf6,0x0};//段码根据实际情况自编
sbit k1=P2^0;//定义加加
sbit k2=P2^1;//定义减减
sbit CLK=P3^6;//164模拟时钟端
sbit DAT=P3^7;//164模拟数据端
uint z;
void delay(uint t)//延时函数
{
uint x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
void sendbyte(uint b)//传送显丛仿示字节函数
{
uchar num,c;
num=table[b%10];//个位
for(c=0;c<8;c++)//依渗派纤次传送8位
{
CLK=0;
DAT=num&0x01;
CLK=1;
num>>=1;
}
num=table[b%100/10];//十位
for(c=0;c<8;c++)//依次传送8位
{
CLK=0;
DAT=num&0x01;
CLK=1;
num>>=1;
}
num=table[b%1000/100];//百位
for(c=0;c<8;c++)//依次传送8位
{
CLK=0;
DAT=num&0x01;
CLK=1;
num>>=1;
}
num=table[b/1000];//千位
for(c=0;c<8;c++)//依次传送8位
{
CLK=0;
DAT=num&0x01;
CLK=1;
num>>=1;
}
}
void key()
{
if(k1==0)
{
delay(3);
if(k1==0)
{
TR0=0;
z++;
if(z==10000)
z=0;
sendbyte(z);
}
while(!k1);
}
if(k2==0)
{
delay(3);
if(k2==0)
{
TR0=1;
sendbyte(z);
}
while(!k2);
}
}
void main()
{
TMOD=0X01;//定时器0定时方式1
TH0=0XD8;//晶振12MHZ,定时10ms
TL0=0XF0;
EA=1;
ET0=1;
TR0=1;
sendbyte(0);
while(1)
key();
}
void time()interrupt 1//定时器中断
{
uint count;
TH0=0XD8;
TL0=0XF0;
count++;
if(count==100)//10毫秒X100=1秒
{
count=0;
z++;
if(z==10000)
{
z=0;
}
sendbyte(z);//刷新显示
}
}
这得根据你的电路图写程序。别人给了程序你,你也用不了
你得先有电路图和单片机类型啊。。。你这么问要是有人能回答你才怪了呢。