【蓝桥杯单片机组模块】14、STC15定时器2的PWM使用
微信搜索:ReCclay,也可免費閱讀博主藍橋系列所有文章,后臺回復“代碼”即可獲取藍橋所有備賽代碼!關注博主公眾號,還可擁有加入博主粉絲群實時溝通技術難題、免費下載CSDN資源等多項福利,還在等什么呢?快快掃碼關注,學習才不會迷路。
這里再向各位同學推薦一個CSDN博主 ReRrain 的藍橋備賽博客,博主秉持初學者思路,向你講述自己藍橋備賽的心路歷程,娓娓道來藍橋備賽經驗,個人覺得非常不錯,值得細細品讀。
文章目錄
- 一、前言
- 二、實戰代碼
導讀:《藍橋杯單片機組》專欄文章是博主2018年參加藍橋杯的單片機組比賽所做的學習筆記,在當年的比賽中,博主是獲得了省賽一等獎,國賽二等獎的成績。成績雖談不上最好,但至少問心無愧。如今2021年回頭再看該系列文章,仍然感觸頗多。為了能更好地幫助到單片機初學者,今年特地抽出時間對當年的文章邏輯和結構進行重構,以達到初學者快速上手的目的。需要指出的是,由于本人水平有限,如有錯誤還請讀者指出,非常感謝。那么,接下來讓我們一起開始愉快的學習吧。
不積跬步無以至千里,不積小流無以成江海。
一、前言
本節將通過一個簡單的樣例,實現定時器T2的PWM波產生。眾所周知,定時器T1通常用來周期性中斷操作,比如LED掃描、數碼管掃描、按鍵掃描等等。也就是說T1無法再生成PWM,學會使用定時器T2產生PWM波,對于比賽絕對是百利無一害!
二、實戰代碼
話不多說,直接上代碼!
#include <stc15.h>typedef unsigned char u8;void Timer2Init(void); void CloseFucker();void main() {EA = 1;CloseFucker();Timer2Init();while(1); }void CloseFucker() {P2 = (P2&0x1F) | 0xA0;P0 &= 0xAF;P2 = P2&0x1F; }void Timer2Init(void) //10微秒@11.0592MHz {AUXR |= 0x04; //定時器時鐘1T模式T2L = 0x91; //設置定時初值T2H = 0xFF; //設置定時初值AUXR |= 0x10; //定時器2開始計時IE2 |= (1<<2); //允許中斷 }void InterruptTimer2() interrupt 12 { static u8 PWMCnt = 0;PWMCnt++;if(PWMCnt >= 250){PWMCnt = 0;}if(PWMCnt <= 200){P2 = (P2&0x1F) | 0x80;P0 = 0xFE;P2 = P2&0x1F;}else{P2 = (P2&0x1F) | 0x80;P0 = 0xFF;P2 = P2&0x1F;} }尤其注意定時器T2的初始化過程,是直接對8位寄存器進行操作的,然后還有T2在15系列的中斷號 12。
小結:本篇文章主要介紹了單片機比賽中的一個重要操作技巧:使用定時器T2產生PWM波。該部分無論是對藍橋杯,還是對以后實際項目的攻關,都是大有裨益的!希望讀者可以借此機會好好研究一下,爭取能夠做到舉一反三!
希望大家多多支持我的原創文章。如有錯誤,請大家及時指正,非常感謝。
微信搜索:ReCclay,即可免費閱讀博主藍橋系列所有文章,后臺回復“代碼”即可獲取藍橋所有備賽代碼!關注博主公眾號,還可擁有加入博主粉絲群實時溝通技術難題、免費下載CSDN資源等多項福利,還在等什么呢?快快掃碼關注,學習才不會迷路。
總結
以上是生活随笔為你收集整理的【蓝桥杯单片机组模块】14、STC15定时器2的PWM使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dreamweaver郑州旅游网页设计制
- 下一篇: 频谱分析仪测量噪声系数方法介绍