logo资料库

单片机9999S定时继电器程序.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
单片机单片机9999S定时继电器程序 定时继电器程序 本文和大家分享一个单片机9999S定时继电器的程序,感兴趣的朋友可以看看。 #include 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 P27=P2^2;//数码管第3位 sbit P28=P2^3; 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=600; } 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=LEDDis[((ds%1000)%100)/10]; P27=0; Delay(2); P27=1; P0=LEDDis[((ds%1000)%100)%10]; P28=0; Delay(2); P28=1; }
分享到:
收藏