標(biāo)題:
我想問(wèn)一下這個(gè)定時(shí)器0在什么時(shí)候中斷 新手求問(wèn)!!!
[打印本頁(yè)]
作者:
wuli555
時(shí)間:
2017-4-27 16:52
標(biāo)題:
我想問(wèn)一下這個(gè)定時(shí)器0在什么時(shí)候中斷 新手求問(wèn)。!
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)碼那部分能幫我解答一下嗎
作者:
wuli555
時(shí)間:
2017-4-27 17:05
并且我在淘寶上看了一個(gè)單片機(jī)遙控器他給的資料只用外部中斷 ,各位能幫我解釋下他的原理嗎
void IR_IN() interrupt 0 using 0
{
unsigned char j,k,N=0;
EX0 = 0;
delay(15);
if (IRIN==1)
{ EX0 =1;
return;
}
while (!IRIN)
{delay(1);}
for (j=0;j<4;j++)
{
for (k=0;k<8;k++)
{
while (IRIN)
while (!IRIN)
{delay(1);}
while (IRIN)
{
delay(1);
N++;
if (N>=30)
{ EX0=1;
return;}
}
IRCOM[j]=IRCOM[j] >> 1;
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
N=0;
}//end for k
}//end for j
if (IRCOM[2]!=~IRCOM[3])
{ EX0=1;
return; }
IRCOM[5]=IRCOM[2] & 0x0F;
IRCOM[6]=IRCOM[2] >> 4;
if(IRCOM[5]>9)
{ IRCOM[5]=IRCOM[5]+0x37;}
else
IRCOM[5]=IRCOM[5]+0x30;
if(IRCOM[6]>9)
{ IRCOM[6]=IRCOM[6]+0x37;}
else
IRCOM[6]=IRCOM[6]+0x30;
lcd_pos(0x4b);
lcd_wdat(IRCOM[6]);
lcd_pos(0x4c);
lcd_wdat(IRCOM[5]);
beep();
EX0 = 1;
}
復(fù)制代碼
作者:
你像風(fēng)兒來(lái)了
時(shí)間:
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ò)程
作者:
wal
時(shí)間:
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ù)雜的程序
作者:
17875511173
時(shí)間:
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為總中斷
作者:
zl2168
時(shí)間:
2017-4-29 21:38
定時(shí)器在溢出時(shí)中斷。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1