📄 l4-5.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 + -