voidmain(void){while(1){sbitSNleft=0;sbitSNmiddle=1;sbitSNright=0;sbitEWleft=0;sbitEWmiddle=0;sbitEWright=0;sbitSNpeople=1;sbitEWpeople=0;Delay(60);sbitSNleft=1;sbitSNmid...
void main( void )
{ while( 1 )
{ sbit SNleft=0; sbit SNmiddle=1; sbit SNright =0; sbit EWleft =0; sbit EWmiddle =0;
sbit EWright =0; sbit SNpeople =1; sbit EWpeople =0;Delay( 60 );
sbit SNleft=1; sbit SNmiddle=0; sbit SNright =1; sbit EWleft =1; sbit EWmiddle =0;
sbit EWright =0; sbit SNpeople =1; sbit EWpeople =0;Delay( 60 );
sbit SNleft=0; sbit SNmiddle=0; sbit SNright =0; sbit EWleft =0; sbit EWmiddle =1;
sbit EWright =0; sbit SNpeople =0; sbit EWpeople =1;Delay( 60 );
sbit SNleft=0; sbit SNmiddle=0; sbit SNright =1; sbit EWleft =1; sbit EWmiddle =0;
sbit EWright =1; sbit SNpeople =0; sbit EWpeople =0;Delay( 60 ); }}
上面的就是交通灯的控制程序,在60秒的延时中,添加30秒的数码管显示程序,不知道怎么加进去。 #52 麻烦懂的帮看看 谢谢叻`
#include
code unsigned char table[10] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char num[2]; //存放时间的每一位值
unsigned char count=30;
sbit s1 = P1^2; sbit s0 = P1^0;
void delay_ms(unsigned char k) /* 延迟函数 */
{ while(k>0)
{
unsigned int i;
for(i=0;i<100;i++);
k--;
}
}
void display(void) /*显示时间函数 */
{
P1|=0x0f;
P0=0xff;
s0=0;
P0=table[num[0]];
delay_ms(1);
P1|=0x0f;
P0=0xff;
s1=0;
P0=table[num[1]];
delay_ms(1);
}
void timer()interrupt 1 /* 硬件定时 */
{
static unsigned char c=0;
if (c<100)
{
c++;
}
else
{
c=0;
count--;
if(count==0)
{
count=30;
}
}
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
}
void time_work() /* 计算时间 */
{
num[1] = count /10;
num[0] = count%10;
}
void main() /* 主函数 */
{
TMOD=0x01; //开中断
TH0=(65536-10000)/256;//初始化
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
time_work();//计算时间
display(); //显示当前时间
}
}
这个是30秒的数码管倒计时显示
展开