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

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

?? time.c

?? mega128的 書上的 電子時鐘
?? C
字號:
#include<avr/io.h>
#include<avr/signal.h>
#include<avr/interrupt.h>
#include<avr/pgmspace.h>
#define PRG_RDB(addr)       pgm_read_byte(addr)
#include"bolibei.h"

#define PPI_1_PB (unsigned char *)0x6001;
#define PPI_1_PC (unsigned char *)0x6002;
#define PPI_1_CT (unsigned char *)0x6003;
#define TLCD_CTRL (unsigned char *)0x7000;
#define TLCD_DATA (unsigned char *)0x7001;



unsigned char*ppi_ctrl,*ppi_pb,*key;
unsigned char*lcd_data,*lcd_control;
unsigned int cnt=0;           //用于聲音文件的全局變量

void initialize_timer(void);
void initialize_text_lcd(void);
void lcd_control_wait(void);
void lcd_data_wait(void);
void delay(int d1,int d2);
void print_message(char *message);
void transmit(void);
void initialize_ppi(void);
void transmit1(void);
unsigned char out_put(unsigned char in);
unsigned char key_scan(void);
void show_time(void);
void compare_time(void);
void music(void);

volatile unsigned char secl,sech,minl=9,minh=5,hourl,hourh;
volatile unsigned char secL=0,secH=0,minL=1,minH,hourL,hourH,data;
volatile unsigned char dayl=9,dayh=1,monthl=7,monthh=0; //調整顯示日期的變量
volatile unsigned char dayL,dayH,monthL=7,monthH=0;  //調整鬧鐘日期的變量

volatile unsigned char number=0;

volatile char string_data[]="   00:00:00";        //時間顯示字符串
volatile char string_data1[]="   00:00:00";       //鬧鐘顯示字符串
volatile char string_date[]="2006 07 19 ";        //日期顯示字符串
volatile char string_date1[]="2006 07 15 ";       //鬧鐘顯示字符串

SIGNAL(SIG_OVERFLOW1)           //定時器1中斷程序
{  
   TCNT1=0xffff-16000+1;
   secl+=1;
   if(secl>9)
   {secl=0;
   sech+=1;}
   if(sech==6)
   {minl+=1;
   sech=0;}
   if(minl>9)
   {minh+=1;
   minl=0;}
   if(minh==6)
   {hourl+=1;
   minh=0;}
   if(hourl>9)
   {hourh+=1;
   hourl=0;}
   
   if((hourh==2)&(hourl==4))
   {secl=0;
   sech=0;
   minl=0;
   minh=0;
   hourl=0;
   hourh=0;
   dayl++;
   if(dayl==9)
  {dayl=0;
   dayh++;}
   if((dayh==3)&(dayl==0))
   {dayl=0;
   dayh=0;
   monthl++;}
   if(monthl==9)
   {monthh++;
    monthl=0;}
   if((monthl==2)&(monthh==1))
   {monthl=0;
   monthh=0;}
   }
   transmit();
}

void main (void)
{  unsigned char in;
	MCUCR|=(1<<SRE);
	initialize_text_lcd();
	initialize_timer();
	initialize_ppi();
	do
	{
	  in=key_scan();
	  data=out_put(in);
	  show_time();
	  compare_time();
    }while(1);
}
	
void initialize_timer(void)
{
	TCNT1=0xffff-16000+1;	//記數初值
	TCCR1B=0X05;	        //1024分頻
	TIMSK=0x04;		       //打開中斷使能
	sei();			      //開中斷
}


void initialize_ppi(void)     //鍵盤初始化
{
ppi_ctrl=PPI_1_CT;
key=PPI_1_PC;
ppi_pb=PPI_1_PB;
*ppi_ctrl=0X90;
*key=0X00;
}

void transmit(void)            //顯示數據傳送
{
  string_data[3]='0'+hourh;
  string_data[4]='0'+hourl;
  string_data[6]='0'+minh;
  string_data[7]='0'+minl;
  string_data[9]='0'+sech;
  string_data[10]='0'+secl;
  
  string_date[5]='0'+monthh;
  string_date[6]='0'+monthl;
  string_date[8]='0'+dayh;
  string_date[9]='0'+dayl;
  
}

void transmit1(void)
{
  string_data1[3]='0'+hourH;    //顯示鬧鐘時間和日期
  string_data1[4]='0'+hourL;
  string_data1[6]='0'+minH;
  string_data1[7]='0'+minL;
  
  string_date1[5]='0'+monthH;
  string_date1[6]='0'+monthL;
  string_date1[8]='0'+dayH;
  string_date1[9]='0'+dayL;
}
  
void initialize_text_lcd(void)  //LCD初始化
{
lcd_control=TLCD_CTRL;
lcd_data=TLCD_DATA;
lcd_control_wait();
*lcd_control|=0x38;
lcd_control_wait();
*lcd_control|=0x02;
lcd_control_wait();
*lcd_control|=0x01;
lcd_control_wait();
*lcd_control|=0x06;
lcd_control_wait();
*lcd_control|=0x0c;
lcd_control_wait();
}

void print_message(char *message)  //初始LCD顯示時間
{
  unsigned char i;
  for(i=0;i<11;i++)
   {*lcd_data=message[i];
     lcd_data_wait();
   }
}


void lcd_control_wait(void)        //LCD控制延時
{
  delay(1000,10);
}

void lcd_data_wait(void)           //LCD顯示延時
{
  delay(1000,10);
}	

void delay(int d1,int d2)          //延時程序
{
  int i,j;
  for(i=0;i<d1;i++)
    {
       for(j=0;j<d2;j++);
    }
}

unsigned char key_scan(void)         //鍵盤掃描
{
   unsigned char save_low,save_high;
   *ppi_ctrl=0x91;
   *key=0xf0;
    delay(10,10);
	save_low=*key&0x0f;
	*ppi_ctrl=0x90;
	*key=0x00;
	if(save_low)
	{
	*ppi_ctrl=0x98;
	*key=0x0f;
	delay(10,10);
	   save_high=*key&0xf0;
	   *ppi_ctrl=0x90;
	   *key=0x00;
	   if(!save_high)
	   return 0;
	 save_high|=save_low;
	return save_high;
	}
return 0;
}

unsigned char out_put(unsigned char in)  //求取鍵值
{
  unsigned char a=0;
  switch(in)
{
           case 0x11:a=0x01;
           break;
		   case 0x12:a=0x04;
		   break;
		    case 0x22:a=0x05;
		   break;
		    case 0x42:a=0x06;
		   break;
		    case 0x82:a=0x0b;
		   break;
		    case 0x14:a=0x07;
		   break;
		    case 0x24:a=0x08;
		   break;
		    case 0x44:a=0x09;
		   break;
		    case 0x84:a=0x0c;
		   break;
		   default: a=0x00;
		             break;
		}
			return a;
}


void show_time(void)      //設置時間并顯示
{ unsigned char out;
  out=data;
    if(out==1)
      { cli();
	    number++;
	  }
 if(number==1)          //按一下,暫停
	  {
	  *lcd_control=0x01;
	  lcd_control_wait();
	  print_message((char *)string_data);
	  *lcd_control=0xc3;
      lcd_control_wait();
	  print_message((char *)string_date);		
	  delay(1000,1000);}	
  if(number==2)       //按兩下,調整鬧鐘
	  {
      transmit1();
	  *lcd_control=0x01;
	  lcd_control_wait();
	  print_message((char *)string_data1);
      *lcd_control=0xc3;
      lcd_control_wait();	
      print_message((char *)string_date1);			
	  delay(1000,1000);
	  if (out==4)
         {   minL++;
		    if(minL>9)
		      {minH+=1;
			   minL=0;}
		    if(minH==6)
	           minH=0;
	     }
	  if (out==5)
         {  hourL++;
		    if(hourL>9)
		      {hourH+=1;
			   hourL=0;}
	        if((hourH==2)&(hourL==4))
			   {hourL=0;
			   hourH=0;}
		}
			   
		if (out==7)
          {  
		    if((minL==0)&(minH!=0))
		      {minH-=1;
			   minL=9;}
		    else if((minL==0)&(minH==0))
			  {minH=5;
			  minL=9;}
			else
		     minL--;
			 
		  }
	  if (out==8)
         {  
		    if((hourL==0)&(hourH!=0))
		      {hourH-=1;
			   hourL=9;}
			else if((hourH==0)&(hourL==0))
			   {hourL=4;
			   hourH=2;}
			else    
			   hourL--;
		 }
		 
	
	  if (out==6)
         {  dayL++;
		    if(dayL>9)
		      {dayH+=1;
			   dayL=0;}
	        if((dayH==3)&(dayL==1))
			   {dayL=0;
			   dayH=0;}
		 }
	  if (out==9)
         {  
		    if((dayL==0)&(dayH!=0))
		      {dayH-=1;
		       dayL=9;}
			else if((dayH==0)&(dayL==1))
			   {dayL=0;
			   dayH=3;}
			else    
			   dayL--;
		 }
		 if (out==0x0b)
         {  monthL++;
		    if(monthL>9)
		      {monthH+=1;
			   monthL=0;}
	        if((monthH==1)&(monthL==3))
			   {monthL=0;
			   monthH=0;}
		 }
	  if (out==0x0c)
         {  
		    if((monthL==0)&(monthH!=0))
		      {monthH-=1;
		       monthL=9;}
			else if((monthH==0)&(monthL==1))
			   {monthL=2;
			   monthH=1;}
			else if((monthH==0)&(monthL==0)) 
			   {monthL=2;
			   monthH=1;}
		 }
}	
		 if(number==3)    //按三下,調整當前時間
	{
      transmit();
	  *lcd_control=0x01;
	  lcd_control_wait();
	  print_message((char *)string_data);
      *lcd_control=0xc3;
      lcd_control_wait();	
	  print_message((char *)string_date);	
	  delay(1000,1000);
	  if (out==4)
         {   minl++;
		    if(minl>9)
		      {minh+=1;
			   minl=0;}
		    if(minh==6)
	           minh=0;
	     }
	  if (out==5)
         {  hourl++;
		    if(hourl>9)
		      {hourh+=1;
			   hourl=0;}
	        if((hourh==2)&(hourl==4))
			   {hourh=0;
			   hourl=0;}
		}
			   
		if (out==7)
         {  
		    if((minl==0)&(minh!=0))
		      {minh-=1;
			   minl=9;}
		    else if((minh==0)&(minl==0))
			  {minh=5;
			  minl=9;}
			else
		     minl--;
		  }
	  if (out==8)
         {  
		    if((hourl==0)&(hourh!=0))
		      {hourh-=1;
			   hourl=9;}
			else if((hourl==0)&(hourh==0))
			   {hourl=4;
			   hourh=2;}
			else    
			   hourl--;
	      }
		if (out==6)
         {  dayl++;
		    if(dayl>9)
		      {dayh+=1;
			   dayl=0;}
	        if((dayh==3)&(dayl==1))
			   {dayl=0;
			   dayh=0;}
		 }
	  if (out==9)
         {  
		    if((dayl==0)&(dayh!=0))
		      {dayh-=1;
		       dayl=9;}
			else if((dayh==0)&(dayl==1))
			   {dayl=0;
			   dayh=3;}
			else    
			   dayl--;
		 }
		 if (out==0x0b)
         {  monthl++;
		    if(monthl>9)
		      {monthh+=1;
			   monthl=0;}
	        if((monthh==1)&(monthl==3))
			   {monthl=0;
			   monthh=0;}
		 }
	  if (out==0x0c)
         {  
		    if((monthl==0)&(monthh!=0))
		      {monthh-=1;
		       monthl=9;}
			else if((monthh==0)&(monthl==1))
			   {monthl=2;
			   monthh=1;}
			else if((monthh==0)&(monthl==0))
			   {monthl=2;
			   monthh=1;}
			else    
			   monthl--;
		 }
    }
     if((number!=1)&(number!=2)&(number!=3))   //正常顯示
      {
	  number=0;
	  sei();
	  *lcd_control=0x01;
	  lcd_control_wait();
	  print_message((char *)string_data);
	  *lcd_control=0xc3;
      lcd_control_wait();
      print_message((char *)string_date);				
	  delay(1000,1000);}	
}

void compare_time(void)   //與設置的鬧鐘時間進行比較,相同就播放音樂
{
if(monthH==monthh)
 if(monthL==monthl)
  if(dayH==dayh)
   if(dayL==dayl)
    if(hourH==hourh)
     if(hourL==hourl)
	  if(minH==minh)
       if(minL==minl)
	    if(secH==sech)
	     if(secL==secl)
	       music();
}

void music(void)        //播放音樂
{        cnt=0;   
    do
         {  *ppi_pb=PRG_RDB(&snd_data[cnt]);
			cnt++;
			if(PRG_RDB(&snd_data[cnt])!='\0')
			delay(20,10);
			else
			delay(20,20);
		 }while(cnt<=32897);}	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米777欧美一区二区| 亚洲免费看黄网站| 国内不卡的二区三区中文字幕| 日韩一级二级三级精品视频| 青椒成人免费视频| 久久色在线视频| 成人sese在线| 亚洲午夜久久久久| 日韩欧美高清一区| 国产成人一级电影| 一区av在线播放| 欧美一区二区三区在线观看视频| 久久99精品久久久久久久久久久久| 久久精品视频免费| 色综合天天综合色综合av| 五月天一区二区| 久久精品视频在线看| 在线观看一区不卡| 狠狠久久亚洲欧美| 亚洲免费观看视频| 日韩免费视频一区二区| 不卡的av在线播放| 亚洲第一激情av| 欧美激情一区二区三区四区| 色婷婷激情综合| 精品午夜一区二区三区在线观看| 亚洲图片激情小说| 日韩区在线观看| 91免费观看视频| 黑人巨大精品欧美一区| 亚洲一区二区高清| 久久九九影视网| 欧美精品日韩一区| 99久久99久久免费精品蜜臀| 美女一区二区视频| 亚洲午夜在线电影| 国产欧美日本一区二区三区| 欧美乱熟臀69xxxxxx| 大陆成人av片| 久久精品国产久精国产| 一区二区三区免费观看| 久久久久97国产精华液好用吗| 欧美视频一区二区三区在线观看| 国产成人啪午夜精品网站男同| 日韩不卡一二三区| 亚洲精品免费播放| 国产欧美一区二区三区网站| 欧美一级高清片在线观看| 91浏览器在线视频| 成人av网址在线| 国内不卡的二区三区中文字幕| 日韩国产欧美在线播放| 亚洲人被黑人高潮完整版| 国产色91在线| 精品国产网站在线观看| 91精品免费在线| 欧美日韩在线播放一区| www.亚洲精品| 成人av网址在线| 成人午夜又粗又硬又大| 国模娜娜一区二区三区| 美日韩一级片在线观看| 蜜臀精品一区二区三区在线观看 | 欧美国产一区二区在线观看| 日韩欧美在线影院| 日韩一区二区三区四区五区六区 | 国产91精品一区二区| 韩国一区二区视频| 美女视频黄频大全不卡视频在线播放| 亚洲第一在线综合网站| 午夜视黄欧洲亚洲| 视频在线在亚洲| 日韩精品每日更新| 日本一区中文字幕| 免费精品99久久国产综合精品| 日韩精品乱码av一区二区| 午夜精品久久久久久久久久 | 中文字幕制服丝袜成人av| 中文字幕高清一区| 成人免费在线观看入口| 亚洲欧美综合色| 综合久久综合久久| 亚洲综合男人的天堂| 亚洲成人第一页| 全国精品久久少妇| 国产自产v一区二区三区c| 国产激情精品久久久第一区二区| 国产精品一卡二卡| thepron国产精品| 91麻豆产精品久久久久久| 91久久精品国产91性色tv| 在线亚洲一区观看| 欧美一区二区三区免费| 亚洲精品在线免费观看视频| 国产视频一区二区在线观看| 17c精品麻豆一区二区免费| 一区二区激情视频| 美女任你摸久久| 国产精品一区专区| 91丨九色丨蝌蚪富婆spa| 欧美日韩另类国产亚洲欧美一级| 欧美一区二区三区色| 久久久久国产成人精品亚洲午夜| 国产精品成人网| 亚洲福利电影网| 国内精品久久久久影院薰衣草| 成人黄色软件下载| 欧美三级中文字幕| 久久伊99综合婷婷久久伊| 国产精品国产三级国产普通话三级| 夜夜精品浪潮av一区二区三区| 免费欧美日韩国产三级电影| 国产一区 二区 三区一级| 色婷婷久久久亚洲一区二区三区 | 国产成人aaa| 欧洲av在线精品| 26uuu国产日韩综合| 亚洲色图欧美偷拍| 久久精品国产99久久6| 99re这里都是精品| 日韩午夜小视频| 亚洲丝袜自拍清纯另类| 久久国产精品99久久久久久老狼| 不卡视频一二三四| 精品美女一区二区| 亚洲制服丝袜av| 国产黄人亚洲片| 欧美精品久久久久久久久老牛影院| 国产欧美日韩激情| 免费成人你懂的| 在线观看视频一区| 中文乱码免费一区二区| 日韩精品亚洲一区二区三区免费| 在线区一区二视频| 欧美国产日韩亚洲一区| 日本欧美大码aⅴ在线播放| 91麻豆国产自产在线观看| 欧美精品一区二区三区视频| 亚洲成人精品一区| 91蜜桃在线观看| 国产精品护士白丝一区av| 精品在线亚洲视频| 7777精品伊人久久久大香线蕉的| 亚洲视频一区二区在线观看| 国产一区二区不卡老阿姨| 91精品国产91久久久久久最新毛片| 伊人色综合久久天天人手人婷| 成人中文字幕在线| 久久久久久影视| 久久国产精品99精品国产| 日韩亚洲欧美中文三级| 亚洲va欧美va天堂v国产综合| 99精品桃花视频在线观看| 中文无字幕一区二区三区| 国精品**一区二区三区在线蜜桃| 91精品国产免费| 午夜视频在线观看一区二区| 日本韩国精品一区二区在线观看| 日韩一区在线看| 99国产精品99久久久久久| 国产精品国产a级| www.日韩精品| 欧美激情中文不卡| www..com久久爱| 亚洲人成网站在线| 在线观看欧美黄色| 亚洲成人免费视频| 欧美日韩国产综合草草| 日本不卡视频一二三区| 制服丝袜在线91| 久久99精品国产91久久来源| 欧美一二区视频| 国产原创一区二区三区| 久久精品男人的天堂| 国产成人免费av在线| 国产精品美日韩| 91影院在线观看| 亚洲午夜精品在线| 日韩一级成人av| 成人免费视频免费观看| 国产精品久久久久久久久免费丝袜 | 制服丝袜亚洲网站| 久久不见久久见中文字幕免费| 精品动漫一区二区三区在线观看| 国产一区二区三区在线看麻豆| 久久精品在线观看| 99热国产精品| 五月婷婷欧美视频| 久久青草欧美一区二区三区| 成人永久看片免费视频天堂| 亚洲天堂网中文字| 欧美精品99久久久**| 国产一区999| 一区二区三区日韩欧美| 日韩欧美一区二区久久婷婷| 国产精品白丝jk白祙喷水网站| 亚洲蜜桃精久久久久久久| 欧美电影影音先锋| 国产91色综合久久免费分享| 亚洲自拍偷拍av|