改成这样试试。
#include<reg52.h>sbit ge=P3^2
sbit rn=P2^0
sbit ye=P3^1
sbit yn=P2^1
sbit gn=P2^2
sbit re=P3^0
unsigned int i
void delay_1sec(void )
{
unsigned int dly
for(i=0i<20i++)
{
dly= 500
while(dly--)
/* TMOD=0x01
TH0=0X3C
TL0=0XB0
TF0=0
TR0=1
while(TF0==0)
{
}
TR0=0
TF0=0
*/
}
}
void delay_2sec(void )
{ for(i=0i<2i++)
{ delay_1sec()
}
}
void delay_4sec(void )
{ for(i=0i<4i++)
{ delay_1sec()
}
}
void main(void)
{ ge=0
rn=0
ye=0
yn=0
gn=0
re=0
while(1)
{
ge=~ge
rn=~rn
delay_4sec()
ge=~ge
ye=~ye
dealy_1sec()
ye=~ye
rn=~rn
gn=~gn
re=~re
delay_2sec()
gn=~gn
yn=~yn
delay_1sec()
}
}
#include<reg52.h>#define uchar unsigned char
unsigned char n,a
uchar dispa[6]={0,0,9,5,9,1}
unsigned int num=0
void main()
{
uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
uchar code taa[6]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
uchar a,i
unsigned int m
n=0
TMOD=0x01//定时器方式选择
TH0=(65536-10000)/256//定时器高位赋值
TL0=(65536-10000)%6//低8位赋值
EA=1//总中断开启
ET0=1//这个记不清了好像是外部中断看看数据手册
TR0=1//定时器0中断
while(1)//主函数大循环,标准要加大括号
for(i=0i<6i )
{
a=dispa[i]
P0=~{table[a]}//P0口显示,
P2=taa[i]//P2口显示
for(m=0m<200m )//消隐延时
}
}
void time0_int(void) interrupt 1//定时器0中断服务函数
{ TH0=(65536-10000)/256//进中断给定时器赋值,先高位后低位,读取时正好相反,否则引起数据错误
TL0=(65536-10000)%6
n
if (n==100)//100个循环为1秒
{
n=0
dispa[0] //这个数组第一个数据为秒的个位
if (dispa[0]>9)
{
dispa[0]=0//满十个位清零十位加一
dispa[1] //秒的十位
if (dispa[1]>5)//满6清零
{
dispa[1]=0
dispa[2] //这一位表示分钟的个位
if (dispa[2]>9)
{
dispa[2]=0
dispa[3] //分钟的10位,
if (dispa[3]>5)
{
dispa[3]=0
dispa[4] //小时的个位
if (dispa[4]>3)//24小时制
{
dispa[4]=0
dispa[5]
if (dispa[5]>2)//小时的十位,24小时制
{
dispa[5]=0
dispa[0]
}
}
}
}
}
}
}
}