找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2941|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

求大神解答調(diào)速原理,為什么中斷程序有自加??

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:134288 發(fā)表于 2016-7-30 21:42 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
# include "reg52.h"
# define uint unsigned int;
# define uchar unsigned uchar;
uint timer0,count,value,DIR;
sbit pwm0=P2^0;


void timer_0() interrupt 1
{
  TH0=0XFF;        //1us
  TL0=0XFF;
  timer0++;
  count++;

}


void timer0on()
{
  TMOD|=0X01;//設(shè)置定時器工作方式,
  TH0=0XFF;
  TL0=0XFF;
  EA=1;
  TR0=1;                  //打開內(nèi)部定時器
  ET0=1;                 //打開定時器t0
}


void main()
{

  timer0on();
  while(1)
  {   
                  if(count>200)
                     {
                            count=0;
                              if(DIR==1)
                                     {
                                          value++;
                                  }
                              if(DIR==0)
                                     {
                                          value--;
                                  }
                  
                   }
                   if(value==1000)
                           {
                           DIR=0;
                         }
          
                   if(value==0)
                           {
                           DIR=1;
                         }
          if(timer0>1000)         //定時1000us
              timer0=0;
          if(timer0<value)
                  pwm0=0;
           else
            pwm0=1;
  }
}


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

使用道具 舉報(bào)

沙發(fā)
ID:121156 發(fā)表于 2016-8-1 22:06 | 只看該作者
那樣時長才夠
回復(fù)

使用道具 舉報(bào)

板凳
ID:134288 發(fā)表于 2016-8-2 16:58 | 只看該作者

請問中斷被打開之后,不使用軟件關(guān)閉的話就會無限循環(huán)
回復(fù)

使用道具 舉報(bào)

地板
ID:121156 發(fā)表于 2016-8-2 17:05 | 只看該作者
也是蠻6的,為了定時200us愣是讓中斷響應(yīng)了200次,cpu啥都沒干,一直在響應(yīng)中斷了。。。。。
回復(fù)

使用道具 舉報(bào)

5#
ID:121156 發(fā)表于 2016-8-2 17:08 | 只看該作者
cpu一直在響應(yīng)定時器的中斷,并不是進(jìn)入了死循環(huán)
回復(fù)

使用道具 舉報(bào)

6#
ID:134288 發(fā)表于 2016-8-2 17:12 | 只看該作者
PK250 發(fā)表于 2016-8-2 17:08
cpu一直在響應(yīng)定時器的中斷,并不是進(jìn)入了死循環(huán)

那也就是說中斷程序只執(zhí)行一次
回復(fù)

使用道具 舉報(bào)

7#
ID:121156 發(fā)表于 2016-8-2 17:15 | 只看該作者
假設(shè)你的晶振是12M的,除以12分頻等于1M,那么你的機(jī)械周期就是1us,也就是說每個機(jī)械周期內(nèi)都有中斷標(biāo)志位溢出,cpu一直在忙著響應(yīng)中斷哪有時間跑代碼。。。。
回復(fù)

使用道具 舉報(bào)

8#
ID:121156 發(fā)表于 2016-8-2 17:16 | 只看該作者
夏日有余暉 發(fā)表于 2016-8-2 17:12
那也就是說中斷程序只執(zhí)行一次

不是,cpu一直在響應(yīng)中斷,沒時間處理其它代碼
回復(fù)

使用道具 舉報(bào)

9#
ID:121156 發(fā)表于 2016-8-2 17:22 | 只看該作者
假設(shè)你的晶振是12M的,那么你的機(jī)械周期就是1us,每一個機(jī)械周期都有中斷需要cpu去響應(yīng),你應(yīng)該把定時器的時間定長一點(diǎn)比如定到50或者100,200us都可以,就是不要定到1us
回復(fù)

使用道具 舉報(bào)

10#
ID:134288 發(fā)表于 2016-8-2 17:32 | 只看該作者
PK250 發(fā)表于 2016-8-2 17:22
假設(shè)你的晶振是12M的,那么你的機(jī)械周期就是1us,每一個機(jī)械周期都有中斷需要cpu去響應(yīng),你應(yīng)該把定時器的 ...

謝謝  懂了
回復(fù)

使用道具 舉報(bào)

11#
ID:136253 發(fā)表于 2016-8-8 09:23 | 只看該作者
你這個中斷處理程序類似于時間片的多時間軸,但是中斷間隔太短了,可以把定時器中斷的時間改到100us都是可以的。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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