#include<reg51.h>sbit Key_UP=P1^0;sbit Key_DOWN=P1^1;unsigned char KeyV,TempKeyV; sbit P25=P2^0;//数码管第1位sbit P26=P2^1;//数码管第2位sbit gang=P2^2;//分钟与秒的间隔符sbit P27=P2^3;//数码管第4位sbit P28=P2^4;sbit qian=P1^4;sbit bai=P1^5;sbit JDQ=P3^7;//继电器 unsigned int js; unsigned int ds,x,y;//倒计时初始时间,加时,减时 unsigned char jsflag;static unsigned int i;unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};void Delay(unsigned int ii) //1MS{unsigned int jj;for(;ii>0;ii--)for(jj=0;jj<125;jj++){;}}void main(){ EA = 1; //允许CPU中断 ET0 = 1; //定时器0中断打开 ET1=1; //定时器1中断打开 TMOD = 0x11; //设定时器0 1为模式1,16位模式 TH0=0xB8; TL0=0x00; //设定时值为(20ms) TH1=0xdc; //设定时值为(10ms) TL1=0x00; TR0 = 1; TR1=1; ds=9999; KeyV = 0; TempKeyV = 0; jsflag=0;while(1);}//定时器0中断外理中键扫描和显示void Key_Time0(void) interrupt 1 using 2{ TH0=0xB8; TL0=0x00; //设定时值为20000us(20ms) if (!Key_UP) KeyV = 1; if (!Key_DOWN) KeyV = 2; if (KeyV!= 0) //有键按下 { Delay(10); //延时防抖 按下10ms再测 if (!Key_UP) TempKeyV = 1; if (!Key_DOWN) TempKeyV = 2; if (KeyV == TempKeyV) //两次值相等为确定接下了键 { if (KeyV == 1) { jsflag=0; if(ds==0) { ds=6000; } js=js+1; JDQ=0; //继电器吸合 if(js==50) { js=0; ds=ds-1; } }if(KeyV==2){ jsflag=1; }}} if(jsflag==1) { JDQ=1; } if(ds==0) { JDQ=1; jsflag=1; KeyV=0; } }void disp_Time1(void) interrupt 3 using 3{ TH1=0xdc; TL1=0x00; x=ds/1000; P0=LEDDis[x];P25=0; Delay(2); P25=1; y=(ds%1000)/100; P0=LEDDis[y]; P26=0; Delay(2); P26=1;P0=0xbf;gang=0;Delay(2);gang=1; P0=LEDDis[((ds%1000)%100)/10]; if(((ds%1000)%100)/10>=6) //满60,百位减一 { ds=ds-10; P0=LEDDis[6]; } P27=0; Delay(2); P27=1; P0=LEDDis[((ds%1000)%100)%10]; P28=0; Delay(2); P28=1;}
导读:目前正在解读《单片机100分钟定时继电器程序》的相关信息,《单片机100分钟定时继电器程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机100分钟定时继电器程序》的详细说明。
简介:本文和大家分享一个单片机100分钟定时继电器的程序,感兴趣的朋友可以看看。
提醒:《单片机100分钟定时继电器程序》最后刷新时间 2024-03-14 00:58:18,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机100分钟定时继电器程序》该内容的真实性请自行鉴别。