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

📄 timer_fangbo_c.c

📁 电子开发网培训用的51单片机内部培训代码
💻 C
字号:
//****************************************************
//实现功能:单片机的晶振为12MHz,使用定时/计数器0编写
//			一个产生2KHz的方波程序,并在P1.0输出
//目标板  :至强51开发板
//开发商  :电子开发网www.dzkf.com (专业提供开发方案,
//          电子元器件网上订购,单片机培训服务)
//对开发板有什么疑问,请上我们的论坛bbs.dzkf.com探讨
//****************************************************
#include <reg51.h>
//*****************宏定义*****************************
sbit p_out=P1^0;//宏定义P1.0为p_out,方波的输出脚
//****************************************************
//*****************定义全局变量***********************
unsigned int td_num;
//****************************************************
//******************定义子函数************************
void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mode);
//****************************************************
//*********************主函数************************
//描    述:使用使用定时/计数器0编写一个产生2KHz的
//         方波程序,并在P1.0输出
//入口参数:无
//返回参数:无
//设    计:ycj
//最后修改:时间(2006.5.2)  修改人(ycj)
//****************************************************
int main(void)
{
 timer_init(0,0,0,2);//定时器0,GATE=0仅由TR0控制定时器0的启动,设定为定时器功能,方式2(计数器长度为8位)
 TL0=0x6;//对定时器赋初值TC=6,也就是计数250次后溢出
 TH0=0x6;//自动重装值
 TR0=1;//启动定时器0
 ET0=1;//允许T0中断
 EA=1;//允许全局中断
 while(1);//死循环
}
//************************定时器初始化函数***************************
//描    述:对定时/计数器初始化
//入口参数:unsigned char time_num  定时/计数器的编号(0或者1)
//         unsigned char time_GATE 定时/计数器的门控制位(0或者1)
//		   unsigned char time_CT   定时/计数器的功能选择位(0或者1)
//         unsigned char time_mode 定时/计数器的方式选择(0~3)
//返回参数:无
//设    计:ycj
//最后修改:时间(2006.5.2)  修改人(ycj)
//*******************************************************************
void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mode)
{
 if (time_num==0)
	{
	 TMOD&=0xf0;
	 TMOD|=(time_GATE<<4)+(time_CT<<3)+(time_mode);
	}
 else if (time_num==1)
	{
	 TMOD&=0x0f;
	 TMOD|=(time_GATE<<8)+(time_CT<<7)+(time_mode<<4);
	}
}
//************************定时器0中断处理函数***********************
//描    述:定时器0中断处理函数,实现P1.0脚输出2KHz的方波
//入口参数:无
//返回参数:无
//设    计:ycj
//最后修改:时间(2006.5.2)  修改人(ycj)
//*******************************************************************
void timer0(void) interrupt 1 using 1
{
 if (td_num>=10)
   {
    p_out=!p_out;
	td_num=0;
   }
 else
    td_num++;

}

⌨️ 快捷键说明

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