在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)計(jì)時(shí)秒表程序設(shè)計(jì)

            PIC單片機(jī)計(jì)時(shí)秒表程序設(shè)計(jì)

            作者: 時(shí)間:2012-12-11 來(lái)源:網(wǎng)絡(luò) 收藏

            //此程序?qū)崿F(xiàn)功能,00.00~99.99秒,分辨度:0.01秒

            #include "p18f458.h"

            unsigned char s[4]; //定義0.01 秒、0.1 秒、1秒、10秒計(jì)時(shí)器
            unsigned char k,data,sreg;
            unsigned int i;
            const table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
            //不帶小數(shù)點(diǎn)的顯示段碼表
            const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
            //帶小數(shù)點(diǎn)的顯示段碼表

            void clkint(void);

            //TMR0初始化子程序
            void tmint()
            {
            T0CON=0XCF; //設(shè)定TMR0L工作于8位定時(shí)器方式
            //內(nèi)部時(shí)鐘,TMR0不用分頻
            INTCON=0X20; //總中斷禁止,TMR0中斷允許,清除TMR0的中斷標(biāo)志
            INTCON2bits.TMR0IP=1; //TMR0中斷高優(yōu)先級(jí)
            RCONbits.IPEN=1; //使能中斷優(yōu)先級(jí)
            }

            //系統(tǒng)其它部分初始化子程序
            void initial()
            {
            TRISA=0x00; //A口設(shè)置為輸出
            TRISB=0XF0; //RB1輸出,RB4輸入
            TRISC=0x00; //SDO引腳為輸出,SCK引腳為輸出
            TRISE=0x00; //E口設(shè)置為輸出
            SSPCON1=0x30; //SSPEN=1;CKP=1,F(xiàn)OSC/4
            SSPSTAT=0xC0; //時(shí)鐘下降沿發(fā)送數(shù)據(jù)
            PIR1=0; //清除SSPIF標(biāo)志
            data=0X00; //待顯示的寄存器賦初值
            PORTBbits.RB1=0;
            PORTAbits.RA3=0;
            PORTE=0; //將K1,K2,K3,K4四條列線置0
            }

            //SPI傳輸數(shù)據(jù)子程序
            void SPILED(char data)
            {
            SSPBUF=data; //啟動(dòng)發(fā)送
            do
            {
            ;
            }while(PIR1bits.SSPIF==0);
            PIR1bits.SSPIF=0;
            }

            //顯示子程序,顯示4位數(shù)
            void dispaly()
            {
            PORTAbits.RA5=0; //準(zhǔn)備鎖存
            for(k=0;k4;k++)
            {
            data=s[k];
            if(k==2) data=table0[data]; //個(gè)位需要顯示小數(shù)點(diǎn)
            else data=table[data];
            SPILED(data); //發(fā)送顯示段碼
            }
            for(k=0;k4;k++)
            {
            data=0xFF;
            SPILED(data); //連續(xù)發(fā)送4個(gè)DARK,使顯示好看一些
            }
            PORTAbits.RA5=1; //最后給鎖存信號(hào),代表顯示任務(wù)完成
            }

            //軟件延時(shí)子程序
            void DELAY()
            {
            for(i = 3553; --i ;)
            continue;
            }

            //鍵掃描子程序
            void KEYSCAN()
            {
            while(1)
            {
            dispaly(); //調(diào)用一次顯示子程序
            while(PORTBbits.RB4==0)
            {
            DELAY(); //若有鍵按下,則軟件延時(shí)
            break;
            }
            if (PORTBbits.RB4==0) break; //若還有鍵按下,則終止循環(huán)掃描,返回
            }
            }

            //等鍵松開(kāi)子程序
            void keyrelax()
            {
            while(1)
            {
            dispaly(); //調(diào)用一次顯示子程序
            if (PORTBbits.RB4==1) break; //為防止按鍵過(guò)于靈敏,每次等鍵松開(kāi)才返回
            }
            }

            /*高優(yōu)先級(jí)中斷向量*/
            #pragma code InterruptVectorHigh=0x08
            void InterruptVectorHigh (void)
            {
            _asm
            goto clkint //跳到中斷程序
            _endasm
            }

            //中斷服務(wù)程序
            #pragma code
            #pragma interrupt clkint
            void clkint()
            {
            TMR0=0X13; //對(duì)TMR0寫入一個(gè)調(diào)整值。因?yàn)閷懭隩MR0后接著的
            //兩個(gè)周期不能增量,中斷需要3個(gè)周期的響應(yīng)時(shí)間,
            //以及C語(yǔ)言自動(dòng)進(jìn)行現(xiàn)場(chǎng)保護(hù)要消耗周期
            INTCONbits.T0IF=0; //清除中斷標(biāo)志
            sreg=sreg+1; //中斷計(jì)數(shù)器加1
            if(sreg==40) //中斷次數(shù)為40后,才對(duì)S0,S1,S2,S3 操作
            {
            sreg=0;
            s[0]=s[0]+1;
            if(s[0]==10)
            {
            s[0]=0 ;
            s[1]=s[1]+1;
            if(s[1]==10)
            {
            s[1]=0 ;
            s[2]=s[2]+1;
            if(s[2]==10)
            {
            s[2]=0;
            s[3]=s[3]+1;
            if(s[3]==10) s[3]=0;
            }
            }
            }
            }
            }

            51單片機(jī)相關(guān)文章:51單片機(jī)教程


            c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


            單片機(jī)相關(guān)文章:單片機(jī)教程


            單片機(jī)相關(guān)文章:單片機(jī)視頻教程


            單片機(jī)相關(guān)文章:單片機(jī)工作原理



            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉