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

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

?? main.c

?? 遙控器遙控電風扇的制作例程(M8 RC5).rar
?? C
字號:
/******************************************                                         
   電風扇遙控主程序  V1.0     2006/08/8
           作者: 王冠明                 
     目標MCU:MEGA8    外部晶振:4M 
編譯:ICCAVR6.13A
      
1.RC5碼解碼
2.自然風產生
3.獲得同步后,每1/2周期檢測,讀取到的電平就是數據了---反相 0就是1,1就是0。
******************************************/
#include <iom8v.h> 
#include <macros.h>
#include <stdlib.h>
#include "TEST_USART.h"

typedef unsigned char  uint8;
typedef unsigned int   uint16;
typedef unsigned long  uint32;
typedef signed   char  int8;
typedef signed   int   int16;
typedef signed   long  int32;

#define		BIT_SET(a,b)	a|=BIT(b)
#define		BIT_CLR(a,b)	a&=~BIT(b)
#define		BIT_INV(a,b)   	a^=BIT(b)
#define		BIT_STATUS(a,b) a&BIT(b)


#define	  BUZZER_ON()   PORTD&=~BIT(PD4)  
#define	  BUZZER_OFF()  PORTD|=BIT(PD4)

#define	  SCR1_ON()     PORTD&=~BIT(PD5)  
#define	  SCR1_OFF()    PORTD|=BIT(PD5)
#define	  SCR2_ON()     PORTD&=~BIT(PD6)  
#define	  SCR2_OFF()    PORTD|=BIT(PD6)
#define	  SCR3_ON()     PORTD&=~BIT(PD7)  
#define	  SCR3_OFF()    PORTD|=BIT(PD7)

uint8  renovate;//顯示更新
uint8  LED;
uint8  KEY;
uint8  BUZZER_time;
uint8  estate;
uint8  timing;
uint16 IR_code_old;
uint16 IR_code_old_time;
uint8  nature_sign;//自然風
uint16 nature_time;
uint8  career;
uint16 LED_time;

uint16 nature2_time;
uint8  career2;
uint8  career2_ONOFF;

//系統初版始化
void intit(void)
{
    //看門狗
   WDR();  //喂狗
   WDTCR=BIT(WDCE)|BIT(WDE);
   WDTCR=BIT(WDE)|BIT(WDP2)|BIT(WDP1);  //使能watchdog,1024K分頻,典型溢出時間5V時1S

   DDRD|=BIT(PD7)|BIT(PD6)|BIT(PD5)|BIT(PD4);
   PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5)|BIT(PD4);
     
   PORTB|=BIT(PB0); //IR   
   DDRC|=BIT(PC2);  //COM 
    
   //T2初始化 顯示用      
   //OCR2=156;   //10mS 4M
   OCR2=78;     //5mS 4M
   TIMSK=BIT(OCIE2); //比較匹配中斷使能
   TCCR2=BIT(WGM21)|BIT(CS22)|BIT(CS21);//256分頻CTC模式
    
   //T1初始化 紅外解碼用 
   TCCR1B=BIT(ICNC1)|BIT(WGM12)|BIT(CS10);//噪聲抑制 下降沿觸發 CTC(模式4) 1分頻
   TIMSK|=BIT(TICIE1);//輸入捕捉中斷使能
   
     
   SEI(); //開全局中斷
  
}



/****************************************************************************
* 名稱:    LED_KEY(void)
* 功能:    數碼管,LED 顯示驅動,按鍵讀取
* 入口參數:
* 出口參數:
****************************************************************************/
void LED_KEY(void)
{

          uint8  i;
   static uint8  com;
   static uint8  KEY_life[3];//按鍵壽命

   if(renovate==0) return;
   //按鍵讀取 
   DDRC&=~(BIT(PC5)|BIT(PC4)|BIT(PC3)); 
   PORTC|=BIT(PC5)|BIT(PC4)|BIT(PC3);    
   PORTC&=~BIT(PC2);
   
    
   NOP();
   NOP();
   
   for(i=0;i<3;i++)
   { 
   	 if((PINC&BIT(i+3))==0)
   	 	{
   	 	  if(KEY==0)
   	 	  	{
   	 	  		KEY_life[i]++;
   	 	 	    if(KEY_life[i]>50) KEY=i+1; 
   	 	 	  } 
   	 	 }		
   	 else 
   	 	{
   	 		KEY_life[i]=0;
   	 		if(KEY==(i+1)) KEY=10; 
   	 	}
   } 
   
   //顯示
   if(LED_time>0)
   	{
     PORTC|=BIT(PC2);
     if((LED&BIT(com))&BIT(com)) 
   	  {
   	  	DDRC|=BIT(com+3);
   		  PORTC&=~BIT(com+3);
   	  }
    }    
   if(++com>2) com=0;
   renovate=0;
}


/****************************************************************************
* 名稱:    timer2_comp_isr(void)
* 功能:    T2比較匹配中斷處理
* 入口參數:
* 出口參數:
****************************************************************************/
#pragma interrupt_handler timer2_comp_isr:iv_TIMER2_COMP	
void timer2_comp_isr(void)
{  
   static uint16  minute;
   
   renovate=1;  
   	
   //蜂鳴
   if(BUZZER_time>0)     
   	 { 
   		   BUZZER_time--;
         BUZZER_ON(); 
   	 }
   else BUZZER_OFF();  
   	
   if(IR_code_old_time>0)
   	{
   		IR_code_old_time--;
   		if(IR_code_old_time==0) IR_code_old=0xffff;
   	}	
   
   if(nature_time>0) nature_time--;
   if(nature2_time>0) nature2_time--;
   	
   if(LED_time>0) LED_time--;	
   if(++minute==12000) //一分鐘
   	{
   		minute=0;
   		if(timing>0) 
   			{
   				timing--;
   				if(timing==0) KEY=10;
   			}
   	}	
   	  
}


/*------------------------------------------------------------------------------ 
模塊名稱:PB0(ICP)引腳下降沿捕捉中斷程序 

RC5碼
____     
    |   |         
    |___|
|<-bit->| 
               
遙控器晶振455,一個bit=1.778ms  CPUclck 4M  7112
                       
                       
紅外接收器輸出是反相的
------------------------------------------------------------------------------*/
#define  bit    7112
uint16 IR_code;//紅外遙控鍵碼 
uint8  OK_read;//讀碼完畢標志
uint8  sign;   //半位記錄
uint8  sign_i;

#pragma interrupt_handler timer1_capt_isr:iv_TIMER1_CAPT 
void timer1_capt_isr(void) 
{       
   OCR1A=bit/4; //第一次中斷bit/4
   TCNT1=0;
   TIFR|=BIT(OCF1A);
   TIMSK&=~BIT(TICIE1);//清輸入捕捉中斷使能
   TIMSK|=BIT(OCIE1A);//輸出比較 A 匹配中斷使能 
   sign=1;
   sign_i=1;
     
}
//定時器T1匹配中斷A服務程序
#pragma interrupt_handler timer1_compa_isr:iv_TIMER1_COMPA 
void timer1_compa_isr(void)
{ 
  static uint8  times;//記錄捕捉次數 	
  
  OCR1A=bit/2;
  
  switch (sign_i)     
       {
		       case 0: 
		       	      if(PINB&BIT(PB0)) sign=1;
		       	      else sign=0;	
		       	      sign_i=1;	
		       break;
		       case 1:
		       	     sign_i=0;
		       	     sign<<=1;
		       	     if(PINB&BIT(PB0)) sign|=1;
		       	     IR_code<<=1; 
		       	     if(sign==0B10) IR_code|=1; 
		       	     times++;
		       	     if(times>13)
  	                {
  	                  times=0;
  	                  OK_read=1;
  	                  IR_code&=0xfff;
  	                  TIFR|=BIT(ICF1);
  		                TIMSK|=BIT(TICIE1);//輸入捕捉中斷使能
  		                TIMSK&=~BIT(OCIE1A);//清輸出比較 A 匹配中斷使能
  	                 }	
  	              if((sign==0B11)||(sign==0B00)) //錯誤重啟
		       	     	  {
		       	     		  times=0; 
 		                  TIFR|=BIT(ICF1);
  		                TIMSK|=BIT(TICIE1);//輸入捕捉中斷使能
 		                  TIMSK&=~BIT(OCIE1A);//清輸出比較 A 匹配中斷使能
		       	     	  }  
		       break;
		     }
}

//工作轉換
void SYS(void)
{ 
  if((KEY!=0)&&(OK_read!=0)) OK_read=0;
  switch (KEY)     
    {
		   case 0:
		   	     	if(OK_read)
		           {
		             LED_time=6000;
		             IR_code_old_time=100;
		             OK_read=0;
		   	     	   estate=IR_code&0x7ff;
		   	     	   if(IR_code!=IR_code_old)
		   	     	   	{
		   	     	     switch (estate)     
                    {
		                 case 1: //1檔
		                 	      PORTD=(PORTD|(BIT(PD7)|BIT(PD6)))&(~BIT(PD5)); 
		                 	      BUZZER_time=10;
		                 	      career=1;
		                 	      nature_time=20000;
		                 	      career2_ONOFF=1;
		                 	      LED|=BIT(2);
		                 break;
		                 case 2: //2檔
		                 	      PORTD=(PORTD|(BIT(PD7)|BIT(PD5)))&(~BIT(PD6)); 
		                 	      BUZZER_time=10;
		                 	      career=2;
		                 	      nature_time=20000;
		                 	      career2_ONOFF=1;
		                 	      LED|=BIT(2);
		                 break;	
		                 case 3: //3檔
		                 	      PORTD=(PORTD|(BIT(PD6)|BIT(PD5)))&(~BIT(PD7));  
		                 	      BUZZER_time=10;
		                 	      career=3;
		                 	      nature_time=20000;
		                 	      career2_ONOFF=1;
		                 	      LED|=BIT(2); 
		                 break;	
		                 case 0: //0	
		                 case 12: //開關
		                 	       PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5);  
		                 	       BUZZER_time=10;
		                 	       timing=0;
		                 	       nature_sign=0;
		                 	       career=0;
		                 	       LED=0; 
		                 break;
		                 case 34: //自然風
		                 	       	switch (nature_sign)     
                                 {
		                               case 0:
		                               	      nature_sign++;
		                               	      nature_time=10000;
		                 	       		          LED|=BIT(1); 
		                               break;
		                               case 1:
		                               	      nature_sign++;
		                               	      nature_time=10000;
		                               	      career2_ONOFF=1;
		                               	      if(career==0)
		                               	      	{
		                 	       		              PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5);
		                 	       		              PORTD&=~BIT(5);
		                 	       		            }
		                 	       		          LED|=BIT(1); 
		                               break;
		                               case 2:
		                               	      nature_sign=0;
		                               	      PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5);  
		                 	       		          if(career>0) PORTD&=~BIT(career+4);     		
		                 	       		          LED&=~BIT(1);
		                               break;
		                              } 
		                 	       	BUZZER_time=10;   
		                 break;	
		                 case 38:   //定時
		                 	       if(timing<180) 
		                 	       	{
		                 	       		timing+=30;
		                 	       		BUZZER_time=10;
		                 	       		LED|=BIT(0); //定時指示
		                 	       	}
		                 break;	
		                 case 16:   //音+
		                 break;	
		                 case 17:   //音-
		                 break;	
		                 case 32:   //頻+
		                 break;	
		                 case 33:   //頻-
		                 break;								
		               }
		              }
                  IR_code_old=IR_code;
		            }
       break;
       case 1: PORTD=(PORTD|(BIT(PD7)|BIT(PD6)))&(~BIT(PD5));//按鍵1檔
       	       career=0;
       	       timing=0;
       	       nature_sign=0;
       	       LED=0;
       break;	                      
       case 2: PORTD=(PORTD|(BIT(PD7)|BIT(PD5)))&(~BIT(PD6));//按鍵2檔
       	       career=0;
       	       timing=0;
       	       nature_sign=0;
       	       LED=0;
       break;	
       case 3: PORTD=(PORTD|(BIT(PD6)|BIT(PD5)))&(~BIT(PD7));//按鍵3檔
       	       career=0;
       	       timing=0;
       	       nature_sign=0;
       	       LED=0;          
       break;
       case 10: 
       	       PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5);
       	       career=0;
       	       timing=0;
       	       nature_sign=0;
       	       LED=0;
       	       KEY=0;                   
       break;
     }
}
//自然風
void nature(void) 
{
 if(nature2_time==0)
  	{
  		 nature2_time=rand()%150+200;
  		 career2++;
  	}
 if(career2>3) career2=1;
 if(nature_time==0)
  	{
  		 nature_time=rand()%12000+2000;
  		 switch (nature_sign)     
             {
		            case 1: 
		            	     if(career>0)
  		 	                  {
		            	          if(PORTD&BIT(career+4)) PORTD&=~BIT(career+4);	
  		 		                  else                    PORTD|=BIT(career+4);
  		 		                }
		            break;
		            case 2: 
		            	     PORTD|=BIT(PD7)|BIT(PD6)|BIT(PD5);
		            	     if(career2_ONOFF==1) career2_ONOFF=0;
		            	     else 
		            	     	{
		            	         career2_ONOFF=1;
		            	         PORTD&=~BIT(career2+4);	
  		 		               }
		            break;
		          }
  	}
 
}

  
//主程序
void main(void) 
{ 
  uint8 i;
  intit();
  TEST_USART_init();
  LED_time=6000;
  BUZZER_time=10;
  KEY=10;
  while(1)
  {
    WDR();       //看門狗計數清零
	  LED_KEY();
    SYS();
    nature(); 
    
//	 if(OK_read==1) //調試用
//	 {
//	    printf("%u",IR_code);
//	    printf("\r\n\r\n");    
//      OK_read=0;
//      IR_code=0;
//	  }     
   }   
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品777| 国产999精品久久久久久绿帽| 欧美日韩国产美女| 午夜久久久久久久久久一区二区| 欧美在线不卡一区| 偷偷要91色婷婷| 亚洲精品一区二区三区福利| 国产剧情一区在线| 国产精品久久精品日日| 日本韩国一区二区| 日韩av一区二区三区| 久久久久久久一区| 懂色av一区二区三区免费观看| 国产精品国产三级国产a| 欧美丝袜丝交足nylons| 看片的网站亚洲| 国产女人18毛片水真多成人如厕 | 日本一区二区三区四区| 99re热这里只有精品免费视频| 亚洲综合一二三区| 日韩女同互慰一区二区| 成人美女视频在线看| 亚洲一区二区3| 久久影院视频免费| 日本韩国精品在线| 久久国产精品99久久久久久老狼| 欧美国产乱子伦 | 日韩午夜激情视频| av一本久道久久综合久久鬼色| 亚洲午夜私人影院| 国产三级一区二区| 欧美日韩亚洲国产综合| 国产精品一线二线三线| 午夜影院久久久| 国产精品视频线看| 欧美一区二区网站| 91啪九色porn原创视频在线观看| 免费人成精品欧美精品| 亚洲九九爱视频| 久久久久亚洲综合| 911国产精品| 99r国产精品| 国产成人亚洲综合色影视| 五月婷婷综合激情| 亚洲欧美一区二区三区久本道91| 日韩欧美高清在线| 欧美日韩一区二区三区视频| 懂色av一区二区三区免费观看| 污片在线观看一区二区| 亚洲日本在线天堂| 欧美激情一区二区三区蜜桃视频| 日韩欧美一二三区| 欧美日韩三级一区| 色综合天天狠狠| 成人久久视频在线观看| 国产一区二区三区蝌蚪| 日韩精品福利网| 亚洲成人激情社区| 亚洲麻豆国产自偷在线| 国产精品电影一区二区| 国产亚洲污的网站| 2020国产精品久久精品美国| 69久久99精品久久久久婷婷 | 日本不卡不码高清免费观看| 亚洲在线视频网站| 一区二区久久久久久| 一区在线观看免费| 国产精品少妇自拍| 欧美韩日一区二区三区| 久久免费精品国产久精品久久久久| 91精品国产欧美一区二区成人| 欧美精品日韩综合在线| 欧美日韩精品一区二区三区蜜桃 | 在线观看免费一区| 91日韩精品一区| 日本韩国欧美国产| 欧美三级日韩三级国产三级| 欧美综合天天夜夜久久| 欧美色精品在线视频| 91久久精品一区二区三区| 色婷婷国产精品| 欧美日韩在线亚洲一区蜜芽| 337p亚洲精品色噜噜狠狠| 欧美一区二区三区免费| 日韩一卡二卡三卡| 久久久久久久电影| 欧美激情中文不卡| 亚洲精品久久久久久国产精华液| 亚洲综合在线第一页| 婷婷中文字幕综合| 久久99久久99| 国产91丝袜在线观看| 99久久综合99久久综合网站| 在线视频中文字幕一区二区| 欧美日韩成人综合| 欧美tk—视频vk| 国产精品乱人伦中文| 亚洲乱码国产乱码精品精可以看| 亚洲成人高清在线| 国内不卡的二区三区中文字幕| 丁香婷婷综合网| 色欧美88888久久久久久影院| 欧美日韩一区二区三区四区五区| 日韩欧美国产一区在线观看| 亚洲资源中文字幕| 亚洲高清免费观看 | 亚洲一区国产视频| 美腿丝袜在线亚洲一区| 顶级嫩模精品视频在线看| 一本一本大道香蕉久在线精品| 在线播放一区二区三区| 国产欧美日韩视频一区二区| 一区二区三区精品在线观看| 蜜桃精品在线观看| 色综合天天综合色综合av| 91麻豆精品国产91久久久| 国产视频一区二区在线观看| 亚洲一二三四在线观看| 国内外成人在线| 日本韩国视频一区二区| 久久综合狠狠综合| 亚洲午夜免费福利视频| 国产成人精品三级| 欧美丰满高潮xxxx喷水动漫| 国产日韩精品视频一区| 午夜精品久久久久影视| 成人免费精品视频| 日韩午夜小视频| 亚洲一区二区三区小说| 大尺度一区二区| 欧美一区二区人人喊爽| 亚洲欧美日韩一区二区 | 这里只有精品99re| 国产精品久久久久一区 | 成人免费毛片a| 精品少妇一区二区三区免费观看| 一区二区三区中文字幕精品精品| 久久精品国产77777蜜臀| 欧美专区亚洲专区| 国产精品乱码妇女bbbb| 极品美女销魂一区二区三区| 欧美私模裸体表演在线观看| 成人欧美一区二区三区小说| 国产乱一区二区| 欧美电影免费观看高清完整版在线| 亚洲与欧洲av电影| 91亚洲永久精品| 国产精品乱人伦| 成人性生交大合| 国产日韩高清在线| 国产酒店精品激情| 日韩免费高清视频| 日本不卡不码高清免费观看| 欧美日韩亚洲另类| 亚洲一区二区偷拍精品| 在线一区二区视频| 一区二区三区产品免费精品久久75| 成人性色生活片| 国产精品乱人伦| av在线播放不卡| 中文字幕欧美一区| 91视频.com| 亚洲婷婷在线视频| 91国偷自产一区二区三区观看 | 国产精品乡下勾搭老头1| xnxx国产精品| 国产又黄又大久久| 久久亚区不卡日本| 国产精品资源网站| 国产欧美一区二区精品婷婷| 国产精品小仙女| 国产精品伦一区| 91视视频在线直接观看在线看网页在线看| 日本一区二区不卡视频| 成人黄色在线网站| 综合色中文字幕| 91电影在线观看| 午夜欧美电影在线观看| 欧美顶级少妇做爰| 久久99国产精品久久99果冻传媒| 欧美大肚乱孕交hd孕妇| 久久精品99国产精品| www国产精品av| 97精品国产露脸对白| 亚洲卡通欧美制服中文| 666欧美在线视频| 国产乱子轮精品视频| 国产精品美女久久久久av爽李琼| 一道本成人在线| 日本在线不卡一区| 久久午夜老司机| 99精品视频在线观看| 亚洲va欧美va人人爽午夜| 日韩精品中文字幕一区二区三区| 国产一区二区成人久久免费影院| 国产精品欧美精品| 欧美日韩大陆一区二区| 国产精品一区二区免费不卡| 亚洲美女视频在线观看| 欧美www视频|