欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5603|回復: 5
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:80909 發(fā)表于 2015-5-29 17:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
電機測速:INT0采用下降沿負跳變觸發(fā)方式,第一個負跳變T0開始計時另flag=0,第二個負跳變停止計時另flag=1,為一個周期的時間即轉一圈的時間,然后換算為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);
}
}


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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

3克油!!
回復

使用道具 舉報

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

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

使用道具 舉報

7#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表