新聞中心

        PIC 定時(shí)器0中斷

        作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
        #include //調(diào)用頭文件,可以去PICC18軟件下去查找PIC18FXX2.H
        __CONFIG(1,XT) ; //晶振為外部4M
        __CONFIG(2,WDTDIS) ; //看門狗關(guān)閉
        __CONFIG(4,LVPDIS) ; //禁止低電壓編程
        #define uint unsigned int
        #define uchar unsigned char
        uint count=0;
        void timer0init(void)
        {
        T0CS=0; //TMR0工作于定時(shí)器方式
        PSA=1; //TMR0不分頻
        TMR0IF=0; //TMR0IF是中斷標(biāo)志,定時(shí)一段時(shí)間就會輸出1
        TMR0IE=1; //允許TMR0中斷
        T0CON=0x88; //16bit定時(shí)方式
        TMR0=0xff13;//晶振4M,定時(shí)250us(就是先在TMR0L和TMR0H中存入一定的數(shù),使
        計(jì)時(shí)時(shí)間為計(jì)數(shù)器中剩余的空間次數(shù)*執(zhí)行每次的時(shí)間)
        GIE=1; //
        }
        void interrupt ISR(void)
        {
        if(TMR0IF==1) //達(dá)到了250us
        {
        TMR0=0xff13; //重新裝入初值
        TMR0IF=0; //中斷標(biāo)志位清零,方便下一次中斷產(chǎn)生時(shí)
        判斷
        count++;
        if(count==4000)
        {
        count=0;
        }
        }
        }
        void delayms(uint x)
        {
        uint i,j;
        for(i=0;i<=110;i++)
        for(j=0;j<=x;j++);
        }
        void main(void)
        {
        ADCON1=0X06; //所有IO均為數(shù)字口,模擬量輸入禁止
        TRISD=0B11111110;
        timer0init();
        while(1)
        {
        if(count==0)
        {
        RD0=1;
        delayms(400);
        }
        else RD0=0;
        }
        }
        這個(gè)效果比較單一,只能顯示一閃一閃;但定時(shí)器中斷卻能夠用在數(shù)碼管動(dòng)態(tài)掃描中,如果不用定時(shí)器中斷,只用delayms()延時(shí)函數(shù)來讓數(shù)碼管閃是不可能實(shí)現(xiàn)的。必須用定時(shí)器中斷。


        關(guān)鍵詞: PIC定時(shí)器0中

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 贺州市| 中西区| 福清市| 封丘县| 定襄县| 宣威市| 措美县| 涞水县| 明水县| 奈曼旗| 乌拉特后旗| 镇巴县| 巴塘县| 临桂县| 始兴县| 香格里拉县| 灵武市| 遵义县| 新蔡县| 平顶山市| 雷山县| 桐乡市| 寻甸| 寿光市| 盐山县| 鹤峰县| 海林市| 乐业县| 巴马| 宝清县| 化州市| 陵川县| 阳江市| 剑阁县| 平安县| 温泉县| 台东县| 阿克| 房山区| 班玛县| 广南县|