问题遇到的现象和发生背景
void T0_Init()
{
TMOD=0x01;
TH0=(65536-50/1.09)/256;
TL0=(65536-50/1.09);
TR0=1; //启动定时器0
ET0=1; //打开中断
}
void T0_Int()interrupt 1 //1是定时器0的序号
{
static int cnt,scanf_cnt1; //staic 可使cnt scanf_cnt都作为一个全局变量可以保存它被修改以后的值
char a;
a=45;
scanf_cnt1=(10*a+500)/70;
TH0=(65536-50/1.09)/256; //定时50 us 11/1.09~10 TH0=(65536-10/1.09)/256;
TL0=(65536-50/1.09);
cnt++;
if(cnt>270) //270次大约达到20ms
cnt=0;
if(cnt<scanf_cnt1) //通过改变scanf_cnt的值来改变占空比,高电平的时间
led1=1;
else
led1=0;
}
只有这里有a;第一次我是写scanf_cnt=(1045+500)/70;
测出来的周期是20ms
后来我想让scanf_cnt变成可控的,就写成scanf_cnt1=(10a+500)/70;
但是测出来的周期是80ms,我弄不明白