娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月13日(星期三)

正在發生

2019年11月13日 | PIC16F684 對輸入脈沖進行計數和脈沖寬度測量

發布者:SerendipityLove 來源: 51hei關鍵字:PIC16F684  輸入脈沖  計數  脈沖寬度 手機看文章 掃描二維碼
隨時隨地手機看文章

使用cnnt 對脈沖計數,TMR1對上升沿計時,TMR2對下降沿計時,TMR1設定為100MS的定時器,TMR2 設定為40MS的定時器。        

脈沖周期 為50HZ到300HZ的變化,脈沖寬度為2MS到20MS的變化,檢測脈沖的個數以及寬度。        


按下RA0(UP)電機正轉,開始對RA2外部脈沖計數判斷寬度。cnnt=380時。停止電機轉動

按下RA5(DN)電機反轉,開始對RA2外部脈沖計數判斷寬度。cnnt==0時。 停止電機轉動 

程序里邊用了RA1對是否進入中斷進行判斷。目前程序檢測不到RA1的變化。是否我的設計架構方案不對。



#include


__CONFIG(0x3004);//(0X30C4);
#define T0_40MS 100    // 定義 TMR0 延時10MS 的時間常數 
#define T1_100MS 40536


#define        DN                        RA5        //Motor rise                 2        DN
#define        UP                        RA0        //Motor decline                13  UP
#define        MOTA                RC5        //Motor Forward                5
#define        MOTB                RC4        //Motor Reversal        6


bit rise;        //正反轉標志位
bit tmrl;        //正反轉標志位
bit tmrh;        //正反轉標志位


unsigned int num;  //脈沖總個數
unsigned int cnnt; //脈沖計數
unsigned int timerl; //TMR1脈沖上升沿時間
unsigned int timerh; //TMR1脈沖下降沿時間
unsigned int cnnt_timer;//TMR1脈沖總時間
unsigned int cnnt_tmr2;        //TMR2脈沖總時間


unsigned int signal_key();
unsigned int getkey() ;
void Delay_MS(unsigned int t);
void initial()
{
        TRISA=0x3D;//3D;RA2=1,
        TRISC=0X0E; 
        OPTION=0x87;//RA2內部中斷時源
        
        INTCON=0xF0;//外圍中斷允許
        CMCON0 = 0X07;
        ANSEL = 0; 


//        TMR0=T0_40MS;//啟動TMR0自帶振蕩器,分頻比為1:256


        T1CON=0X22;//2啟動TMR1自帶振蕩器,分頻比為1:4關閉TRM1ON=0;
        TMR1H=T1_100MS>>8;//0X80;         //設初值
        TMR1L==T1_100MS;//0X00;
        TMR1IE=1;         //TMR1中斷允許


        T2CON=0x63;  //TMR2 預分頻系數為1:16 ,后分頻系數為1:13,開始工作  關閉TRM2ON=0;
        PR2=239;   //TMR2的溢出值,當 TMR2 為此值+1時溢出 
        TMR2IE=1;         //TMR1中斷允許  50MS


        cnnt=0;
        cnnt_timer=0;
        num=10;
}
void Delay_MS(unsigned int t)
{
        unsigned int a,b; 
        for(a=t;a>0;a--) 
        for(b=110;b>0;b--);
}
void Forward()
{
        rise=1;
    MOTB=1;        
        MOTA=0;
        signal_key();
}
void Reversal()
{
        rise=0;
        MOTB=0;
        MOTA=1;
        signal_key();
}
void Stop()
{
        MOTA=0;
        MOTB=0;
}
unsigned int getkey() 



        if(!UP)
        {
                while(!UP)
                {
                        if(cnnt==num){Stop();break;}
                        Forward();
                }
        }        
        
        if(!DN)
        {
                while(!DN)
                {                
                        if(cnnt==0){Stop();break;}
                        Reversal();                        
                }
        }
        
        while(DN&&UP)
        {
                tmrh=0;
                tmrl=0;
                break;
        }
        
}
unsigned int signal_key()
{
//----------------------  信號下降沿檢測  --------------------------//
             while(!RA2)                                     //再次確認信號,沒有按下信號則退出 
        { 
                        tmrh=0;
                        if(tmrl) break;
                        tmrl=1;


                        RA1=0;
                        INTF=0;        
                        TMR1ON=0;
                        TMR2ON=1;
                        if(TMR2IF==1)//檢測是否50MS錯誤信號,停止運行
                        {
                                TMR2ON=0;
                                TMR2IF=0;
                                PR2=239;         //設初值
                                Stop(); //停止電機運行
                                return;
                        }
                                        
                }
//----------------------  信號上升沿檢測  --------------------------//
                while(RA2)
                {   
                        tmrl=0;                        
                        if(tmrh) break;
                        tmrh=1;


                        TMR2ON=0;
                        INTF=1;
                        
                        if(TMR1IF==1)//檢測是否100MS錯誤信號,停止運行
                        {
                                TMR1ON=0;
                                TMR1IF=0;
                                TMR1H=T1_100MS>>8;//0X80;         //設初值
                                TMR1L=T1_100MS;//0X00;
                                Stop(); //停止電機運行
                                return;
                        }
                        break;
                }
//----------------------   取出上升沿脈沖信號時間  --------------------------//
                if(TMR1ON==0)
                {
                        timerh=TMR1H;
                        timerl=TMR1L;
                        cnnt_timer = timerh<<8;
                        cnnt_timer += timerl;


                        TMR1IF=0;
                        TMR1H=T1_100MS>>8;//0X80;         //設初值
                        TMR1L=T1_100MS;//0X00;                
                }
//----------------------  取出下降沿脈沖信號時間  --------------------------//
                if(TMR2ON==0)
                {
                        cnnt_tmr2 = TMR2;


                        TMR2IF=0;
                        PR2=239;         //設初值        
                }


}


void interrupt ISR(void) 
{
        if(INTF==1)        //脈沖開始計數,同時開啟TMR1上升降計時
        {
                INTF=0;
                RA1=1;
                if(rise) cnnt++;
                else cnnt--;        
                TMR1ON=1;
        }


        if(        TMR1IF==1)
        {
                TMR1IF=0;
                TMR1H=T1_100MS>>8;//0X80;         //設初值
                TMR1L=T1_100MS;//0X00;
        }


        if(        TMR2IF==1)
        {
                TMR2IF=0;        
                PR2=239;         //設初值        
        }


}
void main()
{
        initial();
    while (1)
    {
                getkey();     
        }        
}

[1] [1]
關鍵字:PIC16F684  輸入脈沖  計數  脈沖寬度 引用地址:PIC16F684 對輸入脈沖進行計數和脈沖寬度測量

上一篇:pic單片機控制電機啟動、轉動、停止C語言程序
下一篇:超聲波PIC單片機C程序

推薦閱讀

據外媒報道,內燃機閥門致動器不僅移除了曲柄軸的實體連接,還實現了無限變量的獨立氣門正時(valve timing)功能。Camcon公司推出了最新款發動機技術創新——智能閥門致動器(Intelligent Valve Actuation,IVA)。工作原理該款非正統的(Unorthodox)配氣機構系統可分為氣動式、液壓式和電磁閥,Camcon方案使用“電動雙穩態致動器(bi-stable actuat...
(文章來源:金石興機器人學院) 在鑄造業中,很多產品加工出來需要進行表面打磨,過去都是人工操作,非常的費時費力,但是使用工業機器人來打磨就要簡單的多,而且速度是人工的好幾倍,當然使用工業機器人打磨的好處并不止這些,下面金石興機器人學院就一一為大家列舉出來。 工業機器人打磨主要用于衛浴行業、行業、汽車零部件、工業零件、醫療器械、...
今日,三星在上海發布了最新的5nm手機處理器Exynos 1080。Exynos 1080是繼蘋果A14、海思麒麟9000之后,第三款5nm手機處理器,也是第二款集成5G基帶的5nm SoC,是在CPU 和 GPU 架構方面率先采用Arm最新Cortex-A78 和 Mali-G78的手機處理器。在發布會上,三星電子系統LSI還宣布,Exynos 1080目前已量產,vivo將首發搭載Exynos 1080處理器的終端產...
11月12日報道(文/張軼群)日前,高通發布截至9月26日的2021財年Q4及全年財報,其中四季度營收93.36億美元創歷史新高,全年營收更是同比增長43%,暴增100億美元。多元化業務拓展帶來的客戶群體數量增加,疫情恢復后市場需求的提振,5G加速滲透普及,以及華為退出后帶來的OEM市場格局的變化和機遇,共同助推了高通的全年高成長表現。這可能是高通歷史上最高...

史海拾趣

問答坊 | AI 解惑

arm學習報告一二三 非常經典!!

網上廣為流傳的ARM學習資料, 作者功務深厚, 精神可佳, 是學習ARM開發的上好資料, 其中包括"ARM學習報告003——Bios源碼分析.pdf","BootLoader源代碼級分析第一部分-GNU之映象機理.pdf","ARM映象文件及執行機理.rar"三部分組成. ...…

查看全部問答∨

電子元件模特秀第三場

愛因迪生:咦,又上來一位和色環電阻長得很像的元件。是誰呢?不過她長得很碩壯。為了再次出錯,我還是先驗證一下是不是電阻再說。 愛因迪生拿了個萬用表在手上,來到舞臺上。 愛因迪生:千萬別告訴我你是什么元件。我要自己猜猜。來來來,讓我量 ...…

查看全部問答∨

三菱 西門子 歐姆龍 3種PLC的使用心得征集

為了使大家對使用中或者使用過的PLC能有個總結,特征集討論三菱、西門子、歐姆龍最常用的3種PLC的使用心得。我本人用過最多的是三菱的FX、FX1N、FX2N系列PLC,感覺編寫程序容易,初學上手快,組網簡單,故障率低。希望大家也說說自己的工程和維修心 ...…

查看全部問答∨

autocorrelation(自相關)function 應該怎么用呢?

各位前輩,我是才剛剛開始接觸DSP(digital sound processing)的學生,現在要用autocorrelation funtion 找出一個periodic signal 的周期,但是實在是不知道autocorrelation function 應該怎么用~~~比方說我得到一個sinusoidal signal(有噪音) ...…

查看全部問答∨

STM8關于LIN總線從節點接收不到報文頭的問題

在回答這個問題之前,麻煩大家能夠回答小弟的一個疑惑:一個控制器可以控制兩個LIN收發器嗎,也就是可以控制兩個LIN節點嗎? 如果可以,小弟現在有一個奇怪的問題: 基本情況: 從節點的地址是0x06,主節點發送一個報文頭,報文頭中的標識 ...…

查看全部問答∨

不會做啊!

一條C程序實現以下3種功能: 1、按一下LED全亮,再按一下半亮,按第三下LED滅; 2、按住3秒,LED閃爍(500ms關,100ms開),再按LED滅; 3、快速按3下,不斷循環:LED顯示方波為:開80ms,關500ms,(開50ms,關100ms,做5次),關500ms。   ...…

查看全部問答∨

ti mcu樣品好難買--MSP430G2333尋樣記

       經過了前期的反復討論,決定使用MSP430G2333這個MCU去做一個新的產品,主要是應用到觸摸,10位AD,另外因需要的IO口也比較多的原因,決定用32個腳的QFN,于是一大早,就興沖沖的跑到華強/賽格去找樣。在來之 ...…

查看全部問答∨

關于ISE的timing summary

Timing Summary: --------------- Speed Grade: -2    Minimum period: 7.205ns (Maximum Frequency: 138.793MHz)    Minimum input arrival time before clock: 6.429ns    Maximum output required time afte ...…

查看全部問答∨

關于MDK460!!!大師指點下啊。。。

今天將MDK423升級到了MDK460,發現原來在MDK423下編譯成功的工程,用MDK460打開編譯,會報N多錯誤,怎么解決啊???例如: ..\\lib\\stm32f10x_systick.c(50): error:  #20: identifier "SysTick" is undefined; ..\\lib\\stm32f ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 新宁县| 沙河市| 乐业县| 南江县| 鱼台县| 东兴市| 文山县| 绩溪县| 乳源| 名山县| 郯城县| 芜湖市| 久治县| 平凉市| 称多县| 莎车县| 翼城县| 日照市| 来安县| 神农架林区| 包头市| 定远县| 江山市| 姜堰市| 阜阳市| 亚东县| 双城市| 海原县| 永寿县| 临泽县| 县级市| 通山县| 平远县| 漳浦县| 天祝| 奎屯市| 盐边县| 京山县| 太原市| 灵宝市| 滕州市|