新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機頻率計設計 頻率輸入源STM32口

        AVR單片機頻率計設計 頻率輸入源STM32口

        作者: 時間:2016-11-30 來源:網絡 收藏

        uint i; //定時器1秒到時變量
        uint tt; //計數頻率
        uchar start=1; //定時器啟動變量

        void port_init()
        {
        PORTA=0xff;
        DDRA=0xff;
        PORTB=0xff;
        DDRB=0xff;
        PORTC=0xff;
        DDRC=0xff;
        PORTD=0xff;
        DDRD=0xff;
        }

        void delay(uint k)
        {
        while(k--);
        }



        void time0_init() //定時器0初始化
        {
        TCCR0=0x00; //關閉定時器
        TIMSK|=0x01; //定時器0溢出中斷
        TCNT0=0x83; //定時1ms
        SREG=0x80; //關閉總中斷
        }

        #pragma vector = 0x24 //定時器0中斷
        __interrupt void tim0_ovr()
        {
        i++;
        TCNT0=0x83;
        if(i==1000) //1秒時間到
        {
        i=0;
        TCCR1B=0x00; //停止計數
        TCCR0=0x00; //停止定時
        tt=TCNT1;//頻率值給變量
        TCNT1H=0x00;
        TCNT1L=0x00; //計數清零
        TCNT0=0x83; //定時器初值
        start=1; //開啟定時器啟動變量
        }
        }



        void time1_init()
        {
        TCCR1A=0x00;
        TCCR1B=0x00; //停止計數
        TCNT1H=0x00;
        TCNT1L=0x00;
        }

        void show(uint dat) //頻率值顯示
        {
        PORTA=seg[dat/1000];
        PORTC=tab[3];
        delay(100);
        PORTA=seg[dat%1000/100];
        PORTC=tab[2];
        delay(100);
        PORTA=seg[dat%100/10];
        PORTC=tab[1];
        delay(100);
        PORTA=seg[dat%10];
        PORTC=tab[0];
        delay(100);
        }

        void main()
        {
        port_init();
        time0_init();
        time1_init();
        while(1)
        {
        if(start==1)
        {
        TCCR0=0x03; //定時器開啟
        TCCR1B=0x06; //計數器開啟
        start=0; //保證定時1秒是否開啟變量
        }
        show(tt);
        }
        }

        //-------------------STM32代碼-------------------------

        #include
        #include "sys.h"
        #include "delay.h"
        #include "usart.h"
        #include "led.h"

        int main()
        {
        Stm32_Clock_Init(9);
        delay_init(72);
        led_init();
        while(1)
        {
        LED=1;
        delay_ms(2);
        LED=0;
        delay_ms(2);
        }
        }

        //--------------------------led.c--------------
        #include
        #include "led.h"

        void led_init(void)
        {
        RCC->APB2ENR|=1<<4; //使能PC時鐘
        GPIOC->CRH&=0xffffff0f;
        GPIOC->CRH|=0x00000030;
        GPIOC->ODR|=1<<9;
        }

        //----------------------led.h-------------------------
        #ifndef led_h
        #define led_h
        #include "sys.h"

        #define LED PCout(9)

        void led_init(void);
        #endif


        上一頁 1 2 下一頁

        關鍵詞: AVR單片機頻率計STM3

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昔阳县| 夏邑县| 如东县| 山阳县| 明水县| 忻州市| 安西县| 嘉定区| 元氏县| 许昌市| 宕昌县| 莱西市| 乌恰县| 林口县| 临朐县| 内乡县| 公安县| 留坝县| 丘北县| 同心县| 应用必备| 黑山县| 汉源县| 曲靖市| 盐边县| 璧山县| 长垣县| 通辽市| 会宁县| 历史| 石棉县| 雅安市| 定远县| 类乌齐县| 卫辉市| 宣城市| 井研县| 曲沃县| 景德镇市| 宝兴县| 延安市|