使用芯片:STC15F104E
晶振:12MHZ
波特率:9600
编译环境:Keil
/********************************************************************实现功能:按键触发延时1分钟程序使用芯片:STC15F104E晶振:12MHZ波特率:9600编译环境:Keil*********************************************************************//********************************************************************/#include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/******************************************************************** 初始定义*********************************************************************/uint sec; //定义计数值,每过1/10 秒,sec 加一uchar keycnt=0;//按下次数值uint tcnt; //键值判断/******************************************************************** I/O定义*********************************************************************/sbit P33=P3^3; //定义单片机P3口的第3位 (即P3.3)sbit P3_5=P3^5;/******************************************************************** 延时函数*********************************************************************/void delay(uchar t){ uchar i,j; for(i=0;i<t;i++) { for(j=13;j>0;j--); { ; } }}/******************************************************************** 按键扫描函数*********************************************************************/void KEY() //按键扫描程序{if(P3_5==0) { delay(20); if(P3_5==0) { TH0=0x06; //对TH0 TL0 赋值 TL0=0x06; P33=1; TR0=1; //开始定时 }}}/******************************************************************** 定时中断服务函数*********************************************************************/void t0(void) interrupt 1 using 0 //定时中断服务函数{ tcnt++; //每过250ust tcnt 加一 if(tcnt==4000) //计满400 次(1/10 秒)时 { tcnt=0; //重新再计 sec++; if(sec==60) //定时10 秒,在从零开始计时 { sec=0; P33=0; TR0=0; } }}/******************************************************************** 主函数*********************************************************************/void main(){ TMOD=0x02; //定时器工作在方式2 ET0=1; EA=1; sec=0; TR0=0; P33=1; while(1) { KEY(); }} /******************************************************************** 结束*********************************************************************/