日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
sc6221紅外遙控解碼程序
sc6221紅外遙控解碼程序
 更新時(shí)間:2009-7-9 16:52:18  點(diǎn)擊數(shù):0
【字體: 字體顏色
/*************************************************************************/
//uPD6221遙控測(cè)試
//是誰(shuí)對(duì)人類的貢獻(xiàn)最大,就是那些無私貢獻(xiàn)自已程序一生無私的人。//Created by : mikezhong//Created dated: Apr. 5,2007
/**************************************************************************/#i nclude "STC12C2052AD.h"
#i nclude "intrins.h" sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_7=P1^7;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_7=P3^7;#define nop();          _nop_();
#define REMOTE_IN       P3_3
#define OFF             0
#define ON              1/****************Define IR code*******************************/
#define vol_up            0x807f50af //0x04fbd827 //遙控功能碼
#define vol_down       0x807f6897 //0x04fb8877
#define mute               0x807fd02f                                                      // 0   1   2    3    4    5   6    7    8    9
unsigned char displaycode[]={0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7};
unsigned char vol;
unsigned char bit_count,count,int_flag,_9ms_flag,remote_ok;
unsigned int continue_flag;
long int remote_value,remote_value_buffer; void Port_initial(void);
void T1_T0_INT1_initial(void);
void display(unsigned char d_data);
void Delay_us(unsigned char time);
/********************For remote control***********************/
void timer0_ISR(void) interrupt 1 //256us
{
   TH0=0Xff;  //256us-->0xff00,12MHz Crystal
   TL0=0X00;
   if (int_flag==1)
    {
   count++;
 }
   if (_9ms_flag==1)
    {
      continue_flag++;
 }
   if (continue_flag>=453)//116ms/0.256ms=453.125
    {
      _9ms_flag=0;        //如果引導(dǎo)碼后116ms都沒有出現(xiàn)連續(xù)碼,則無連續(xù)碼,重新等待按鍵。
   count=0;
   int_flag=0;
   bit_count=0;
   continue_flag=0;
 }
}/************************************************************/
void INT1_ISR(void) interrupt 2
{
  int_flag=1; //進(jìn)入中斷則標(biāo)置置1,用于定時(shí)器中斷中count計(jì)數(shù)。
   if (bit_count==0)
    {
       if (count>49 && count<56) // 13.5ms/0.256ms=52.73
       {
        
       bit_count++;
          _9ms_flag=1; //第一位引導(dǎo)碼有效。
          count=0;    //從0開始計(jì)數(shù)。
   
          return;
       }
    else if (count>39 && count<50 && _9ms_flag==1)//11.5ms/0.256ms=44.92
    {
          //P3_5=!P3_5; //for testing.
       remote_ok=1;     //遙控信號(hào)繼續(xù)有效。
    continue_flag=0; //清除超時(shí)標(biāo)志。
    int_flag=0;      //清除外部中斷標(biāo)志,禁止count計(jì)數(shù)。
    count=0;         //計(jì)數(shù)count清零。
   
    return;
    }
    else
    {
     nop();
     count=0;
     bit_count=0;
     return;
    }
    }
   if (count>2 && count<6) //1.125ms/0.256ms=4.39
    {
      remote_value =remote_value<<1;//保存0值到變量中。
    bit_count++;
    }
   else if (count>6 && count<11)//2.25ms/0.256=8.789
    {
      remote_value=(remote_value<<1) + 0x00000001;//保存1值到變量中。
   bit_count++;
 }
   else
 {
      count=0;
   int_flag=0;
   _9ms_flag=0;
   bit_count=0;
   continue_flag=0;
     
 }
   if (bit_count>=33)
    {
   remote_ok=1;
   remote_value_buffer=remote_value;
   int_flag=0;
   bit_count=0;
   count=0;
 }
   count=0;
} //int1中斷結(jié)束 void main(void )
{
  remote_value=0;
  Port_initial();
  T1_T0_INT1_initial();
  TR0=1;
  ET0=1;
  EX1=1;
  EA=1;
  vol=30;
  P3_5=0;
  bit_count=0;
  while (1)
  {
    display(vol);
    if (remote_ok==1)
 {
    remote_ok=0;
    remote_value=0;
   
       switch (remote_value_buffer)
    {
         case vol_up: vol++;
                remote_value_buffer=0;//如果在這里清除此變量remote_value_buffer,則為單擊功能。
       break;
   case vol_down: vol--;break;//未清除remote_value_buffer,此為連擊功能。
   case mute: vol--;break;
  
   default : break;
    }
 }
  }
}/**********************************************************
Accurate us time delay
Parameter:3 ->6  us
          27 ->50 us,
          55 ->100us,
    82 ->150us,
    107->200us,
    131->250us,
    160->300us,
    189->350us,
    214->400us,
    253->476us
**********************************************************/
void Delay_us(unsigned char time)
{
  while (--time)
  {
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
  }
 
}
/*********************************************/
void display(unsigned char d_data)
{
   unsigned char high,low;//vol_high,vol_low分別為查表時(shí)要用到的高字節(jié),和低字節(jié)
   high=d_data/10;
   low=d_data%10;   P1=0XFF;
   P3_7=1;
   P1=displaycode[high];
   P1_0=0;P3_7=1;   Delay_us(253);
   Delay_us(253);
   P1=0XFF;P3_7=1;   P1=displaycode[low];
   P1_0=1;P3_7=0;
   Delay_us(253);
   Delay_us(253);
}/***********************************************************
 Timer0 was used for remote control ,each 256us interrupt,
***********************************************************/
void T1_T0_INT1_initial(void)
{
   TMOD=0X01; //Timer0 mode1. 16bit timer.
   TCON=0x04; //enable timer0 interrupt.TF0=1;TR1=0;Enable INT1 fall-edge interrupt.
   TH0=0Xff;  //256us-->0xff00,12MHz Crystal
   TL0=0X00; 
}
/*********************PORT initialization************************/
void Port_initial(void)
{
  P1M0=0X00;//input setup.
  P1M1=0X00;
  P3M0=0x00; //P3。3 input, other pins was set to output.
  P3M1=0x00;
  P1=0XFF;
  P3=0Xff;
}
  • 上一篇: 51模擬串口c程序
  • 下一篇: SC6122紅外線解碼程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1