这是延时函数* 输入 : q
* 输出 : 无
***********************************************************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<110;j++);
}
这是定时函数
/*********************定时器0、定时器1初始化******************/
void time0_init()
{
TMOD = 0X11; //定时器0、定时器1工作方式1
ET0 = 1; //开定时器0中断
TR0 = 1; //允许定时器0定时
// ET1 = 1; //开定时器1中断
// TR1 = 1; //允许定时器1定时
}
这是中断函数
/*********************定时器0中断服务程序************************/
void time0_int() interrupt 1
{
static uchar value; //定时10ms中断一次
TH0 = 0x3c;
TL0 = 0xb0; //50ms
value ++;
flag_5m_value++;
if(flag_5m_value % 10 == 0)
flag_500ms = ~flag_500ms;
if(value >= 20)
{
value = 0;
flag_1s = 1;
}
}
这是主函数
***********************************************************************/
void main()
{
P0 = P1 = P2 = P3 = 0XFF; //IO口全部输出为1
time0_init();
dx_s = nb_time; //南北时间
while(1)
{
key();
if(key_can < 20)
key_with();
che_liuliang(); //车计流量程序
if((menu_1 == 0) && (flag_jdgz == 0))
jiaotongdeng_dis();
if(flag_che == 1)
{
dis_smg[3] = smg_du[nb_che_value / 10 % 10] ; //显示为B
dis_smg[2] = smg_du[nb_che_value % 10] ; //显示为B
dis_smg[1] = smg_du[dx_che_value / 10% 10] ; //显示东?魃柚玫氖焙?
dis_smg[0] = smg_du[dx_che_value % 10 ] ;
}
display();
}
}
|