新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機學習——獨立按鍵P1^0

        單片機學習——獨立按鍵P1^0

        作者: 時間:2016-11-23 來源:網絡 收藏
        題目:數碼管前三位顯示一個跑表,從000到999之間以0.01秒的速度運行,當按下一個獨立按鍵時,跑表停止,松開手后跑表繼續運行。(采用定時器中斷方式)

        解決方案:(C語言編程)

        本文引用地址:http://www.104case.com/article/201611/320183.htm

        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char
        uchar bai,shi,ge,num;
        uint shu;
        sbit s=P1^0;
        sbit le=P3^6;
        void delay(uint a);
        void dis();
        void display(uchar ba,uchar sh,uchar g);
        uchar code tabledu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
        0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc7,0xc0,0xff};
        uchar code tablewe[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
        void init()
        {
        shu=0;
        TMOD=0x11;
        TH0=0xd8;
        TL0=0xf0;
        EA=1;
        ET0=1;
        TR0=1;
        }
        void main()
        {
        init();
        while(1){
        if(s==0){
        delay(5);
        if(s==0){
        TR0=0;
        dis();
        }
        }
        else
        {
        TR0=1;
        dis();
        }
        }
        }
        void time0() interrupt 1
        {
        TH0=0xd8;
        TL0=0xf0;
        num++;
        shu++;
        if(shu==999)
        shu=0;
        bai=shu/100;
        shi=shu%100/10;
        ge=shu%10;
        }
        void display(uchar ba,uchar sh,uchar g)
        {
        le=1;
        P2=tablewe[1];
        le=0;
        le=1;
        P0=tabledu[ba];
        le=0;
        delay(5);
        le=1;
        P2=tablewe[2];
        le=0;
        le=1;
        P0=tabledu[sh];
        le=0;
        delay(5);
        le=1;
        P2=tablewe[3];
        le=0;
        le=1;
        P0=tabledu[g];
        le=0;
        delay(5);
        }
        void dis()
        {
        if(num%1==0)
        {
        display(bai,shi,ge);
        }
        if(num%10==0)
        {
        display(bai,shi,ge);
        }
        if(num==10)
        {
        num=0;
        display(bai,shi,ge);
        }
        }

        void delay(uint a) {
        uint i,j;
        for(j=a;j>0;j--)
        for(i=250;i>0;i--);
        }



        關鍵詞: 單片機獨立按

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 勐海县| 商洛市| 昭平县| 鄂尔多斯市| 井陉县| 洞口县| 淮北市| 博湖县| 盐源县| 怀远县| 耒阳市| 萨迦县| 隆林| 大悟县| 黑水县| 宜兰市| 寿阳县| 东山县| 方正县| 延庆县| 体育| 曲周县| 东平县| 铜陵市| 贵溪市| 婺源县| 右玉县| 绥阳县| 汝州市| 霞浦县| 从化市| 龙井市| 时尚| 洛阳市| 镇坪县| 会同县| 潞西市| 阿拉善右旗| 乡宁县| 中方县| 得荣县|