📄 波形产生3(双定时双输出).bak
字号:
//*******************************************************************//
//用定时计数器0 工作在方式1 在P1.0引脚上输出一个高电平为86ms低电平为//
//138ms的脉冲波形(即周期为224ms),在P2.0引脚上输出一个低电平为600us高电平为//
//800us的脉冲波形(即周期为1400us),单片机采用12M晶体 //
//*******************************************************************//
#include <at89x52.h>
unsigned int data i=0;k=0;
void Timer0Interrupt( void ) interrupt 1
{
i++;
if(i==860){P1_0=0;}
if(i==2240){P1_0=1;i=0;} //改变i(860,2240)调占空比
}
void Timer1Interrupt( void ) interrupt 3
{
k++;
if(k==6){P2_0=1;}
if(k==14){P2_0=0;k=0;} //改变k(6,14)调占空比
}
void Timer01Init( void )
{ TMOD=0x22; //初始化,定时器T0T1,工作方式2 与INT0\NT1无关 定时器模式
P1_0=0;
TL0 = -200; //定时100us时标, 单片机采用24M晶体
TH0=-200;
TL1 = -200; //定时100us时标, 单片机采用24M晶体
TH1=-200;
TCON =0x50; //允许T0开始计数
IE=0x8a; //允许T0\T1中断
//IP=0X80;
}
void main( void )
{
P1_0=1;
P2_0=0;
Timer01Init(); //time0time1初始化
while(1);
} ////等待硬件定时 到 并输出波形
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -