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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STC89C52高级定时器简介

發布時間:2024/1/1 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STC89C52高级定时器简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • STC89C52高級定時器簡介
      • 一、序言
      • 二、定時器2的工作模式
        • 1、16位自動重裝載模式
        • 2、獨立波特率發生器模式
          • <>測試代碼<>

STC89C52高級定時器簡介

一、序言

這里我就不對定時器做基本介紹了,這次主要講一講51的高級定時器——定時器2

二、定時器2的工作模式

1、16位自動重裝載模式

看圖說話:

由這張圖可以寫出代碼

void Timer2_Initial(void) {C_T2 = 0;//設置為定時器模式TR2 = 1;//開啟定時器2TH2 = RCAP2H = (65535 - 18432) / 256;//設置20ms定時TL2 = RCAP2L = (65535 - 18432) % 256;ET2 = 1;//開啟定時器2中斷EA = 1;//開啟總中斷 }

一定要注意定時器2的中斷溢出標志位需要軟件清0,中斷優先級為5

void T2_ISR(void) interrupt 5 {static unsigned int cnt = 0;cnt++;TF2 = 0;//軟件清0if (cnt == 50)//1s中斷到達{cnt = 0;LED= ~LED;} }

2、獨立波特率發生器模式

看圖說話:

該圖顯示,在使用定時器的波特率發生模式時,還可以同時打開定時器2的外部中斷。

根據波特率配置公式:

從左往右看圖配置代碼為:

C_T2 = 0;//設置為定時器模式 TR2 = 1;//打開定時器2 RCAP2H = TH2 = (65536 - (11059200 / 32 / 9600)) / 256;//設置波特率為9600 RCAP2L = TL2 = (65536 - (11059200 / 32 / 9600)) % 256; RCLK = 1;//定時器2的溢出脈沖作為RX的時鐘 TCLK = 1;//定時器2的溢出脈沖作為TX的時鐘

上面是串口通信的波特率發生器方面的配置,除此之外還需要配置串口的模式寄存器(這里不做介紹串口的相關知識)

SCON = 0x50;//8bit variable UART

這樣就完成了該種模式的配置。

<>測試代碼<>
void Serial_Initial(void) {SCON = 0x50;C_T2 = 0;//設置為定時器模式TR2 = 1;//打開定時器2RCAP2H = TH2 = (65536 - (11059200 / 32 / 9600)) / 256;//設置波特率為9600RCAP2L = TL2 = (65536 - (11059200 / 32 / 9600)) % 256;RCLK = 1;//定時器2的溢出脈沖作為RX的時鐘TCLK = 1;//定時器2的溢出脈沖作為TX的時鐘ES = 1;//打開串口中斷EA = 1;//開啟總中斷 }char putchar(char ch)//51串口重定義,需要添加"stdio.h"頭文件 {SBUF = ch;delay(1);//稍作延時,防止數據發錯return ch; }void delay(int ms)//ms延時 {int x,y;for (x = ms; x > 0; x--)for (y = 114; y > 0; y--); }void Serial_ISR(void) interrupt 4 {unsigned char temp;if (RI){RI = 0;temp = SBUF;SBUF = temp;}if (TI){TI = 0;} }

其實定時器2還有一個輸入捕獲模式,博主還在測試,先把這些發上,因為之后可能要去調車了😂。

總結

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

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