日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STC89C52单片机 定时器

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STC89C52单片机 定时器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
怎么去設置定時?

例如:
定時 50微秒

首先 50000 ÷ 1.085 = 46,082.94930875576 從 0 開始加 19,453 次會溢出 這樣的計算會有誤差,但是影響比較小可以忽略不計TH0 = (65535 - 46082) / 256; // 將商放在高八位TL0 = (65535 - 46082) % 256; // 將余數放在低八位或者 65535 - 46082 = 19453十六進制得到:4BFD二進制得到:0100 1011 1111 1101 將得到的十六進制分別放入 TH0 和 TL0;TH0 = 0x4b;TL0 = 0xfd; //定時50ms

定時器

定時器0工作模式1 16位定時模式,數碼管動態顯示0-10秒表。

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選//共陰數碼管段選表0-9 uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};/*==================================== 函數 : delay(uint z) 參數 :z 延時毫秒設定,取值范圍0-65535 返回值 :無 描述 :12T/Fosc11.0592M毫秒級延時 ====================================*/ void delay(uint z) {uint x,y;for(x = z; x > 0; x--)for(y = 114; y > 0 ; y--); } /*==================================== 函數 :display(uchar i) 參數 :i 顯示數值,取值范圍0-255 返回值 :無 描述 :三位共陰數碼管動態顯示 ====================================*/ void display(uchar i) {uchar bai, shi, ge;bai = i / 100; //236 / 100 = 2shi = i % 100 / 10; //236 % 100 / 10 = 3ge = i % 10;//236 % 10 =6//第一位數碼管 P0 = 0XFF;//清除斷碼WE = 1;//打開位選鎖存器P0 = 0XFE; //1111 1110WE = 0;//鎖存位選數據DU = 1;//打開段選鎖存器P0 = tabel[bai];//DU = 0;//鎖存段選數據delay(5);//第二位數碼管P0 = 0XFF;//清除斷碼WE = 1;//打開位選鎖存器P0 = 0XFD; //1111 1101WE = 0;//鎖存位選數據DU = 1;//打開段選鎖存器P0 = tabel[shi];//DU = 0;//鎖存段選數據delay(5);//第三位數碼管P0 = 0XFF;//清除斷碼WE = 1;//打開位選鎖存器P0 = 0XFB; //1111 1011WE = 0;//鎖存位選數據DU = 1;//打開段選鎖存器P0 = tabel[ge];//DU = 0;//鎖存段選數據delay(5); } //定時器0初始化 void timer0Init() {TR0 = 1; //啟動定時器0TMOD = 0X01; //定時器工作模式1,16位定時器計數模式TH0 = 0x4b;TL0 = 0xfd; //定時50ms/*怎么去定時?例如定時 50微秒首先 50000 ÷ 1.085 = 46,082.94930875576 從 0 開始加 19,453 次會溢出 這樣的計算會有誤差,但是影響比較小可以忽略不計TH0 = (65535 - 46082) / 256; // 將商放在高八位TL0 = (65535 - 46082) % 256; // 將余數放在低八位或者 65535 - 46082 = 19453十六進制得到:4BFD二進制得到:0100 1011 1111 1101 將得到的十六進制分別放入 TH0 和 TL0;TH0 = 0x4b;TL0 = 0xfd; //定時50ms*/ }void main(){//main函數自身會循環uchar mSec, Sec;//毫秒和秒儲存變量timer0Init();//定時器0初始化while(1){if(TF0 == 1)//判斷是否溢出{TF0 = 0;//軟件清零溢出標志位TH0 = 0x4b;TL0 = 0xfd; //定時50msmSec++;//50ms到if(mSec == 20){mSec = 0;Sec++;//1秒時間到} }display(Sec); //數碼管顯示函數if(Sec > 59)Sec = 0;//秒清零 } }

總結

以上是生活随笔為你收集整理的STC89C52单片机 定时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。