欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
我想問一下這個定時器0在什么時候中斷 新手求問!!!
[打印本頁]
作者:
wuli555
時間:
2017-4-27 16:52
標題:
我想問一下這個定時器0在什么時候中斷 新手求問!!!
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在什么時候中斷,以及中斷的時間并且引導碼那部分能幫我解答一下嗎
作者:
wuli555
時間:
2017-4-27 17:05
并且我在淘寶上看了一個單片機遙控器他給的資料只用外部中斷 ,各位能幫我解釋下他的原理嗎
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;
}
復制代碼
作者:
你像風兒來了
時間:
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++)
{;}
}
}
這個詳細介紹了這個過程
作者:
wal
時間:
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為總中斷
要詳細了解建議百度,網上中斷的教程很多,初學者不建議看很長很復雜的程序
作者:
17875511173
時間:
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為總中斷
作者:
zl2168
時間:
2017-4-29 21:38
定時器在溢出時中斷。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1