單片機開發 --- 定時器中斷

單片機開發 — 定時器中斷

一、電路圖

在這裏插入圖片描述

二、電路原理

使用定時器0中斷,在定時器中斷的事件處理中使P20引腳取反,控制D1的LED燈開關。

三、代碼

#include "reg52.h"			 //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;	  //對數據類型進行聲明定義
typedef unsigned char u8;

sbit led=P2^0;	 //定義P20口是led


/*******************************************************************************
* 函 數 名         : Timer0Init
* 函數功能		   : 定時器0初始化
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Timer0Init()
{
	TMOD|=0X01;//選擇爲定時器0模式,工作方式1,僅用TR0打開啓動。

	TH0=0XFC;	//給定時器賦初值,定時1ms
	TL0=0X18;	
	ET0=1;//打開定時器0中斷允許
	EA=1;//打開總中斷
	TR0=1;//打開定時器			
}

/*******************************************************************************
* 函 數 名       : main
* 函數功能		 : 主函數
* 輸    入       : 無
* 輸    出    	 : 無
*******************************************************************************/
void main()
{	
	Timer0Init();  //定時器0初始化
	while(1);		
}

/*******************************************************************************
* 函 數 名         : void Timer0() interrupt 1
* 函數功能		   : 定時器0中斷函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Timer0() interrupt 1
{
	static u16 i;
	TH0=0XFC;	//給定時器賦初值,定時1ms
	TL0=0X18;
	i++;
	if(i==1000)
	{
		i=0;
		led=~led;	
	}	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章