新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機1秒定時C語言程序(通過調試)

        51單片機1秒定時C語言程序(通過調試)

        作者: 時間:2016-11-17 來源:網絡 收藏
        #include // 晶振為12MHz,

        #include
        #include
        #include

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

        /***************************
        * 定義硬件引腳連接
        ****************************/
        sbit p1_0=P1^0;
        /*************************
        * 定義全局變量
        ***********************/
        // Byte data intrCounter; // 計時器中斷次數
        // Byte data beginNum; // 開始倒計時的時間
        //Byte data counterBack; // 將中斷次數放在里面以備后用
        unsigned char intrCounter;
        unsigned char beginNum;
        unsigned char counterBack;
        void IT0_Init(void);
        void Timer0_Overflow();
        void GetCounter(void);
        void main()
        {
        p1_0=1;
        GetCounter() ;每一秒改變一次;
        p1_0=!p1_0;;
        }
        /*********************************
        * GetCounter
        *
        * Description: 取得預先設置的倒計時時間
        *******************************/
        void GetCounter(void)
        {
        //beginNum=1;//在所有開關都沒有撥動的時候倒計時為1秒,比設置為0秒要好
        intrCounter=20;//每一秒對應的中斷次數為20次
        }
        /*****************************
        * IT0_Init
        * Description: 初始化計時器T0的狀態
        ********************************/
        void IT0_Init(void)
        {
        TMOD=0x01;//設置T0在方式1下工作
        TH0=0x3C;
        TL0=0xAF;//這兩個寄存器存的是計數器的計數開始的值,計算發現這兩個值累加至溢出后正好是50ms
        ET0=1;//使T0中斷可以溢出
        EA=1;//開啟總中斷
        TF0=0;//溢出位清零
        TR0=1;//開啟T0
        }

        /******************************
        * Timer0_Overflow() interrupt 1
        * Description: 中斷溢出服務程序, 采用的是中斷方式1, 后面最好不加using選擇寄存器組以免與系統用在主程序的寄存器沖突

        *********************************/
        void Timer0_Overflow() interrupt 1
        {
        static unsigned char second=20;//用20次中斷來判斷1秒
        TH0=0x3C;
        TL0=0xAF;
        second--;
        intrCounter--;

        if (second==0)//每隔一秒的操作
        {

        second=20;//重新賦值每秒計數器
        }
        if (intrCounter==0)
        {
        TR0=0;//關閉T0計數器
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 连州市| 凤凰县| 枣庄市| 鹰潭市| 潜江市| 江川县| 当雄县| 齐河县| 阜新市| 昌宁县| 交城县| 普安县| 阳城县| 佛山市| 大厂| 峨山| 山西省| 奉化市| 山丹县| 洞头县| 额尔古纳市| 江永县| 时尚| 临洮县| 日喀则市| 永靖县| 沾益县| 阜阳市| 阿瓦提县| 乌鲁木齐县| 苍山县| 酒泉市| 无极县| 乐业县| 松溪县| 棋牌| 东海县| 惠州市| 仁布县| 黑河市| 滨海县|