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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5305|回復(fù): 3
收起左側(cè)

[求助]定時器1工作在模式1,計(jì)時不中斷,定時器0也工作在模式1,100微秒定時中斷,外部中斷INT1下降沿觸發(fā),為何不能同時工作嗎?

[復(fù)制鏈接]
ID:23515 發(fā)表于 2013-4-21 15:43 | 顯示全部樓層 |閱讀模式

定時器1工作在模式1,計(jì)時不中斷,INT1下降沿中斷,實(shí)驗(yàn)證明運(yùn)行正常。

初始化及中斷代碼如下:

void initime()
{
TMOD=0x10;
EA=1;
IT1=1;
EX1=1;
TH1=0;TL1=0;
TR1=1;

}

//=====================================================
void Time1() interrupt 2 //外部中斷解碼程序
{
 Tc=TH1*256+TL1;   //提取中斷時間間隔時長
 TH1=0; TL1=0;         //定時中斷重新置零
 if(Imin<Tc&&Tc<Imax){m=0; f=1; return;} //找到啟始碼
 if(f){
   if(Inum1<Tc&&Tc<Inum3){Im[m/8]=Im[m/8]>>1|0x80; m++;}//取1碼
   if(Inum2<Tc&&Tc<Inum1){Im[m/8]=Im[m/8]>>1; m++;}//取0碼
   if(m==32){m=0;f=0;
   if((Im[2]==~Im[3])&&(Im[0]==~Im[1]))
   {IrOK=1;laba=0;delay(1000);laba=1;}//取碼完成后判斷讀碼是否正確
   else IrOK=0;}
   }
}

定時器0工作在模式1,100微秒定時中斷,實(shí)驗(yàn)證明運(yùn)行正常。

初始化及中斷代碼如下:

//===================================
void Timer0_Init()  //定時0.1ms(100um),
{
 TMOD=0x01;
 IE=0x82;
 TH0=0xff;//65436/256;11.0592晶振
 TL0=0x9c;//65436%256
 TR0=1;
}
//======================================
void Time0() interrupt 1 //中斷程序
{
TH0=0xff;
TL0=0x9c;
 
if(m1>jd1) pwm1=1;
else pwm1=0;

if(m2>jd2) pwm2=1;
else pwm2=0;
 
if(m3>jd3) pwm3=1;
else pwm3=0;
 
m1++; m1%=m;
m2++; m2%=m;
m3++; m3%=m;
// 根據(jù)io口及pwm需要情況可加m3,jd3,m4,jd4,m5,jd5……
}

 

現(xiàn)在我想實(shí)現(xiàn)用紅外遙控調(diào)節(jié)三路LED亮度(定時器1工作在模式1,計(jì)時不中斷,定時器0也工作在模式1,100微秒定時中斷,INT1下降沿中斷,)為啥不能同時工作呢?求指點(diǎn)。搞了幾天了,找不到原因。

初始化及中斷代碼如下:

//========================
void initime()
{
TMOD=0x11;
EA=1;
IT1=1;
EX1=1;
TH1=0;TL1=0;
TR1=1;

TR0=1;
IE=0x82;
TH0=0xff;//65436/256;11.0592晶振
TL0=0x9c;//65436%256
}

//======================================
void Time0() interrupt 1 //中斷程序
{
TH0=0xff;
TL0=0x9c;
 
if(m1>jd1) pwm1=1;
else pwm1=0;

if(m2>jd2) pwm2=1;
else pwm2=0;
 
if(m3>jd3) pwm3=1;
else pwm3=0;
 
m1++; m1%=m;
m2++; m2%=m;
m3++; m3%=m;
// 根據(jù)io口及pwm需要情況可加m3,jd3,m4,jd4,m5,jd5……
}

//=====================================================
void Time1() interrupt 2 //外部中斷解碼程序
{
 Tc=TH1*256+TL1;   //提取中斷時間間隔時長
 TH1=0; TL1=0;         //定時中斷重新置零
 if(Imin<Tc&&Tc<Imax){m=0; f=1; return;} //找到啟始碼
 if(f){
   if(Inum1<Tc&&Tc<Inum3){Im[m/8]=Im[m/8]>>1|0x80; m++;}//取1碼
   if(Inum2<Tc&&Tc<Inum1){Im[m/8]=Im[m/8]>>1; m++;}//取0碼
   if(m==32){m=0;f=0;
   if((Im[2]==~Im[3])&&(Im[0]==~Im[1]))
   {IrOK=1;laba=0;delay(1000);laba=1;}//取碼完成后判斷讀碼是否正確
   else IrOK=0;}
   }
}

[此貼子已經(jīng)被作者于2013-4-21 15:53:42編輯過]
回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2013-4-21 16:33 | 顯示全部樓層
100us的定時中斷有點(diǎn)短了(多則是幾行少則一行或幾行指令就超過了)。外部中斷還沒處理完或定時器自己中斷沒處理完,就又中斷了。中斷優(yōu)先權(quán)要設(shè)置好。幾個中斷源的中斷信號丟失都會發(fā)生,所以不容易弄。
[此貼子已經(jīng)被作者于2013-4-21 16:34:50編輯過]
回復(fù)

使用道具 舉報

ID:23515 發(fā)表于 2013-4-21 19:23 | 顯示全部樓層
我用11.0592晶體,在keil4上模擬,執(zhí)行完需要66.28微秒,默認(rèn)的優(yōu)先級 定時器0中斷 是高于  外部中斷INT1的,用該不是中斷被打斷的問題吧,另外,我開始也靠路過你說的情況,把定時器0中斷 里只留兩條賦值語句也是不對的,我覺得問題還是初始化函數(shù)里有錯誤,但是我一直沒有找到原因。
回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2013-4-22 13:21 | 顯示全部樓層

void Time1() interrupt 2 //外部中斷解碼程序
上面一行的紅字部分要對應(yīng)!

 

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线精品一区二区三区 | 国产一区二区三区久久久久久久久 | 91麻豆精品国产91久久久久久久久 | 亚洲h在线观看 | 国产亚洲精品综合一区 | 黄色免费在线观看网址 | 日日摸夜夜添夜夜添特色大片 | 大乳boobs巨大吃奶挤奶 | 久久久久久久av麻豆果冻 | 日韩毛片免费看 | 激情欧美日韩一区二区 | 欧美中文在线 | 免费成人高清在线视频 | 九九热精品视频 | 另类视频区 | 美国十次成人欧美色导视频 | 精品一区精品二区 | 欧美精品一区二区免费视频 | 99久久国产综合精品麻豆 | 蜜桃毛片 | 日批日韩在线观看 | 国产精品成人一区二区三区 | 日韩电影中文字幕 | 亚洲国产一区二区三区四区 | 国产精品久久久久久妇女6080 | 亚洲国产成人精品久久久国产成人一区 | 精品在线免费观看视频 | 中文字幕av一区二区三区 | 在线免费观看日本视频 | 亚洲美女一区二区三区 | 理论片免费在线观看 | 一级毛片免费视频观看 | 亚洲日日夜夜 | 91丨九色丨国产在线 | 日韩欧美在线不卡 | caoporn国产精品免费公开 | 亚洲 自拍 另类 欧美 丝袜 | 亚洲精品乱码久久久久久蜜桃 | 91久久看片| 国产精品久久久久久妇女 | 福利视频网站 |