⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beep.c

📁 用C8051F310的定时器来实现定时中断
💻 C
字号:
///////////////////////////////////////////
///////用定时器实现闪灯///////////////////
//////////////////////////////////////////
#include <c8051f310.h>
#define SYSCLK 24500000
#define std  256-8*(SYSCLK/120000)
sbit out=P0^0;
////////////////////////////
///////设定内部时钟////////
//////////////////////////
void internal_Crystal(void)
{OSCICN=0x83;  //内部振荡器启用,不分频最高频率
 CLKSEL=0x00;  //使用内部振荡器
 }
 /////////////////////
 ///////初始化定时器///
 //////////////////////
 void timer0_init(void)
 {
  CKCON=0x00;	   //使用系统时钟不分频
  //TMOD&=~0x0f;
  TMOD=0x02;	   //16位定时方式
  TL0= std;
  TH0=std;	 //定时250us
  ET0=1;
  TR0=0;
 }
 ////////////////////////////////
 ///////定时器中断函数///////////
 /////////////////////////////////
void timer0_isr(void) interrupt 1
{//static unsigned int count;
 unsigned char count1,count2;
 unsigned int count;
 bit flag;
 TF0=0;
 //TL0+=std;
 //TH0=std>>8;
 count++;
 if(count==4000)
 {count=0;
  if(flag==0)
  flag=~flag;
   
 }
 if(flag==0)
 {count1++;
  if(count1==3)
   {count1=0;
    out=~out;
	}
  }
 else 
  {count2++;
   if(count2==4)
    {count2=0;
	 out=~out;
	}
 }
}
void main(void)
{PCA0MD&=~0x40;	   //关闭看门狗
 internal_Crystal();
 //P2MDOUT=0xff;
 XBR1=0x40;		 //启用交叉
 timer0_init();
 TR0=1;
 EA=1;
 while(1);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -