定时器里的全局变量自加不起作用,非常简单的程序,请看:
void main()
{
// hong_fashe是p1^2.
hong_fashe =0; //开机后先低电平,防止烧毁。
Delay500ms() ; Delay500ms() ; Delay500ms() ;
time0_init();
hong_fashe=1;
EA =1;
while(1)
{
if(ms_mark==1) hong_fashe =0;
if(ms_mark==2) hong_fashe =1;
}
}
void time0()interrupt 1
{
TF0 =0;
TH0 =T0_MS_H;
TL0 =T0_MS_L;
ms_mark++;
}
void time0_init()
{
TMOD &=0XF1; //定时器0工作于模式一下,定时器1的位数保持不变
TH0 =T0_MS_H; //晶振12m 另一个有语句#define T0_MS_H 0XEC ,#define T0_MS_L 0X78 //需要定时的系统基准时间,5ms
TL0 =T0_MS_L;
ET0 =1;
TR0 =1;
}
应该是每5ms变量 ms_mark自动加一,进入while前是高电平,过5ms为低电平,再过5ms为高电平,,是这样吧??
实际显示的图像见附件
|