|
雖然沒有看到你的程序,不過我用一個同樣功能的程序,我加上了說明。
/*******************************************************************************
* 實(shí)驗(yàn)名 : 定時器實(shí)驗(yàn)
* 使用的IO :
* 實(shí)驗(yàn)效果 :LED每隔500ms左移一次
* 注意 :
*******************************************************************************/
#include<reg51.h>
#include<intrins.h>
#define GPIO_LED P2
void TimerConfiguration();
unsigned char Time;
/*******************************************************************************
* 函數(shù)名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void main(void)
{
Time=0;
GPIO_LED=0XFE;
TimerConfiguration();
while(1)
{
if(Time==10)//定時器每次定時50ms,10次,就是0.5s
{
GPIO_LED=_crol_(GPIO_LED,1);
Time=0;
}
}
}
/*******************************************************************************
* 函數(shù)名 : TimerConfiguration()
* 函數(shù)功能 : 配置定時器值
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void TimerConfiguration()
{
TMOD = 0x01; //選擇工作方式1
TH0 = 0x3C; //設(shè)置初始值,定時50MS
TL0 = 0xB0;
EA = 1; //打開總中斷
ET0 = 1; //打開定時器0中斷
TR0 = 1; //啟動定時器0
}
/*******************************************************************************
* 函數(shù)名 : Timer0()
* 函數(shù)功能 : 定時器0中斷函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void Timer0() interrupt 1
{
TH0 = 0x3C; //設(shè)置初始值
TL0 = 0xB0;
Time++;
}
如還有不清楚的,再交流。 |
|