#include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit key1=P2^0; sbit key2=P1^0; char counter20,a; void init(); void delay(); void main() { init(); while(1) { if(key1==0) { key2=0; delay(); key2=!key2; delay(); } if(key1==1) { key2=1; init(); } } } void init() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } void delay() { do{/*等待*/}while(a<60); if(a>=60) a=0; } void timer50ms(void) interrupt 1 { TL0=15536%256;//假设12MHz TH0=15536/256; counter20++; if(counter20==20) //50ms*20=1s { counter20=0; a++; } }
楼主虽然是开了中断,但是实际上没用到中断, 所以要加一个中断的了程序,所以二楼说的对, 你所要的延时程序也太长了吧。。。 上面只是我对楼主所写的理解加上了中断程序, 还没验证的。。 |