找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2378|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)計(jì)數(shù)器源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:243751 發(fā)表于 2017-12-28 09:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是我上次實(shí)驗(yàn)做的計(jì)數(shù)器的源程序
能夠在單片機(jī)機(jī)上實(shí)現(xiàn)運(yùn)行的
希望大家多多指教
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char          //數(shù)據(jù)類型宏定義
#define uint unsigned int
#define out  P0                                  //IO端口定義
/*******共陽數(shù)碼管 0 ,  1  ,2  ,3 , 4  ,5  ,6 , 7,  8  ,9 ******/
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};

uint i = 0;         //全局變量
uint cnt=0;
/***********主函數(shù)*******************************************************/
void main(void)
{
        int j;

        TMOD=0x15;                          // 定時(shí)器0工作于計(jì)數(shù)方式,工作方式1,16位計(jì)數(shù)
                                            // 定時(shí)器1工作于定時(shí)方式,工作方式1,16位定時(shí)
        TH0=0;                                                                // 清零計(jì)數(shù)器
        TL0=0;
        TH1=0x4C;                                                        // 12M晶振工作下,定時(shí)50ms
        TL1=0x00;
        TR0=1;                                                                // 啟動(dòng)定時(shí)器0
        TR1=1;                                                                // 啟動(dòng)定時(shí)器1
        IE=0x88;                                                        // 打開定時(shí)中斷1和總中斷
        while(1)
        {                         
                P2=0x00;                                                  // 輸出百位
                out = seg[cnt/100];       
                P2 = 0x01;
                for(j=0;j<100;j++);

                P2=0x00;
                out = seg[cnt%100/10];                        // 輸出十位
                P2 = 0x02;         
                for(j=0;j<100;j++);          

                P2=0x00;                                               
                out = seg[cnt%10];                                 // 輸出個(gè)位
                P2 = 0x04;
                for(j=0;j<100;j++);
        }                  
}

/***********計(jì)數(shù)器T0中斷處理函數(shù)******************************************/
void Timer1_ISR() interrupt 3
{
        static char j = 0;
         i++;
        TH1=0x4C;                                                   // 重設(shè)定時(shí)器值,50ms @ 12MHz XTAL
        TL1=0x00;
        if(++j == 20)                                           // 50ms * 20 = 1S
        {                          
                j = 0;
                i = (TH0 << 8) | TL0;                   // 1S內(nèi)的計(jì)數(shù)值
                cnt=i;
                i=0;
                TH0 = 0;                                           // 清零計(jì)數(shù)
                TL0 = 0;         
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:274277 發(fā)表于 2018-1-10 14:26 | 只看該作者
那要接那個(gè)口
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表