久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3428|回復: 5
收起左側

我想問一下這個定時器0在什么時候中斷 新手求問。!

[復制鏈接]
ID:154739 發表于 2017-4-27 16:52 | 顯示全部樓層 |閱讀模式
  • void tim0_isr()interrupt 1 using 1//定時器0中斷服務函數
  • {
  •         irtime++;
  • }
  • void ex0_isr()interrupt 0 using 0//外部中斷0服務函數
  • {
  •         static unsigned char i;
  •         static bit startflag;
  •         if(startflag)
  •         {
  •                 if(irtime<63&&irtime>=33)//引導碼TC9012的頭碼
  •                 i=0;
  •                 irdata=irtime;
  •                 irtime=0;
  •                 i++;
  •                 if(i==33)
  •                 {
  •                         irok=1;
  •                         i=0;
  •                 }
  •         }
  •         else{irtime=0;startflag=1;}
  • }
  • void TIM0init()//定時器0初始化
  • {
  •         TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
  •         TH0=0x00;//reload value
  •         TL0=0x00;//initial value
  •         ET0=1;//開總中斷
  •         TR0=1;
  • }
  • void EX0init()
  • {
  •         IT0=1;//Configure interrupt 0 for falling edge on/INT0(P3.2)
  •         EX0=1;//Enable EX0 Interrupt
  •         EA=1;
  • }////////////////////////////////////////////////////////////////////////
  • void lrcordpro()//紅外碼值處理函數(關鍵函數)
  • {
  •         unsigned char i,j,k=1;
  •         unsigned char cord,value;
  •         for(i=0;i<4;i++)
  •         {/////////////////////處理4個字節
  •                 for(j=1;j<=8;j++)
  •                 {//////////////////處理1個字節8位
  •                         cord=irdata[k];
  •                         value=value>>1;
  •                         if(cord>7)value=value|0x80;//大于某值為1
  •                         k++;
  •                 }
  •                 IRcord=value;
  •                 value=0;
  •         }
  •         irpro_ok=1;//處理完畢標志位置1
  • }
  • void lcd_delay(uchar ms)/*LCD1602延時*/
  • {
  •         uchar j;
  •         while(ms--)
  •         {
  •                 for(j=0;j<250;j++)
  •                 {;}
  •         }
  • }
  • 我想問一下這個定時器0在什么時候中斷,以及中斷的時間并且引導碼那部分能幫我解答一下嗎

回復

使用道具 舉報

ID:154739 發表于 2017-4-27 17:05 | 顯示全部樓層
并且我在淘寶上看了一個單片機遙控器他給的資料只用外部中斷 ,各位能幫我解釋下他的原理嗎
  1. void IR_IN() interrupt 0 using 0
  2. {
  3.   unsigned char j,k,N=0;
  4.      EX0 = 0;   
  5.          delay(15);
  6.          if (IRIN==1)
  7.      { EX0 =1;
  8.            return;
  9.           }
  10.                            
  11.   while (!IRIN)            
  12.     {delay(1);}

  13. for (j=0;j<4;j++)   
  14. {     
  15.   for (k=0;k<8;k++)      
  16.   {
  17.    while (IRIN)            
  18.     while (!IRIN)         
  19.      {delay(1);}
  20.      while (IRIN)         
  21.       {
  22.     delay(1);
  23.     N++;           
  24.     if (N>=30)
  25.          { EX0=1;
  26.          return;}                 
  27.       }                                      
  28.      IRCOM[j]=IRCOM[j] >> 1;                  
  29.      if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
  30.      N=0;
  31.   }//end for k
  32. }//end for j
  33.    
  34.    if (IRCOM[2]!=~IRCOM[3])
  35.    { EX0=1;
  36.      return; }

  37.    IRCOM[5]=IRCOM[2] & 0x0F;   
  38.    IRCOM[6]=IRCOM[2] >> 4;      

  39.    if(IRCOM[5]>9)
  40.     { IRCOM[5]=IRCOM[5]+0x37;}
  41.    else
  42.           IRCOM[5]=IRCOM[5]+0x30;

  43.    if(IRCOM[6]>9)
  44.     { IRCOM[6]=IRCOM[6]+0x37;}
  45.    else
  46.           IRCOM[6]=IRCOM[6]+0x30;

  47.      lcd_pos(0x4b);            
  48.      lcd_wdat(IRCOM[6]);         
  49.      lcd_pos(0x4c);            
  50.      lcd_wdat(IRCOM[5]);      
  51.      beep();
  52.      EX0 = 1;
  53. }
復制代碼
回復

使用道具 舉報

ID:148552 發表于 2017-4-28 13:42 | 顯示全部樓層
當我們按下遙控器的按鍵時,遙控器將發出如圖2的一串二進制代碼,我們稱它為一幀數據。根據各部分的功能?蓪⑺鼈兎譃5部分,分別為引導碼、地址碼、地址碼、數據碼、數據反碼。遙控器發射代碼時.均是低位在前。高位在后。由圖2分析可以得到.引導碼高電平為4.5ms,低電平為4.5ms。當接收到此碼時.表示一幀數據的開始。(定時器部分我在程序里注釋了)

void tim0_isr()interrupt 1 using 1//定時器0中斷服務函數
{
        irtime++; //每278us中斷一次
}
void ex0_isr()interrupt 0 using 0//外部中斷0服務函數
{
        static unsigned char i;
        static bit startflag;//如果startflag置1
        if(startflag)
        {
                                  //如果時間在278*33~278*63us之間
                if(irtime<63&&irtime>=33)//引導碼TC9012的頭碼
                i=0;
                irdata=irtime;
                irtime=0;
                i++;
                if(i==33)
                {
                        irok=1;
                        i=0;
                }
        }
        else{irtime=0;startflag=1;}
}
void TIM0init()//定時器0初始化
{
        TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
               
        TH0=0x00;//reload value
        TL0=0x00;//initial value //大概278微秒定時
               
        ET0=1;//開總中斷
        TR0=1;
}
void EX0init()
{
        IT0=1;//Configure interrupt 0 for falling edge on/INT0(P3.2)
        EX0=1;//Enable EX0 Interrupt
        EA=1;
}////////////////////////////////////////////////////////////////////////
void lrcordpro()//紅外碼值處理函數(關鍵函數)
{
        unsigned char i,j,k=1;
        unsigned char cord,value;
        for(i=0;i<4;i++)
        {/////////////////////處理4個字節
                for(j=1;j<=8;j++)
                {//////////////////處理1個字節8位
                        cord=irdata[k];
                        value=value>>1;
                        if(cord>7)value=value|0x80;//大于某值為1
                        k++;
                }
                IRcord=value;
                value=0;
        }
        irpro_ok=1;//處理完畢標志位置1
}
void lcd_delay(uchar ms)/*LCD1602延時*/
{
        uchar j;
        while(ms--)
        {
                for(j=0;j<250;j++)
                {;}
        }
}

這個詳細介紹了這個過程
回復

使用道具 舉報

ID:193176 發表于 2017-4-29 13:33 | 顯示全部樓層
void TIM0init()//定時器0初始化
{
        TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
        TH0=0x00;//reload value
        TL0=0x00;//initial value
        ET0=1;//開總中斷
        TR0=1;
}
這個段代碼控制定時器0中斷
TMOD用來設置時鐘的工作方式
TH0和TL0控制多長時間中斷一次
ET0  EA TR0 用來打開中斷 其中EA為總中斷
要詳細了解建議百度,網上中斷的教程很多,初學者不建議看很長很復雜的程序
回復

使用道具 舉報

ID:194774 發表于 2017-4-29 16:30 | 顯示全部樓層
void TIM0init()//定時器0初始化
{
        TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
        TH0=0x00;//reload value
        TL0=0x00;//initial value
        ET0=1;//開總中斷
        TR0=1;
}
這個段代碼控制定時器0中斷
TMOD用來設置時鐘的工作方式
TH0和TL0控制多長時間中斷一次
ET0  EA TR0 用來打開中斷 其中EA為總中斷
回復

使用道具 舉報

ID:111634 發表于 2017-4-29 21:38 | 顯示全部樓層
定時器在溢出時中斷。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线视频免费看 | 麻豆av电影网 | 日韩精品在线观看一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 精品日韩一区二区 | 九九久久久| 免费的日批视频 | 国产福利在线小视频 | 亚洲情侣视频 | 日韩在线国产 | 午夜精品一区二区三区免费视频 | 日韩在线观看网站 | 色综合天天综合网国产成人网 | 在线观看黄免费 | 久久精品国产99国产精品 | 一区二区视频免费观看 | 欧美一级毛片免费观看 | 91在线精品视频 | 国产成人99久久亚洲综合精品 | 久草网在线视频 | 亚洲女人的天堂 | 羞羞视频网站 | 久久国内精品 | 激情综合五月 | 欧美午夜在线 | 精品国产一区二区三区久久 | 黄色免费在线观看网站 | 欧美成人一级 | 精品久久久久久久久久久久 | 亚洲一区二区三区在线免费观看 | 午夜视频在线观看一区二区 | 亚洲一区二区在线视频 | 91网视频| 在线成人免费视频 | 久久国产精品视频 | www.啪啪.com| 午夜专区 | 天天操天天摸天天干 | 中文字幕av一区 | 久久精品视频播放 | 91天堂网 |