⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 www.ourhc.cn.c

📁 STC15F104E单片机最小系统开发板
💻 C
字号:
/********************************************************************
                            汇诚科技

实现功能:按键控制继电器通断1秒启动停止
使用芯片:STC15F104E系列单片机
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchun
网站:www.ourhc.cn
淘宝店:
汇诚科技 http://ourhc.taobao.com
 郑兴电子直销部 http://shop68451856.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     

*********************************************************************/
/********************************************************************/

#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;	 //定义单片机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)
		{
			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();
	}
}		

	
/********************************************************************
                              结束
*********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -