📄 30-14-3.c
字号:
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个52标准内核的头文件
sbit P10=P1^0; //要控制的LED灯
sbit K1=P3^0; //按键K1
sbit K2=P3^1; //按键K2
static uchar Tosc;//一个周期的时间
static uchar Duty;//占空比
void main(void)
{
TMOD=0x11; //T0和T1均选择工作方式1,16位定时器
TH0=0x3C;
TL0=0xB0; //定时时间为0.1s/周期
TH1=0x3C;
TL1=0xB0; //定时时间为0.1s/周期
ET0=1; //使能T0溢出中断
ET1=1;
EA=1; //使能CPU中断
TR0=0; //T0禁止运行
TR1=1; //唤醒T1,T1开始计数
while(1) //无限循环
{
;
}
}
timer0(void) interrupt 1 //T0中断服务函数,占空比
{
if(Duty==0 && Tosc==0)Tosc=1; //消除都等于0时的Duty无限增长死循环
Duty++;
if(Duty==Tosc)
{
Duty=0;
P10=~P10; //矩形波中的高低电平反转
TR1=1; //开始T1计数
TR0=0; //禁止T0计数,等待T1将其唤醒
}
}
timer1(void) interrupt 3 //T1中断服务函数,频率
{
if(Tosc==10)Tosc=0; //定时时间为1s
Tosc++;
TR0=1; //开始T0计数
TR1=0; //禁止T1计数,等待T0将其唤醒
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -