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

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

?? digital_clock.c

?? 基于AT89S52的自動報時數字鬧鐘. 該數字鐘具有整點報時和鬧鐘功能
?? C
字號:
#include <absacc.h>
#include <reg51.h>
#include<intrins.h>

#define uchar unsigned char


#define LED1 XBYTE [0xA000]   //數碼管地址
#define LED2 XBYTE [0xA001]
#define LED3 XBYTE [0xA002]
#define LED4 XBYTE [0xA003]
#define LED5 XBYTE [0xA004]
#define LED6 XBYTE [0xA005]
#define LED7 XBYTE [0xA006]
#define LED8 XBYTE [0xA007]

#define KEY XBYTE [0xA100]  //鍵盤地址


/*掃描鍵盤使用的變量 */
sbit first_row = P1^4;//鍵盤第一行控制
sbit second_row = P1^3;//鍵盤第二行控制
bit first_getkey = 0,control_readkey = 0;//讀鍵盤過程中的標志位
bit getkey = 0;//獲得有效鍵值標志位 等于1時代表得到一個有效鍵值
bit keyon = 0;//防止按鍵沖突標志位
uchar keynum = 0;//獲得的有效按鍵值寄存器
uchar M_key;
bit set=0;//set鍵功能切換標志位
bit setalarm=0;//setalarm鍵功能切換標志位
unsigned char i,j;//循環控制所用


/*數碼管顯示使用的變量和常量*/
bit pm=0;//上下午標志位
int count;
int t;
char hour=0,min=0,sec=0;//按秒計時顯示所用
char hour2=0,min2=0,sec2=0;//使用set,setalarm鍵時顯示所用
char houra=11,mina=59,seca=0;//保存用戶設置的鬧鐘值所用
uchar lednum = 0;  //數碼管顯示位控制寄存器
uchar led[8] = {0,0,0,0,0,0,0,0};  //數碼管顯示內容寄存器
uchar code segtab[18] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c,0xff}; //七段碼段碼表
                      // "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "P" ,"black" 
uchar code segtab2[10] = { 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10};//八段
                        // "0.", "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9."


void leddisp(void); //數碼管顯示函數
void readkey(void); //讀鍵盤函數
void key_deal(void);//處理鍵盤動作函數
void change_led(void);//跟蹤時間的顯示控制函數
void change_led2(void);//跟蹤按鍵的顯示控制函數
void delay(int t);//延時tms函數
void flash(void);//整點閃爍函數




void intT0() interrupt 1 //T0 定時中斷處理函數
{
	TH0 = -2720/256;  //定時器中斷時間間隔 4ms
 	TL0 = -2720%256;
	
 	leddisp();  //每次定時中斷顯示更新一次
	

 	if(control_readkey == 1)  //每兩次定時中斷掃描一次鍵盤
   	{	   
	   readkey();
   	}
 	control_readkey = !control_readkey;
}


void intT1() interrupt 3 //T1 定時中斷處理函數
{
	TH1=0xF8;
	TL1=0x30;
    count++;
	
	if(count >= 1000)
	{
       if(set==0&&setalarm==0)
	     change_led();
	   else
	     change_led2();
	   count=0;
		
	 }
}



void main(void)
{

	TMOD = 0x11;    
 	TH0 = -2720/256;  //定時器0中斷時間間隔 4ms
 	TL0 = -2720%256;
	TCON = 0x50;
    TH1=0xF8;         //定時器中斷時間間隔  1ms
	TL1=0x30;    
 	ET0 = 1;
	ET1=1;
 	EA = 1;

	for(i=0;i<=5;i++)//數碼管顯示初始化
	{
	   led[i]=0;
	 }
    led[6]=10;
	led[7]=17;


	
	while(1)
	{
 		if (min==0&&sec<=5)
	        flash();

        if (sec<=5&&min==mina&&hour==houra)
		    flash();

	    if(getkey==1)  //判斷是否獲得有效按鍵
		    key_deal();
  
    }
}

/***************************************************
			鍵盤掃描函數
原型:   void readkey(void);
功能:  當獲得有效按鍵時,令getkey=1,keynum為按鍵值

****************************************************/
void readkey(void)
{
	uchar M_key = 0;  

 	first_row = 0;
 	second_row = 0;
 	M_key = KEY;
 	if(M_key != 0xff)  //如果有連續兩次按鍵按下,認為有有效按鍵按下。消除按鍵抖動
   	{
    		if(first_getkey == 0)
     		{
   			first_getkey = 1;	
   		    }
  		else    //當有有效按鍵按下時,進一步識別是哪一個按鍵
   		{
   			if(keyon == 0)  //防止按鍵沖突,當還有未釋放的按鍵時不對其它按鍵動作響應   
   			{
      				first_row = 0;         //掃描第一行按鍵
      				second_row = 1;
         			M_key = KEY;
         			if(M_key != 0xff)
           			{
            				switch(M_key) 
            				{	
            	 				case 0xfe:
                   					keynum = 0x00;
               						break;
            					case 0xfd:
                       				keynum = 0x01;
                 					break;
               					case 0xfb:
                 		    		keynum = 0x02;
                 					break;
               					case 0xf7:
                      				keynum = 0x03;
                 					break;
               					case 0xef:
                 					keynum = 0x04;
                 					break;
               					case 0xdf:
                 					keynum = 0x05;
                					break;
               					case 0xbf:
                					keynum = 0x06;
                 					break;
              	 				case 0x7f:
                 					keynum = 0x07;
                 					break;
              				}
           			}
         			else
           			{
            				second_row = 0;     //掃描第二行按鍵
            				first_row = 1;
            				M_key = KEY;
            				switch(M_key)
              				{
               					case 0xfe:
                					keynum = 0x08;
                					break;
               					case 0xfd:
                 					keynum = 0x09;
                 					break;
               					case 0xfb:
                 					keynum = 0x0a;
                 					break;
               					case 0xf7:
                 					keynum = 0x0b;
                 					break;
               					case 0xef:
                 					keynum = 0x0c;
                 					break;
               					case 0xdf:
                 					keynum = 0x0d;
                 					break;
               					case 0xbf:
                 					keynum = 0x0e;
                 					break;
               					case 0x7f:
                 					keynum = 0x0f;
                 					break;
              				}
           			}
				getkey = 1; //獲得有效按鍵數值
                keyon = 1;  //防止按鍵沖突,當獲得有效按鍵時將其置1
        		} 
     		} 
   	}
 	else
   	{
    		first_getkey = 0;
    		keyon = 0;     //防止按鍵沖突,當所有的按鍵都釋放時將其清0
    	}
}

/***************************************************
			數碼管顯示函數
原型:   void leddisp(void);
功能:  每次調用輪流顯示一位數碼管

****************************************************/
void leddisp(void)
{
	switch(lednum)  //選擇需要顯示的數碼位
 	{
  		case 0:
    		LED1 = segtab[led[0]];
     		break;
  		case 1:
     		LED2 = segtab[led[1]];
     		break;
 		case 2:
     		LED3 = segtab2[led[2]];
     		break;
 		case 3:
     		LED4 = segtab[led[3]];
     		break;
 		case 4:
     		LED5 = segtab2[led[4]];
     		break;
 		case 5:
     		LED6 = segtab[led[5]];
     		break;
 		case 6:
     		LED7 = segtab[led[6]];
     		break;
		case 7:
     		LED8 = segtab[led[7]];
     		break;
  	}

	if(lednum == 0) //更新需要現實的數碼位
 	{
		lednum = 7;
 	}
 	else
 	{
		lednum = lednum-1;
	}
}  




/***************************************************
			控制顯示函數
函數1:  void change_led(void);
函數2:  void change_led2(void);
功能:  改變LED管應顯示的內容,為顯示做準備

****************************************************/
void change_led(void)//跟蹤當前時間
{
   
   sec++;
   if(sec>=60)
     {
	    min++;
		sec=0;
		if (min>=60)
		   {
		      hour++;
			  min=0;
			  if(hour>=12)
			     {
				   pm=!pm;
				   hour=0;
				  }
			 }
		}
	

	 led[0]=sec%10;
	 led[1]=sec/10;
     led[2]=min%10;
     led[3]=min/10;
     led[4]=hour%10;
     led[5]=hour/10;
	if(pm==0)
	 led[6]=10;
	else
	 led[6]=16;
		  
}



void change_led2(void)//跟蹤按鍵
{
 sec++;
   if(sec>=60)
     {
	    min++;
		sec=0;
		if (min>=60)
		   {
		      hour++;
			  min=0;
			  if(hour>=12)
			     {
				   pm=!pm;
				   hour=0;
				  }
			 }
		}
   
     led[0]=0;
	 led[1]=0;
     led[2]=min2%10;
     led[3]=min2/10;
     led[4]=hour2%10;
     led[5]=hour2/10;
   if(pm==0)
	 led[6]=10;
	else
	 led[6]=16;
}


/***************************************************
			延時函數
原型:  delay(int t);
功能:  延時tms函數

****************************************************/
void delay(int t)
{
  while(t--)
   {
      for(i=0;i<200;i++);
	}
}

/***************************************************
			整點閃爍函數
原型:  void flash(void);
功能:  led[7]以2Hz頻率閃爍

****************************************************/
void flash(void)
{
   led[7]=8;
   delay(330);
   led[7]=17;
   delay(330);
}




/***************************************************
		  處理鍵盤動作函數
原型:  void key_deal(void);
功能:  處理鍵盤動作

****************************************************/
void key_deal(void)
{
     		   getkey=0;
				
  			   switch(keynum)
				{
                  case 0x03://若按下設置鬧鐘鍵
				       if(setalarm==0)
					      {
						     setalarm=1;
                             sec2=sec;
							 min2=min;
							 hour2=hour;
						   }
					    else if (setalarm==1)
							{
                              seca=sec2;
							  mina=min2;
							  houra=hour2;
							  setalarm=0;
							 }
				  break;



				  case 0x04://若按下設置時間鍵
                       if(set==0)
						   { set=1;
						     sec2=sec;
							 min2=min;
							 hour2=hour;
							}




					   else if(set==1)
					           {
							      sec=0;
								  min=min2;
								  hour=hour2;
								  set=0;
								}
				  break;
				  case 0x05://若按下取消鍵
				       if(set==1)					   
				          set=0;
					   else if(setalarm==1)	
					      setalarm=0;
				  break;
				  case 0x06://若按下調整小時位按鈕 
				       if(set==1||setalarm==1)
					   {
				  
				       hour2++;
					   if(hour2>=12)
					     {
						   hour2=0;
						   pm=!pm;
						  }

						}
				  
				  break;
				  case 0x07://若按下調整分鐘位按鈕
				       if(set==1||setalarm==1)
					   {
					   min2++;
					   if(min2>=60)
					      min2=0;
					    }
				  
   				  break;
				  
        		}
				
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区视频在线观看| 日本不卡123| 日韩一区二区电影在线| 91黄色免费网站| www.亚洲国产| 成人精品视频一区二区三区尤物| 久久成人久久鬼色| 国产乱人伦偷精品视频不卡| 久久aⅴ国产欧美74aaa| 天天色 色综合| 久久精品国产一区二区三 | 国产做a爰片久久毛片 | 亚洲视频1区2区| 国产人成一区二区三区影院| 久久久精品黄色| 国产精品久久久久久久久免费相片 | 韩国成人精品a∨在线观看| 精品一区二区三区不卡| 久久99久久久久久久久久久| 国产毛片精品一区| 91麻豆免费观看| 欧美精品高清视频| 久久久精品国产免大香伊| 日本一区二区三区国色天香| 综合电影一区二区三区 | 99riav一区二区三区| 欧美性猛片xxxx免费看久爱| 欧美一级黄色大片| 国产精品久久久久久妇女6080| 一区二区免费视频| 国产一区不卡视频| 在线免费观看日本欧美| 日韩亚洲欧美高清| 精品国产露脸精彩对白| 久久蜜臀精品av| 丝袜亚洲另类丝袜在线| 成人av综合在线| 日韩欧美在线影院| 国产91精品精华液一区二区三区 | 欧美v国产在线一区二区三区| 欧美一区二区三区视频免费播放 | 972aa.com艺术欧美| 欧美区在线观看| 国产女人18毛片水真多成人如厕 | 色综合久久综合网欧美综合网 | 欧美乱熟臀69xxxxxx| 久久色在线观看| 亚洲一区二区不卡免费| 久久久青草青青国产亚洲免观| ...中文天堂在线一区| 国产视频一区在线观看| 亚洲一线二线三线视频| 国产大陆精品国产| 91精品麻豆日日躁夜夜躁| 亚洲视频 欧洲视频| 成人影视亚洲图片在线| 日韩欧美你懂的| 天天操天天干天天综合网| 95精品视频在线| 国产精品久久久久久久久久久免费看| 免费欧美日韩国产三级电影| 欧美三日本三级三级在线播放| 国产精品剧情在线亚洲| 成人综合婷婷国产精品久久 | 成人午夜av电影| 日韩欧美不卡在线观看视频| 日韩黄色免费电影| 欧美三级中文字幕| 一区二区成人在线| 91在线视频免费观看| 国产精品短视频| 成人av资源在线| 国产精品国产三级国产普通话三级 | 亚洲一区免费观看| 成人久久18免费网站麻豆| 精品裸体舞一区二区三区| 日本中文在线一区| 欧美一区二区三区在线观看视频| 天堂在线一区二区| 91麻豆精品91久久久久久清纯| 午夜免费久久看| 欧美一区二区三区四区在线观看| 欧美96一区二区免费视频| 欧美电影免费观看高清完整版 | 99久久精品国产导航| 亚洲欧洲精品成人久久奇米网| 成人ar影院免费观看视频| 中文字幕一区二区日韩精品绯色| 99精品欧美一区| 亚洲成人av免费| 精品国产一区二区三区久久久蜜月| 另类小说综合欧美亚洲| 精品久久久久久亚洲综合网| 欧美精选在线播放| ●精品国产综合乱码久久久久 | 色一情一伦一子一伦一区| 亚洲一区二区av在线| 日韩一区二区在线观看视频播放| 麻豆精品视频在线观看免费| 国产片一区二区三区| 91福利在线看| 久久精品国产亚洲aⅴ | 欧美色爱综合网| 国产在线一区观看| 亚洲欧美另类久久久精品2019| 欧美群妇大交群中文字幕| 国模套图日韩精品一区二区| 日本亚洲免费观看| 国产精品入口麻豆九色| 欧美日韩高清影院| 国产成人免费av在线| 午夜成人免费视频| 国产精品视频yy9299一区| 欧美日韩国产高清一区二区三区| 国产精品18久久久久久vr| 亚洲午夜成aⅴ人片| 国产欧美一区二区精品性| 在线视频中文字幕一区二区| 黄色资源网久久资源365| 亚洲精品网站在线观看| 久久久久久久久久久久久女国产乱| 91啦中文在线观看| 久久99久久久欧美国产| 亚洲欧美韩国综合色| 精品国产一区二区三区av性色 | 91久久精品一区二区三区| 国产在线精品一区二区三区不卡 | 91麻豆精品国产91久久久久久 | 国产一区二区三区在线看麻豆| 亚洲女同ⅹxx女同tv| 久久伊人中文字幕| 欧美精品久久天天躁| av在线免费不卡| 精一区二区三区| 亚洲444eee在线观看| 亚洲精品视频一区二区| 国产精品久久久久aaaa樱花| 日韩欧美在线影院| 欧美一区二区久久久| 欧美影视一区在线| 色一情一乱一乱一91av| 国产成人精品免费看| 久久久久久久久蜜桃| 欧美精品丝袜中出| 精品视频全国免费看| 欧美三电影在线| 99re这里只有精品6| 91美女片黄在线观看91美女| 99精品视频一区| 99久久久久久| 96av麻豆蜜桃一区二区| 91片在线免费观看| 91视频91自| 欧美午夜一区二区三区免费大片| 欧美影院一区二区| 欧美高清视频一二三区| 欧美年轻男男videosbes| 欧美人体做爰大胆视频| 欧美一卡二卡三卡| 久久蜜桃av一区精品变态类天堂| 久久久一区二区三区| www一区二区| 亚洲欧洲在线观看av| 亚洲男帅同性gay1069| 亚洲在线免费播放| 男人的天堂亚洲一区| 国产综合色产在线精品| 成人精品一区二区三区中文字幕| 国产成人在线视频免费播放| 精品一区二区在线观看| 国产乱色国产精品免费视频| 成人激情图片网| 欧美三级电影精品| 久久综合资源网| 中文字幕不卡三区| 亚洲免费在线看| 日本欧美大码aⅴ在线播放| 国产一区二区三区| 91美女片黄在线观看| 制服丝袜在线91| 国产精品午夜在线观看| 亚洲高清视频在线| 久久99精品久久久久久久久久久久| 韩国精品久久久| 在线免费观看成人短视频| 欧美一区二区三区在| 日本一区二区三区国色天香| 亚洲精品中文字幕在线观看| 视频一区二区三区中文字幕| 成人黄动漫网站免费app| 色婷婷国产精品| 精品久久久久久最新网址| 亚洲乱码一区二区三区在线观看| 日本成人中文字幕在线视频| 国产aⅴ精品一区二区三区色成熟| 欧美综合一区二区三区| 欧美高清一级片在线观看| 亚洲国产日韩av| 97精品久久久午夜一区二区三区| 日韩午夜在线播放|