? ? ? ? 題目解析:
? ? ? ? 讓發(fā)光二極管以1HZ閃爍,周期為頻率的倒數(shù),也就是發(fā)光二極管以1s為周期閃爍。閃0.5s,滅0.5s。
? ? ? ? 思路解析:
? ? ? ? 1、選擇一個發(fā)光二極管體現(xiàn)實驗現(xiàn)象。
? ? ? ? 2、要用到定時器,肯定要寫定時器初始化函數(shù)和中斷服務函數(shù),定時器初始化函數(shù)要配置相關(guān)寄存器和參數(shù),定時器中斷服務函數(shù)描述中斷具體執(zhí)行的任務。
? ? ? ? 定時器初始化函數(shù):
? ? ? ? 主要配置寄存器有:TCON、TMOD、高八位寄存器(定時器0:TH0;定時器1:TH1)、低八位寄存器(定時器0:TL0;定時器1:TL1)。TMOD不同的是TMOD寄存器不可位尋址,因此對TMOD的配置需要對這個8bit寄存器整體賦值。根據(jù)具體的情況對相應寄存器賦值即可,如選擇定時器0模并選擇工作方式1,TMOD寄存器就為0000 0001,所以對TMOD賦值為0x01。
? ? ?
? 中斷服務函數(shù):
????????1、如果TMOD工作模式未選擇自動重裝,則需要對TH0和TL0寄存器重新賦值。????????
????????2、進行計數(shù)變量的累加文章來源:http://www.zghlxwxcb.cn/news/detail-772220.html
? ? ? ? 3、執(zhí)行簡單的中斷任務文章來源地址http://www.zghlxwxcb.cn/news/detail-772220.html
完整代碼:
#include "reg52.h"
typedef unsigned int u16; //對系統(tǒng)默認數(shù)據(jù)類型進行重定義
typedef unsigned char u8;
//定義LED1管腳
sbit LED1=P2^0;
void time0_init(void)
{
TMOD|=0X01; //選擇為定時器0模式,工作方式1
TH0=(65535-50000)/256; //50ms定時20次
TL0=(65535-50000)%256;
ET0=1; //打開定時器0中斷允許
EA=1; //打開總中斷
TR0=1; //打開定時器
}
void main()
{
time0_init();//定時器0中斷配置
while(1)
{
}
}
void time0() interrupt 1 //定時器0中斷函數(shù)
{
static u16 i; //定義靜態(tài)變量i
TH0=(65535-50000)/256; //50ms定時20次
TL0=(65535-50000)%256;
i++;
if(i==10)
{
i=0;
LED1=!LED1;
}
}
?
到了這里,關(guān)于51單片機002:利用定時/計數(shù)器T0從P1^0輸出周期為1s的方波,讓發(fā)光二極管以1HZ閃爍,設晶振頻率為12MHZ的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!