晶振为12M
#include
void
main
{
TOMD
=
0X01;
//配置定时器0工作于方式一
TH1
=
(65536-50000)/256
//高八位装入初值
TL1
=
(65536-50000)%256
//低八位装入初值
ET0
=
1
//开定时器0中断
EA
=
1
//开总中断
TR0
=
1
//启动定时器0
while(1)
{
;
}
}
void
Timer0_int()
interrupt
1
{
//重新装初值
TH1
=
(65536-50000)/256
//高八位装入初值
TL1
=
(65536-50000)%256
//低八位装入初值
}
/***************************************************************************************************************/
上面是比较好理解的。如果实在要求简洁的话,看下面的,跟上面功能一样
#include
void
main
{
TOMD
=
0X01;
//配置定时器0工作于方式一
TH1
=
0x3c
//高八位装入初值
TL1
=
0xb0
//低八位装入初值
IE
=
0x82//开总中断并开定时器0中断
TR0
=
1
//启动定时器0
while(1)
{
;
}
}
void
Timer0_int()
interrupt
1
{
//重新装初值
TH1
=
0x3c
//高八位装入初值
TL1
=
0xb0
//低八位装入初值}
#include<stc.h>sbit
d1=P2^0
sbit
p1=P2^1
void
main()
{
方式一;
}
void
main()
{
EA=1
EX0=1
IT0=1
方式二;
}
void
main()
{
EA=1
EX1=1
IT0=1
方式三;
}
void
zd0()
interrupt
0
{
d1=0
}
void
zd1()
interrupt
1
{
p1=0
}
用的是外部中断0和1,程序很简单,注释就不写了。如果有错误的话,还请指正。
#include<reg51.h>#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}//0-9
uchar scanled
uchar flag=0
uchar disdat[6]
void delay(unsigned int x)
{
unsigned int i,j
for(i=0i<xi++)
for(j=0j<120j++)
}
void dischg()
{
uchar i
for(i=0i<6i++)
disdat[i]=10
}
void ext0() interrupt 0
{
flag=1
}
void ext1() interrupt 2
{
flag=2
}
void t1isr() interrupt 3 //显示
{
TH1=0xec
TL1=0x78
switch(scanled)
{
case 0:
P2=0x01
P0=~ledtab[disdat[5]]
break
case 1:
P2=0x02
P0=~ledtab[disdat[4]]
break
case 2:
P2=0x04
P0=~ledtab[disdat[3]]
break
case 3:
P2=0x08
P0=~ledtab[disdat[2]]
break
case 4:
P2=0x10
P0=~ledtab[disdat[1]]
break
case 5:
P2=0x20
P0=~ledtab[disdat[0]]
break
default:break
}
scanled++
scanled%=6
}
main()
{
uchar i,j
TMOD=0x10
TH1=0xec
TL1=0x78
TR1=1
ET1=1
IT0=1
IT1=1
EX0=1
EX1=1
EA=1
scanled=0
dischg()
while(1)
{
i=0
switch(flag)
{
case 1:
for(j=0j<3j++)
for(i=0i<10i++)
{
disdat[5]=disdat[4]
disdat[4]=disdat[3]
disdat[3]=disdat[2]
disdat[2]=disdat[1]
disdat[1]=disdat[0]
disdat[0]=i
delay(200)
}
dischg()
flag=0
break
case 2:
for(j=0j<3j++)
for(i=0i<10i++)
{
disdat[0]=disdat[1]
disdat[1]=disdat[2]
disdat[2]=disdat[3]
disdat[3]=disdat[4]
disdat[4]=disdat[5]
disdat[5]=i
delay(200)
}
dischg()
flag=0
break
default:break
}
}
}