STC89C52高级定时器简介
生活随笔
收集整理的這篇文章主要介紹了
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高级定时器简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Project2007操作手册(原创)
- 下一篇: 表单、表格常用属性大全