亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? contorl.c

?? 基于51單片機、MAX7219和DS12887的電源開關節能控制器程序。通過按鍵控制
?? C
字號:
// RTC modle DS12887 driver and controller
// 7 segments LED 88888888 displayer
// Year, month, day, hour, minute and second display
// Functions display and keyboard
#include <aduc812.h>
#include <intrins.h>

#define	uchar	unsigned char 

#define DSAD	P2
#define LOCKRTC		writeDS(0x0B,0x82)
#define FREERTC		writeDS(0x0B,0x02)

//const address, second
#define ca_sec		0x00
//const address, alarm second
#define ca_seca		0x01
//const address, minute
#define ca_min		0x02
//const address, alarm minute
#define ca_mina		0x03
//const address, hour
#define ca_hor		0x04
//const address, alarm hour
#define ca_hora		0x05
//const address, day
#define ca_day		0x07
//const address, month
#define ca_mon		0x08
//const address, year
#define ca_yer		0x09
//const address, alarm switch, 0-off, 1-on
#define ca_alrsw	0x10
//const address, alarm end of minute
#define ca_minae	0x11
//const address, alarm end of hour
#define ca_horae	0x12
//const address, alarm start of minute
#define ca_minas	0x13
//const address, alarm start of hour
#define ca_horas	0x14



//const char, display code of '-'
#define cc_cancel	0x0a
//const char, display nothing
#define cc_null		0x0f


//temp def

sbit	DSALE=P3^5;
sbit	DSnWR=P3^6;
sbit	DSnRD=P3^7;

sbit	SDA	=	P3^4;
sbit	SCK	=	P3^2;
sbit	SCS	=	P3^3;

sbit	KUP	=	P0^7;
sbit	KDN	=	P0^6;
sbit	KMO	=	P0^5;

sbit	BEE	=	P0^4;
sbit	SWT	=	P0^3;

//bit RTCSET;
//uchar	ldat; 			// to set the RTC date and time by comm
uchar	func; 			// functions
uchar	dispday;		// display date or time
//bit		alarm;

void writeDS(uchar addr,uchar val)
{
	DSAD=addr;
	DSALE=1;
	_nop_();_nop_();	
	DSALE=0;

	DSAD=val;	
	DSnWR=0;
	_nop_();_nop_();
	DSnWR=1;
}

void DSRAMWrite(uchar addr,uchar val)
{
LOCKRTC;
writeDS(addr,val);
FREERTC;
}

uchar DSRAMRead(uchar addr)
{	uchar i;
LOCKRTC;
	DSAD=addr;
	DSALE=1;
	_nop_();	
	DSALE=0;

	DSAD=0xff;
	DSnRD=0;
	_nop_();_nop_();	
	i=DSAD;
	DSnRD=1;
FREERTC;
return i;
}

void send(uchar sc)
{
	SBUF=sc;
	while(TI==0);
	TI=0;
}

void serial () interrupt 4 
{	uchar rcvd;
if(RI){
    RI = 0;
   	rcvd=SBUF;
/*
   	if (ldat==0xe5) DSRAMWrite(0x10,rcvd);//		set the second
	if (ldat==0xe4)	DSRAMWrite(0x11,rcvd);//		set the minute
	if (ldat==0xe3)	DSRAMWrite(0x12,rcvd);//		set the hour
	if (ldat==0xe2)	DSRAMWrite(0x13,rcvd);//		set the day
	if (ldat==0xe1)	DSRAMWrite(0x14,rcvd);//		set the month (nEOSC nE32K month5-0)
	if (ldat==0xe0)	DSRAMWrite(0x15,rcvd);//		set xx year
	if (rcvd==0xef){
 		uchar sc,mi,hr,da,mo,yr;
		sc=DSRAMRead(0x10);mi=DSRAMRead(0x11);hr=DSRAMRead(0x12);
		da=DSRAMRead(0x13);mo=DSRAMRead(0x14);yr=DSRAMRead(0x15);

		send(0xef);send(hr);send(mi);send(sc);

		DSRAMWrite(0x0A,0x20);	//rtc initialtive
		DSRAMWrite(0,sc);DSRAMWrite(2,mi);DSRAMWrite(4,hr);
		DSRAMWrite(7,da);DSRAMWrite(8,mo);DSRAMWrite(9,yr);	
		}
  	ldat=rcvd;
*/
   	}
}



void sendled(uchar sch,uchar scl)		//自定義字模
{uchar i;   
	SCS=0;
for (i=128;i!=0;i/=2){
	SDA=(sch & i);
	SCK=1;
	_nop_();
	SCK=0;
	}
for (i=128;i!=0;i/=2){
	SDA=(scl & i);
	SCK=1;
	_nop_();
	SCK=0;
	}
	SCS=1;
}

bit proc0(uchar addr,uchar minv,uchar maxv)
{uchar mi;bit chg=0;
			mi=DSRAMRead(addr);
			if (KUP==0) {chg=1;mi++;if (mi>maxv) mi=minv;if ((mi%16)>9) mi+=6;}
			if (KDN==0) {chg=1;mi--;if (mi<minv || mi>maxv) mi=maxv;if ((mi%16)>9) mi-=6;}
			DSRAMWrite(0x0A,0x20); 
			DSRAMWrite(addr,mi);
			return chg;
}

void rtcmcpy(uchar fromadd,uchar toadd)
{uchar mi;
			mi=DSRAMRead(fromadd);
			DSRAMWrite(0x0A,0x20); 
			DSRAMWrite(toadd,mi);
}

bit delay()
{uchar a,b;
 uchar kb,kc;
 bit update=0;

 P0|=0xe0; kb=P0;kb|= 0x1f;				// Keyboard port

 for (b=180;b!=0;b--)		//delay
	for (a=180;a!=0;a--);

 P0|=0xe0; kc=P0;kc|= 0x1f;

 if (kc==kb && kb!=0xff){
 		update=1;
		if (func==6 && (KUP==0 || KDN==0)) {
			DSRAMWrite(0x0A,0x20); 
			DSRAMWrite(ca_sec,0);
			} 	
		if (func==11) {proc0(ca_minae,0,0x59);}		//alarm end minute
		if (func==10) {proc0(ca_horae,0,0x23);}		//alarm end hour
		if (func==9) {proc0(ca_minas,0,0x59);}		//alarm start minute
		if (func==8) {proc0(ca_horas,0,0x23);}		//alarm start hour
		if (func==7) 
			{bit chg;
			chg=proc0(ca_alrsw,0,0x01);
			if (chg==1){
				rtcmcpy(ca_horas,ca_hora);
				rtcmcpy(ca_minas,ca_mina);
				}
			}								//alarm on/off
		if (func==5) proc0(ca_min,0,0x59);	// 	minute set
		if (func==4) proc0(ca_hor,0,0x23);	//	hour set
		if (func==3) proc0(ca_day,1,0x31);	// 	day set
		if (func==2) proc0(ca_mon,1,0x12);	//	month set
		if (func==1) proc0(ca_yer,0,0x99); //	year set
 	}
 if (kc!=kb && kc==0xff)
		{   update=1;
			if ((kb | 0xdf)==0xdf){uchar alr;
				func++;
				if (func>11) func=0;
				alr=DSRAMRead(ca_alrsw);
				if (alr==0 && func>7) func=0;
				dispday=3;
				if (func<10) dispday=2;
				if (func<7) dispday=0;
			 	if (func<4) dispday=1;
				if (func==0) dispday=0;
			  } else{
			  	if (func==0) dispday++;
			  }
			if (dispday>3) dispday=0;  // normal display functions
		}
 if (update==1) {BEE=1;return 1;} else {BEE=0;return 0;}
}

void ledinit()
{
	sendled(0x09,0xff);		//ff全譯碼  00 不譯碼 0f 前四位
	sendled(0x0a,4);		//亮度(0-15)
	sendled(0x0b,7);		//顯示位數(0-7)
	sendled(0x0c,1);		//顯示開關 1開  0關
}

void dispnull(uchar pos)
{
sendled(pos,cc_null);
sendled(pos+1,cc_null);
}

void dispnum(uchar pos,uchar num,bit dot)
{
	sendled(pos,(num/16));
	sendled(pos+1,128*(uchar)(dot)+(num & 0x0f));
}


void main()
{
uchar t;bit b;
uchar alr;
//		com init
	SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
    PCON |= 0x80;       //SMOD=1; 
    TH1   = 0xF3;       //F-Baudrate:4806  fosc=12MHz 
    IE    = 0x90;       //Enable Serial 
    TR1   = 1;          // timer 1 run 
	BEE	=0;
	SWT	=0;

	ledinit();//		led init

	DSRAMWrite(0x0A,0x20);	//rtc initialtive
	sendled(0x0f,1);			//	led test
	delay();delay();
	sendled(0x0f,0);			//	led test
while(1){
	ledinit();

	alr=DSRAMRead(ca_alrsw);					//Read the alarm enable byte

	if (dispday<2)
		{sendled(1,func);
		sendled(2,0x0f);
		if (dispday==0)					//-------------hour minute and second display
  			{
 			t=DSRAMRead(0x00);//send(t);//		Read the second
			if (func==6 && b==0){dispnull(7);} else {dispnum(7,t,0);}
			t=DSRAMRead(0x02);//send(t);//		Read the minute
			if (func==5 && b==0){dispnull(5);} else {dispnum(5,t,b);}
			t=DSRAMRead(0x04);//send(t);//		Read the hour
			if (func==4 && b==0){dispnull(3);} else {dispnum(3,t,b);} 
  			}
		if (dispday==1){				// --------------year month day display
			t=DSRAMRead(ca_day);//send(t);//		Read the day
			if (func==3 && b==0){dispnull(7);} else {dispnum(7,t,0);}
			t=DSRAMRead(ca_mon);//send(t);//		Read the month (nEOSC nE32K month5-0)
			if (func==2 && b==0){dispnull(5);} else {dispnum(5,t,1);}
			t=DSRAMRead(ca_yer);//send(t);//
			if (func==1 && b==0){dispnull(3);} else {dispnum(3,t,1);}
		  	}
		}
	  else {					//--------alarm display display>=2
		if (alr==1)	sendled(1,0x0d); else sendled(1,0x0a);// alarm signal
			dispnull(3);
		if (dispday==2){// display the alarm start clock
			if (func!=7) sendled(2,0x00);
 			t=DSRAMRead(ca_horas);//		Read the alarm start hour
	  		if (func==8 && b==0){dispnull(5);} else {dispnum(5,t,1);}
 			t=DSRAMRead(ca_minas);//		Read the alarm start minute
			if (func==9 && b==0){dispnull(7);} else {dispnum(7,t,0);}
			}//	-- endif display=2

		if (dispday==3){// display the alarm end clock
			sendled(2,0x01);
 			t=DSRAMRead(ca_horae);//		Read the alarm start hour
	  		if (func==10 && b==0){dispnull(5);} else {dispnum(5,t,1);}
 			t=DSRAMRead(ca_minae);//		Read the alarm start minute
			if (func==11 && b==0){dispnull(7);} else {dispnum(7,t,0);}
			}//	-- endif display=3

		if (func==7){			//	func7 Set or Cancel the alarm
 				sendled(2,cc_cancel);
			if (alr==0){		//	Cancel, display ----
 				sendled(5,cc_cancel);	sendled(6,cc_cancel);
  				sendled(7,cc_cancel);	sendled(8,cc_cancel);} 
				else{			//	Set, display the alarm time
		 		t=DSRAMRead(ca_horas);//		Read the alarm start hour
				dispnum(5,t,1);
			 	t=DSRAMRead(ca_minas);//		Read the alarm start minute
				dispnum(7,t,0);
				}//----		end if alarm=0
  	 		}//------	end if func=7

		}// endif	display<2 

  	t=DSRAMRead(0x0c);//		alarm judgement
	if (((t | 0xdf)==0xff) && (alr!=0)) 
		{	if (alr==1) 
				{BEE=1;SWT=1;alr++;
				DSRAMWrite(0x0A,0x20);	DSRAMWrite(ca_alrsw,alr);// update Alarm sign in DS12887
				rtcmcpy(ca_horae,ca_hora);rtcmcpy(ca_minae,ca_mina);				
				} else {BEE=1;SWT=0;alr=1;
				DSRAMWrite(0x0A,0x20);	DSRAMWrite(ca_alrsw,alr);// update Alarm sign in DS12887
				}
		}
	if (delay()==1) 
		{b=1; 
		 if (alr==1){rtcmcpy(ca_horas,ca_hora);	rtcmcpy(ca_minas,ca_mina);}
		 if (alr==2){rtcmcpy(ca_horae,ca_hora);	rtcmcpy(ca_minae,ca_mina);}
		} else b=!b;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧美一区二区三区乱码| 日韩激情在线观看| 日韩美女在线视频| 欧美影院精品一区| 成人sese在线| 国产成人亚洲综合a∨婷婷| 免费高清视频精品| 狠狠色丁香婷婷综合| 人妖欧美一区二区| 91看片淫黄大片一级在线观看| 不卡大黄网站免费看| 日韩欧美在线一区二区三区| 日韩一级片网址| 亚洲午夜电影网| 天堂影院一区二区| 色噜噜久久综合| 在线免费一区三区| 精品国产伦一区二区三区观看方式| 欧美一区二区性放荡片| 国产亚洲欧美色| 国产精品久久久久一区| 国产精品久久久久aaaa| 国产成人在线电影| 欧美大片在线观看一区二区| 亚洲18色成人| 国产精品99久久久久| 色婷婷久久综合| 日韩女优av电影| 日韩va欧美va亚洲va久久| 精品视频在线免费观看| 久久精品视频免费观看| 国产资源在线一区| 久久久国产午夜精品| 一区二区三区四区在线| 日本成人在线网站| 欧美一区二区黄色| 国内一区二区视频| 久久九九国产精品| 成人午夜视频免费看| 7777精品伊人久久久大香线蕉超级流畅| 中文久久乱码一区二区| 欧美激情一区三区| 午夜不卡av免费| 成人久久久精品乱码一区二区三区| 日韩手机在线导航| 国产东北露脸精品视频| 国产色产综合色产在线视频| 成人性生交大片免费| 亚洲乱码国产乱码精品精小说| 五月婷婷综合在线| 91超碰这里只有精品国产| 麻豆国产一区二区| 欧美艳星brazzers| 亚洲国产精品久久久久秋霞影院| 欧美日韩精品一区二区在线播放| 亚洲色图欧洲色图| 国产一区三区三区| 日韩美女视频在线| 成人午夜大片免费观看| 亚洲一区二区欧美日韩| 91久久久免费一区二区| 青青草国产精品亚洲专区无| 精品福利一二区| 91免费观看视频在线| 日本美女一区二区三区视频| 久久久久久黄色| 色狠狠综合天天综合综合| 免费人成精品欧美精品| 国产精品视频看| 7878成人国产在线观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91免费在线视频观看| 亚洲成av人在线观看| 久久久久久一二三区| 欧美系列日韩一区| 国产精品18久久久久久久网站| 一区二区三区高清| 国产午夜精品久久久久久久 | 国产福利精品导航| 亚洲不卡一区二区三区| 中文在线资源观看网站视频免费不卡 | 国产精品三级av在线播放| 欧美欧美欧美欧美首页| 成人国产亚洲欧美成人综合网| 奇米色一区二区| 综合色中文字幕| 亚洲精品一区二区三区蜜桃下载| 色婷婷久久久久swag精品| 国产不卡一区视频| 欧美国产日韩在线观看| 欧美一个色资源| 欧美中文字幕久久| av午夜一区麻豆| 一区二区三区精品| 国产精品久久久久影院| 精品免费一区二区三区| 成人精品gif动图一区| 蜜臀av亚洲一区中文字幕| 亚洲精品成人天堂一二三| 欧美激情一区三区| 久久久久久久久久看片| 精品国产亚洲在线| 日韩色视频在线观看| 91精品啪在线观看国产60岁| 欧美日韩免费一区二区三区| 色欧美88888久久久久久影院| 成人永久aaa| 国产电影一区二区三区| 国产一区二区三区观看| 久久成人综合网| 亚洲日本在线看| 国产精品午夜在线观看| 久久久久久一二三区| 久久夜色精品国产欧美乱极品| 99re这里只有精品6| 三级亚洲高清视频| 午夜亚洲福利老司机| 亚洲国产日韩av| 亚洲电影一区二区三区| 亚洲国产cao| 免费在线观看不卡| 麻豆成人av在线| 狠狠狠色丁香婷婷综合激情| 国产一区二区三区| 高清日韩电视剧大全免费| 成人综合在线视频| 99在线精品观看| 欧美亚洲尤物久久| 欧美一区二区在线播放| 欧美成人r级一区二区三区| 久久久99久久| 亚洲视频一区二区在线观看| 亚洲男人的天堂网| 国产欧美日韩亚州综合| 欧美一区二区在线免费播放| 久久综合色综合88| 国产精品久久久久久久久免费桃花 | 老色鬼精品视频在线观看播放| 九色综合国产一区二区三区| 亚洲精品自拍动漫在线| 午夜a成v人精品| 国产麻豆成人精品| 色婷婷av一区二区| 欧美一区二区福利视频| 欧美国产综合色视频| 亚洲一区电影777| 久久99精品国产麻豆婷婷洗澡| 成人黄色在线网站| 欧美日韩1234| 国产女同性恋一区二区| 亚洲综合免费观看高清完整版| 麻豆91精品91久久久的内涵| va亚洲va日韩不卡在线观看| 在线观看日韩一区| 国产亚洲欧美在线| 天堂在线一区二区| 99综合电影在线视频| 日韩欧美亚洲国产精品字幕久久久| 国产精品伦一区| 看片网站欧美日韩| www.欧美色图| 日韩欧美www| 亚洲制服丝袜在线| 风间由美一区二区av101| 欧美日本一道本在线视频| 欧美激情一区二区在线| 蜜臀av性久久久久蜜臀av麻豆| 97久久久精品综合88久久| 欧美大片在线观看| 婷婷国产在线综合| 91在线一区二区| 国产欧美日韩激情| 美女国产一区二区| 欧美日韩一级二级| 一区二区三区自拍| 成人免费视频caoporn| 欧美大片日本大片免费观看| 亚洲永久免费av| a4yy欧美一区二区三区| 久久影院午夜论| 毛片一区二区三区| 91精品国产欧美日韩| 亚洲一级二级在线| 色网综合在线观看| 中文字幕一区av| 日韩av电影免费观看高清完整版 | 最新成人av在线| 国产成人福利片| 精品999在线播放| 日本麻豆一区二区三区视频| 91久久久免费一区二区| 亚洲欧美一区二区三区久本道91 | 亚洲bt欧美bt精品777| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲一区在线观看网站| 91色|porny| 亚洲精品乱码久久久久久久久 | 国产亚洲欧洲一区高清在线观看| 久久国产人妖系列| 日韩欧美一二三区|