久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8517|回復: 1
打印 上一主題 下一主題
收起左側

51單片機定時/計數器使用方法

[復制鏈接]
跳轉到指定樓層
樓主
ID:103513 發表于 2016-1-17 04:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
定時/計數器的使用方法:
1、根據要求選擇方式,確定方式控制字,寫入方式控制寄存器TMOD。
2、根據要求計算定時/計數器的計數值,再由計數值求得初值,寫入初值寄存器TH0/TH1和TL0/TL1。
3、根據需要開放定時/計數器中斷(后面需要編寫中斷服務程序)。
4、設置定時/計數器控制寄存器TCON的值,啟動定時/計數器開始工作。
5、等待定時/計數器時間到,到則執行中斷服務程序;如用查詢處理則編寫查詢程序判斷溢出標志,溢出標志等于1,則進行相應處理。

/******************************************************************************************/
/*                                                                                                                                                                                  */
/*                采用定時/計數器設計的60分鐘倒計時程序,實現60分鐘倒計時。利用4位數碼管顯示分、秒。*/
/*        數碼管每秒更新一次,秒表由59倒計時到00,則分鐘減1。                                                                     */
/*                                                                                        */
/******************************************************************************************/


#include <REG51.h>
#define uint unsigned int
#define uchar unsigned char
#define LED P2 // 數碼管段選
// 數碼管位選
sbit WE1 = P0^0;
sbit WE2 = P0^1;
sbit WE3 = P0^2;
sbit WE4 = P0^3;


uint min = 59;
uint sec = 59;
uint i;


uchar num_table[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // 0~9十六進制代碼。


void display(); // 數碼管顯示程序
void delay(uint x); // 延時程序


void main() {
        TMOD = 0x01;// 使用方式1
        TH0 = 0xD8;// 初值寄存器高8位
        TL0 = 0xF0;// 初值寄存器低8位
        EA = 1;// 允許中斷請求總控制
        ET0 = 1;// 定時/計數器T0溢出中斷允許
        TR0 = 1;// 定時/計數器T0的啟動位
        i = 0;
        while (1)
        {
                 display();
        }
}


void time0_int(void) interrupt 1 {// 中斷服務程序
        TH0 = 0xD8;
        TL0 = 0xF0;
        i++;
        if (i == 100) {
                 sec--;
                i = 0;
                if (sec == 0) {
                        sec = 59;
                        min--;
                        if (min == 0) min = 59;
                }
        }
}


void display() {
        uint min_s = min/10;
        uint min_g = min%10;
        uint sec_s = sec/10;
        uint sec_g = sec%10;


        WE1 = 1;
        LED = num_table[min_s];
        delay(1);
        WE1 = 0;
        WE2 = 1;
        LED = ~(~num_table[min_g]|0x80); // 顯示時后添加一個小數點
        delay(1);
        WE2 = 0;
        WE3 = 1;
        LED = num_table[sec_s];
        delay(1);
        WE3 = 0;
        WE4 = 1;
        LED = num_table[sec_g];
        delay(1);
        WE4 = 0;
}


void delay(uint x) {
        uint i;
        while (x-- != 0)
        {
                for (i = 0; i < 300; i++);
        }
}



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

使用道具 舉報

沙發
ID:230250 發表于 2018-1-17 20:01 | 只看該作者
  TH0 = 0xD8;// 初值寄存器高8位         TL0 = 0xF0;// 初值寄存器低8位這段代碼中為什么 TH0 = 0xD8 , TL0 = 0xF0
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久精品国产 | 91欧美精品 | 免费激情| 成人在线观看免费视频 | 99久久免费精品视频 | 天堂视频免费 | 激情影院久久 | 欧美视频在线看 | 91视频正在播放 | 一区二区成人 | 久久com | 国产综合精品 | 99久久视频 | 久热精品在线观看视频 | 黄网站涩免费蜜桃网站 | 亚洲国产精品久久久 | 天天干视频 | 成人久久久 | 久久久久久av | 中文字幕 亚洲一区 | 精品一区二区三区91 | 亚洲视频在线看 | 亚洲一区不卡在线 | 黑人精品| 在线观看视频一区二区三区 | 97色伦网 | 毛片一区 | 亚洲精品乱码久久久久久蜜桃 | 97人人澡人人爽91综合色 | 日韩精品视频一区二区三区 | 在线国产视频观看 | 精品亚洲一区二区三区四区五区高 | 网页av| 国产日韩欧美激情 | 亚洲欧美日本国产 | 超碰91在线 | 欧美一级片 | 中文在线一区二区 | 在线亚洲精品 | 日韩一区二区三区在线 | 性色在线|