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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MCS-51系列單片機C語言編程定時/計數器程序模板

[復制鏈接]
跳轉到指定樓層
樓主
ID:76190 發表于 2015-4-5 17:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*********************************************************************************************
函數名:定時/計數器初始化函數
調  用:T_C_init();
參  數:無
返回值:無
結  果:設置SFR中T/C1和(或)T/C0相關參數
備  注:本函數控制T/C1和T/C0,不需要使用的部分可用//屏蔽
/**********************************************************************************************/
void T_C_init (void){
TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
EA = 1; //中斷總開關
TH1 = 0xFF; //16位計數寄存器T1高8位(寫入初值)
TL1 = 0xFF; //16位計數寄存器T1低8位
ET1 = 1; //T/C1中斷開關
TR1 = 1; //T/C1啟動開關
//TH0 = 0x3C; //16位計數寄存器T0高8位
//TL0 = 0xB0; //16位計數寄存器T0低8位(0x3CB0 = 50mS延時)
//ET0 = 1; //T/C0中斷開關
//TR0 = 1; //T/C0啟動開關
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:定時/計數器1中斷處理函數
調  用:[T/C1溢出后中斷處理]
參  數:無
返回值:無
結  果:重新寫入16位計數寄存器初始值,處理用戶程序
備  注:必須允許中斷并啟動T/C本函數方可有效,重新寫入初值需和T_C_init函數一致
/**********************************************************************************************/
void T_C1 (void) interrupt 3  using 3{ //切換寄存器組到3
TH1 = 0x3C; //16位計數寄存器T1高8位(重新寫入初值)
TL1 = 0xB0; //16位計數寄存器T1低8位(0x3CB0 = 50mS延時)

//函數內容
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:定時/計數器0中斷處理函數
調  用:[T/C0溢出后中斷處理]
參  數:無
返回值:無
結  果:重新寫入16位計數寄存器初始值,處理用戶程序
備  注:必須允許中斷并啟動T/C本函數方可有效,重新寫入初值需和T_C_init函數一致
/**********************************************************************************************/
void T_C0 (void) interrupt 1  using 1{ //切換寄存器組到1
TH0 = 0x3C; //16位計數寄存器T0高8位(重新寫入初值)
TL0 = 0xB0; //16位計數寄存器T0低8位(0x3CB0 = 50mS延時)

//函數內容
}
/**********************************************************************************************/
/*********************************************************************************************
程序名:    定時計數器中斷處理程序
硬件支持:  STC12C2052AD 12MHz
接口說明:  P1接口8個LED燈  
/*********************************************************************************************
說明:本程序可使單片機P1.0、P1.1接口上的LED燈分別以定時器T0和T1的各自周期閃爍。
P1.0 由 T0 控制
P1.1 由 T1 控制
/*********************************************************************************************/
#include <REG51.h> //通用89C51頭文件
sbit LED1 = P1 ^ 0; //定義閃爍LED
sbit LED2 = P1 ^ 1; //定義閃爍LED
/*********************************************************************************************
函數名:定時/計數器初始化函數
調  用:T_C_init();
參  數:無
返回值:無
結  果:設置SFR中T/C1和(或)T/C0相關參數
備  注:本函數控制T/C1和T/C0,不需要使用的部分可用//屏蔽
/**********************************************************************************************/
void T_C_init (void){
TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
EA = 1; //中斷總開關
TH1 = 0xFE; //16位計數寄存器T1高8位(寫入初值)
TL1 = 0xFE; //16位計數寄存器T1低8位
ET1 = 1; //T/C1中斷開關
TR1 = 1; //T/C1啟動開關
TH0 = 0x13; //16位計數寄存器T0高8位
TL0 = 0x13; //16位計數寄存器T0低8位(0x3CB0 = 50mS延時)
ET0 = 1; //T/C0中斷開關
TR0 = 1; //T/C0啟動開關
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:定時/計數器1中斷處理函數
調  用:[T/C1溢出后中斷處理]
參  數:無
返回值:無
結  果:重新寫入16位計數寄存器初始值,處理用戶程序
備  注:必須允許中斷并啟動T/C本函數方可有效,重新寫入初值需和T_C_init函數一致
/**********************************************************************************************/
void T_C1 (void) interrupt 3  using 3{ //切換寄存器組到3
TH1 = 0xFE; //16位計數寄存器T1高8位(重新寫入初值)
TL1 = 0xFE; //16位計數寄存器T1低8位

LED2 = ~LED2;  //取LED相反狀態
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:定時/計數器0中斷處理函數
調  用:[T/C0溢出后中斷處理]
參  數:無
返回值:無
結  果:重新寫入16位計數寄存器初始值,處理用戶程序
備  注:必須允許中斷并啟動T/C本函數方可有效,重新寫入初值需和T_C_init函數一致
/**********************************************************************************************/
void T_C0 (void) interrupt 1  using 1{ //切換寄存器組到1
TH0 = 0x13; //16位計數寄存器T0高8位(重新寫入初值)
TL0 = 0x13; //16位計數寄存器T0低8位

LED1 = ~LED1;  //取LED相反狀態
}
/**********************************************************************************************/
/*********************************************************************************************/
void main (void){ //主程序
T_C_init(); //初始化
while(1){
}
}
/*********************************************************************************************/
1. 定時/計數器程序應考慮系統時鐘頻率,本實驗以12.000MHz晶體為例。
2. 定時/計數器程序需要考慮機械周期,STC系列1T單片機在默認設置時與12T單片機性能兼容。
3. 定時/計數器程序在中斷處理時將不暫時關閉其他中斷。
[SFR中與定時/計數器工作方式有關的設計]
-----------------------------------------------------------------------------
M1   M0   方式    說明
0       0        0           13位T/C,由TL低5位和TH的8位組成13位計數器
0       1        1           16位T/C,TL和TH共16位計數器
1       0        2            8位T/C,TL用于計數,當TL溢出時將TH中的值自動寫入TL
1       1        3            兩組8位T/C
-----------------------------------------------------------------------------
可將其模板下載到本地硬盤,在編寫新程序的時候復制、粘貼到工程當中,然后根據情況寫入具體內容。

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

使用道具 舉報

沙發
ID:197229 發表于 2021-4-6 21:55 | 只看該作者
好!獨具匠心。授人以魚不如授人以漁,謝了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线一区二区三区 | 一区二区三区电影在线观看 | 天天草天天射 | 中文字幕电影在线观看 | 国产成人在线播放 | 欧美中文字幕一区二区三区亚洲 | 国产精品欧美一区二区三区不卡 | av中文在线| 欧美日韩网站 | 免费在线观看一区二区 | 你懂的av| 国产精品久久777777 | 一区二区福利视频 | 久久久久久久久久久久久久国产 | 国产一区二区三区www | 四色成人av永久网址 | 欧美一区二区三区四区在线 | 日韩精品一区二区三区中文字幕 | 久久9热| 91精品国产综合久久小仙女图片 | 国产精品自产av一区二区三区 | 色播av | 一级黄色播放 | 九九免费观看视频 | 日韩在线观看一区 | 亚洲第一在线视频 | 日韩在线视频一区二区三区 | h片在线观看免费 | 国产综合精品一区二区三区 | 玖玖精品视频 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | h视频在线观看免费 | 精品美女久久久 | 玖玖玖在线观看 | 国产亚洲一区二区三区 | 欧美日韩免费一区二区三区 | 亚洲福利 | 81精品国产乱码久久久久久 | 日韩成人在线播放 | 久久久久亚洲精品 | 久久久久久国产精品免费 |