按键检测程序问题

mac2022-06-30  22

设定的参数tt代表半周期,step代表脉冲个数,范围(50~200),仿真时按键调整的时候tt的调整一切正常,step增大调整也正常,step减小调整的时候在最小时就变成了一条直线,不再计数了,问题到底出在哪里?

unsigned int tt,step; sbit PWM=P2^3; sbit DIR=P2^4; sbit EN=P2^5; sbit k7=P3^7; sbit k8=P3^6; sbit k9=P2^7; sbit k10=P2^6; void Manual() { EN=1; tt=5000; step=50; while(1) { shoudong(); keyscan(); } } void keyscan() { while(1) { if(k7==0) { delay(10); tt=tt+500; if(tt>=5000) { tt=5000; } while(!k7); } else if(k8==0) { delay(10); tt=tt-500; if(tt<=2500) { tt=2500; } while(!k8); } else if(k9==0) { delay(10); step=step+50; if(step>=200) { step=200; } while(!k9); } else if(k10==0) { delay(10); step=step-50; if(step<=50) { step=50; } while(!k10); } } } void shoudong() { TMOD=0x01; TH0=(65536-tt)/256; TL0=(65536-tt)%6; EA=1; ET0=1; TR0=1; } void zhongduan( ) interrupt 1 { TH0=(65536-tt)/256; TL0=(65536-tt)%6; PWM=~PWM; t++; if(t==step) { t=0; DIR=~DIR; } }
最新回复(0)