使用芯片:STC15F104E
晶振:12MHZ
波特率:9600
编译环境:Keil
/********************************************************************实现功能:按键控制继电器通断1秒启动停止使用芯片:STC15F104E晶振:12MHZ波特率:9600编译环境:Keil*********************************************************************//********************************************************************/#include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/******************************************************************** 初始定义*********************************************************************/uchar 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() //按键扫描程序{uchar i,j;if(P3_5==0) { delay(20); if(P3_5==0) { keycnt++;/******************************************************************** 按下次数判断函数*********************************************************************/switch(keycnt) //按下次数判断 { case 1: //第一次按下 TH0=0x06; //对TH0 TL0 赋值 TL0=0x06; TR0=1; //开始定时 break; case 2: //第二次按下 TR0=0; //定时结束 keycnt=0; //重新开始判断键值 break; } while(P3_5==0); } }}/******************************************************************** 定时中断服务函数*********************************************************************/void t0(void) interrupt 1 using 0 //定时中断服务函数{ tcnt++; //每过250ust tcnt 加一 if(tcnt==400) //计满400 次(1/10 秒)时 { tcnt=0; //重新再计 sec++; if(sec==10) //定时10 秒,在从零开始计时 { sec=0; P33=!P33; //取反 P3.3 } }}/******************************************************************** 主函数*********************************************************************/void main(){ TMOD=0x02; //定时器工作在方式2 ET0=1; EA=1; sec=0; TR0=0; while(1) { KEY(); }} /******************************************************************** 结束*********************************************************************/