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

📄 l4-5.c

📁 单片机C语言程序设计教程与实训源代码及图片 单片机C语言程序设计教程与实训源代码及图片
💻 C
字号:
/**********************************************************************
程序名称:L4-5.c
程序功能:采用中断方式,通过T/C0的工作方式1,在P1.1输出周期为1s,占空比为20%的脉冲信号
程序作者:张三
创建时间:2008-3-28
**********************************************************************/
#include <reg51.h>
#define uchar unsigned char

uchar COUNTER;		// 用于记录中断次数
uchar HIGH=4;		// 高电平所需中断次数
uchar TOTAL=20;		// 一个周期所需中断总次数

sbit Out = P1^1;	// 定义方波输出引脚
/**********************************************************************
函数名称:void main( )
功能描述:主函数,初始化CPU 
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void main( void )	// 主函数,初始化CPU
{
	TMOD = 0x01;	// 由TR0控制T/C0的启停,工作方式1
	TH0 = 0x3c;	// 给定时器赋初值
	TL0 = 0xb0;
	EA = 1; 	// 开中断
	ET0 = 1;	// 允许T/C0申请中断
	TR0=1;		// 启动T/C0
	do{ }while( 1 );		
}
/*******************************************************************
函数名称:void Time0( void ) 
程序功能:重装定时器初值,记录中断次数,高低电平转换
程序作者:张三
创建时间:2008-3-28
**********************************************************************/
void Time0( void ) interrupt 1 using 2
{
	TH0 = 0x3c;			// 重装定时器初值
	TL0 = 0xb0;
	COUNTER++;			// 中断次数加1
 	if( COUNTER == HIGH ) Out = 0;	// 高电平时间到,转低电平
	else if( COUNTER == TOTAL ) {	// 低电平时间到,转高电平,并清零COUNTER
		Out = 1;
		COUNTER = 0;
	}
}

⌨️ 快捷键说明

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