找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3506|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

我想問(wèn)一下這個(gè)定時(shí)器0在什么時(shí)候中斷 新手求問(wèn)�。�!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:154739 發(fā)表于 2017-4-27 16:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  • void tim0_isr()interrupt 1 using 1//定時(shí)器0中斷服務(wù)函數(shù)
  • {
  •         irtime++;
  • }
  • void ex0_isr()interrupt 0 using 0//外部中斷0服務(wù)函數(shù)
  • {
  •         static unsigned char i;
  •         static bit startflag;
  •         if(startflag)
  •         {
  •                 if(irtime<63&&irtime>=33)//引導(dǎo)碼TC9012的頭碼
  •                 i=0;
  •                 irdata=irtime;
  •                 irtime=0;
  •                 i++;
  •                 if(i==33)
  •                 {
  •                         irok=1;
  •                         i=0;
  •                 }
  •         }
  •         else{irtime=0;startflag=1;}
  • }
  • void TIM0init()//定時(shí)器0初始化
  • {
  •         TMOD=0x02;//定時(shí)器0工作方式2,TH0是重裝值,TL0是初值
  •         TH0=0x00;//reload value
  •         TL0=0x00;//initial value
  •         ET0=1;//開(kāi)總中斷
  •         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()//紅外碼值處理函數(shù)(關(guān)鍵函數(shù))
  • {
  •         unsigned char i,j,k=1;
  •         unsigned char cord,value;
  •         for(i=0;i<4;i++)
  •         {/////////////////////處理4個(gè)字節(jié)
  •                 for(j=1;j<=8;j++)
  •                 {//////////////////處理1個(gè)字節(jié)8位
  •                         cord=irdata[k];
  •                         value=value>>1;
  •                         if(cord>7)value=value|0x80;//大于某值為1
  •                         k++;
  •                 }
  •                 IRcord=value;
  •                 value=0;
  •         }
  •         irpro_ok=1;//處理完畢標(biāo)志位置1
  • }
  • void lcd_delay(uchar ms)/*LCD1602延時(shí)*/
  • {
  •         uchar j;
  •         while(ms--)
  •         {
  •                 for(j=0;j<250;j++)
  •                 {;}
  •         }
  • }
  • 我想問(wèn)一下這個(gè)定時(shí)器0在什么時(shí)候中斷,以及中斷的時(shí)間并且引導(dǎo)碼那部分能幫我解答一下嗎

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:154739 發(fā)表于 2017-4-27 17:05 | 只看該作者
并且我在淘寶上看了一個(gè)單片機(jī)遙控器他給的資料只用外部中斷 ,各位能幫我解釋下他的原理嗎
  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. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:148552 發(fā)表于 2017-4-28 13:42 | 只看該作者
當(dāng)我們按下遙控器的按鍵時(shí),遙控器將發(fā)出如圖2的一串二進(jìn)制代碼,我們稱(chēng)它為一幀數(shù)據(jù)。根據(jù)各部分的功能。可將它們分為5部分,分別為引導(dǎo)碼、地址碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時(shí).均是低位在前。高位在后。由圖2分析可以得到.引導(dǎo)碼高電平為4.5ms,低電平為4.5ms。當(dāng)接收到此碼時(shí).表示一幀數(shù)據(jù)的開(kāi)始。(定時(shí)器部分我在程序里注釋了)

void tim0_isr()interrupt 1 using 1//定時(shí)器0中斷服務(wù)函數(shù)
{
        irtime++; //每278us中斷一次
}
void ex0_isr()interrupt 0 using 0//外部中斷0服務(wù)函數(shù)
{
        static unsigned char i;
        static bit startflag;//如果startflag置1
        if(startflag)
        {
                                  //如果時(shí)間在278*33~278*63us之間
                if(irtime<63&&irtime>=33)//引導(dǎo)碼TC9012的頭碼
                i=0;
                irdata=irtime;
                irtime=0;
                i++;
                if(i==33)
                {
                        irok=1;
                        i=0;
                }
        }
        else{irtime=0;startflag=1;}
}
void TIM0init()//定時(shí)器0初始化
{
        TMOD=0x02;//定時(shí)器0工作方式2,TH0是重裝值,TL0是初值
               
        TH0=0x00;//reload value
        TL0=0x00;//initial value //大概278微秒定時(shí)
               
        ET0=1;//開(kāi)總中斷
        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()//紅外碼值處理函數(shù)(關(guān)鍵函數(shù))
{
        unsigned char i,j,k=1;
        unsigned char cord,value;
        for(i=0;i<4;i++)
        {/////////////////////處理4個(gè)字節(jié)
                for(j=1;j<=8;j++)
                {//////////////////處理1個(gè)字節(jié)8位
                        cord=irdata[k];
                        value=value>>1;
                        if(cord>7)value=value|0x80;//大于某值為1
                        k++;
                }
                IRcord=value;
                value=0;
        }
        irpro_ok=1;//處理完畢標(biāo)志位置1
}
void lcd_delay(uchar ms)/*LCD1602延時(shí)*/
{
        uchar j;
        while(ms--)
        {
                for(j=0;j<250;j++)
                {;}
        }
}

這個(gè)詳細(xì)介紹了這個(gè)過(guò)程
回復(fù)

使用道具 舉報(bào)

地板
ID:193176 發(fā)表于 2017-4-29 13:33 | 只看該作者
void TIM0init()//定時(shí)器0初始化
{
        TMOD=0x02;//定時(shí)器0工作方式2,TH0是重裝值,TL0是初值
        TH0=0x00;//reload value
        TL0=0x00;//initial value
        ET0=1;//開(kāi)總中斷
        TR0=1;
}
這個(gè)段代碼控制定時(shí)器0中斷
TMOD用來(lái)設(shè)置時(shí)鐘的工作方式
TH0和TL0控制多長(zhǎng)時(shí)間中斷一次
ET0  EA TR0 用來(lái)打開(kāi)中斷 其中EA為總中斷
要詳細(xì)了解建議百度,網(wǎng)上中斷的教程很多,初學(xué)者不建議看很長(zhǎng)很復(fù)雜的程序
回復(fù)

使用道具 舉報(bào)

5#
ID:194774 發(fā)表于 2017-4-29 16:30 | 只看該作者
void TIM0init()//定時(shí)器0初始化
{
        TMOD=0x02;//定時(shí)器0工作方式2,TH0是重裝值,TL0是初值
        TH0=0x00;//reload value
        TL0=0x00;//initial value
        ET0=1;//開(kāi)總中斷
        TR0=1;
}
這個(gè)段代碼控制定時(shí)器0中斷
TMOD用來(lái)設(shè)置時(shí)鐘的工作方式
TH0和TL0控制多長(zhǎng)時(shí)間中斷一次
ET0  EA TR0 用來(lái)打開(kāi)中斷 其中EA為總中斷
回復(fù)

使用道具 舉報(bào)

6#
ID:111634 發(fā)表于 2017-4-29 21:38 | 只看該作者
定時(shí)器在溢出時(shí)中斷。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表