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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

問flag如何判斷是第幾個負(fù)跳變,問題多多

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80909 發(fā)表于 2015-5-29 17:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
電機(jī)測速:INT0采用下降沿負(fù)跳變觸發(fā)方式,第一個負(fù)跳變T0開始計時另flag=0,第二個負(fù)跳變停止計時另flag=1,為一個周期的時間即轉(zhuǎn)一圈的時間,然后換算為r/min.為了使顯示清楚,用T1控制大約每隔0.3秒采集刷新顯示一次。
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#define DUAN XBYTE[0X8004]
#define WEI XBYTE[0x8002]
#define uchar unsigned char
#define uint  unsigned int
uchar tabledu[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar QIAN,BAI,SHI,GE,CNT,FLAG=0;//此處falg初值為0

unsigned long T,N;
void timer1(void) interrupt 3
{
TH1=0X3C;
TL1=0XB0;
CNT--;
if(CNT==0)
{
  CNT=3;
  EX0=1;
  IE0=0;
}
}
void int0(void) interrupt 0
{


if(FLAG==1)
{
  TR0=0;
  T=TH0*256+TL0;
  N=30000000/T;
  QIAN=N/1000;
  BAI=N%1000/100;
  SHI=N%1000%100/10;
  GE=N%1000%100%10;
  FLAG=0;
  EX0=0;
}
else
{
  TR0=1;
  TH0=0;
  TL0=0;
   FLAG=1;
}
}
void delay(uint t)
{
for(;t>0;t--);

}
main()
{
CNT=3;
TMOD=0X11;
EA=1;
ET1=1;
TH1=0X3C;
TL1=0XB0;
IT0=1;
TR1=1;
TF1=0;
for(;;)
{
  WEI=1;
  DUAN=tabledu[GE];
  delay(20);
  WEI=2;
  DUAN=tabledu[SHI];
  delay(20);
  WEI=4;
  DUAN=tabledu[BAI];
  delay(20);
  WEI=8;
  DUAN=tabledu[QIAN];
  delay(20);
}
}


問題,第一個負(fù)跳變來臨,INT0中斷,執(zhí)行else后面括號的程序,T0開始計時,怎么就i另flag=1了呢,或者第二個負(fù)跳變來臨flag怎么知道??應(yīng)該是第二個負(fù)跳變來臨,再執(zhí)行中斷程序,如何知道第二個負(fù)跳變來臨?不明白。想了半天了,氣死我了都。還有DUAN , WEI后為啥需要延時??
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:79908 發(fā)表于 2015-5-30 07:35 | 只看該作者
你定義一個全局變量來計算進(jìn)中斷函數(shù)次數(shù)試一試
回復(fù)

使用道具 舉報

板凳
ID:80909 發(fā)表于 2015-5-30 09:54 | 只看該作者
電子愛好者life 發(fā)表于 2015-5-30 07:35
你定義一個全局變量來計算進(jìn)中斷函數(shù)次數(shù)試一試

現(xiàn)在的問題就是,第一次負(fù)跳變中斷執(zhí)行,flag置0,第二次負(fù)跳變來了還要執(zhí)行中斷的,這個中斷程序里自己怎么識別?o(︶︿︶)o 唉我是門外漢,不懂啊。程序是別人編寫的運(yùn)行正確。
回復(fù)

使用道具 舉報

地板
ID:79908 發(fā)表于 2015-5-30 23:14 | 只看該作者
找妹子 發(fā)表于 2015-5-30 09:54
現(xiàn)在的問題就是,第一次負(fù)跳變中斷執(zhí)行,flag置0,第二次負(fù)跳變來了還要執(zhí)行中斷的,這個中斷程序里自己 ...

首先啟動定時中斷1,每200ms 檢測打開外部中斷,第一次進(jìn)入外部中斷執(zhí)行else里的內(nèi)容,并使flag=1;第二次進(jìn)入外部中斷執(zhí)行flag=1里的內(nèi)容,并關(guān)閉定時器和外部中斷,這樣就實現(xiàn)兩次進(jìn)入中斷后不再進(jìn)入外部中斷了。
回復(fù)

使用道具 舉報

5#
ID:80909 發(fā)表于 2015-5-31 12:19 | 只看該作者
電子愛好者life 發(fā)表于 2015-5-30 23:14
首先啟動定時中斷1,每200ms 檢測打開外部中斷,第一次進(jìn)入外部中斷執(zhí)行else里的內(nèi)容,并使flag=1;第二 ...

3克油!!
回復(fù)

使用道具 舉報

6#
ID:80909 發(fā)表于 2015-5-31 14:36 | 只看該作者
電子愛好者life 發(fā)表于 2015-5-30 23:14
首先啟動定時中斷1,每200ms 檢測打開外部中斷,第一次進(jìn)入外部中斷執(zhí)行else里的內(nèi)容,并使flag=1;第二 ...

謝謝,這個解釋我懂了這個程序。嗨喲 就是為啥DUAN、WEI分配后,必須有延時delay程序啊??
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久在线看 | 最新国产在线 | 97国产在线视频 | 欧美9999| 久久久久九九九女人毛片 | 久久综合狠狠综合久久综合88 | 欧美九九| 精品日韩一区 | 暴草美女 | 一区二区日韩精品 | 久久久久久久久久久一区二区 | 亚洲aⅴ| 欧美视频免费在线 | 91久久| 精品无码久久久久久国产 | 中文字幕在线观看 | 久久成人一区 | 国产精品久久久久久模特 | 午夜视频精品 | 国产乱码久久久久久 | 91免费观看国产 | 久久成人综合 | 日韩在线免费 | 国产精品欧美日韩 | av一区二区三区 | 九九伦理电影 | 亚洲国产成人av好男人在线观看 | 精品综合 | 99久久亚洲 | 国产精品视频一二三区 | 日韩在线欧美 | 玖玖综合网 | 草久久久| 欧美一区二区三区四区视频 | 精品国产高清一区二区三区 | 99久久精品国产一区二区三区 | 久久久久久亚洲国产精品 | av天天干| 久久国产精彩视频 | 青青草一区 | 欧美视频第二页 |