|
本帖最后由 KeepYn 于 2021-6-20 18:54 編輯
配置定時器0的定時模式,控制點亮LED燈閃爍
實現現象為開發板上的紅藍綠LED燈交替閃爍
以下代碼經過實際驗證
艾克姆科技STC15W4K64的一塊系統開發板
話不多說,直接上代碼(模塊化)
主函數代碼如下
#include "timer.h"
void main()
{
unsigned char time = 0; //定義計數次數的數據類型
P0M0 = 0; P0M1 =1; //配置P0為準雙向模式
Timer0_Init(); //調用初始化函數,初始化定時器0
while(1)
{
if(TF0 == 1) //T0溢出標志位,溢出后硬件置 1 (檢測定時器是否溢出)
{
TF0 = 0; //軟件查詢,軟件清 0
time++; //記錄溢出的次數
if(time == 30) //0.3s
{ LED1 = 1;
LED2 = 1;
LED0 = 0;
}
if(time == 60) //0.6s
{ LED0 = 1;
LED2 = 0;
}
if(time == 90) //0.9s
{ LED2 = 1;
LED1 = 0;
time = 0;
}
}
}
}
有關定時器的點C代碼如下
#include "timer.h"
void Timer0_Init(void) //溢出定時的時間為10ms
{
TMOD = 0X00; //工作模式寄存器,設置為啟動禁止僅由TR0控制,設置為定時模式,工作模式設置為模式0
TH0 = 0XDC; //給加法計數器附初值 0XDC(65536-9213)/256
TL0 = 0X00; // (65536-9213)%256
TR0 = 1; //TR0 T0的運行控制位,等于1開始計數
}
```
定時器點H代碼如下
#ifndef __TIMER_H__
#define __TIMER_H__
#include <STC15W.h> //15單片機頭文件
sbit LED0 = P0^5; //LED燈的位定義(藍)
sbit LED1 = P0^6; // 綠
sbit LED2 = P0^7; // 紅
void Timer0_Init(void);
#endif
以下是驗證圖展示
|
評分
-
查看全部評分
|