按键触发延时3分钟程序设计
          
            时间:11-30 11:29 阅读:923次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:实现功能:按键触发延时3分钟程序
使用芯片:STC15F104E
晶振:12MHZ
波特率:9600
编译环境:Keil
               
                        
          
            /********************************************************************
实现功能:按键触发延时3分钟程序
使用芯片: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;
    TR0=1; //开始定时
    }
}}
/********************************************************************
                            定时中断服务函数
*********************************************************************/
void t0(void) interrupt 1 using 0 //定时中断服务函数
{
    tcnt++; //每过250ust tcnt 加一
    if(tcnt==4000) //计满400 次(1/10 秒)时
    {
        tcnt=0; //重新再计
        sec++;
        if(sec==180) //定时秒,在从零开始计时
        {
            P33=1;
        }
        if(sec==182) //定时秒,在从零开始计时
        {
            sec=0;
            P33=0;
            TR0=0;
        }
    }
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
    TMOD=0x02; //定时器工作在方式2
    ET0=1;
    EA=1;
    sec=0;
    TR0=0;
    TH0=0x06; //对TH0 TL0 赋值
    TL0=0x06;
    TR0=1; //开始定时
    while(1)
    {
     //KEY();
    }
}       
    
/********************************************************************
                              结束
*********************************************************************/