这是键盘中断程序
void keyscan() interrupt 0 //外部中断0
{ float TF0,TZ1;
EX0=0; //关中断
delay(10); //延时消抖
if(P1 !=0x0f) //判断是否有键按下
{ if(KEY1==0) freq+=100; //按键为1号,频率加100
if(KEY2==0) freq+=10; //按键为2号,频率加10
if(freq>500) freq=50; //频率大于500Hz,重新赋值为50Hz
if( KEY3==0) zkb+=10; //按键为3号,占空比加10
if( KEY4==0) zkb++ ; //按键为4号,占空比加1
if(zkb>99) zkb=1; //占空比大于99,重新赋值为1
TF0=(65536-fosc/(12.0*freq)); //频率定时初值
TZ1=(65536-(fosc*zkb)/(12.0*100*freq)); //占空比定时初值
TIMER0_H=(uint)TF0/256; //计算定时器0和定时器1的初值
TIMER0_L=(uint)TF0%256;
TIMER1_H=(uint)TZ1/256;
TIMER1_L=(uint)TZ1%256;
}
P1=0x0f; //给键盘扫描口赋初值
EX0=1; //开中断
}
仿真的时候频率和占空比都可调,但是按1键频率加的是200,按2键频率加的是也不是10,无论按3键还是4键占空比都是以10或10的倍数步进的。请哪位大虾帮我看一下,这个程序有什么问题