发布网友
共2个回答
热心网友
在主函数中给P1.0=1;定时器定时200us,产生中断 在中断函数中 ~P1.0;就行啦
热心网友
// 仿真实例 占空比可调
#include<reg51.h> // 用定时器0 控制 PWM
sbit P1_0 = P1^0; // P1.0 PWM 输出
sbit key10 = P3^2; // 调节 PWM0 占空比 按键
sbit key11 = P3^3;
unsigned char PWM0 = 2; // 占空比调整
unsigned char counter = 0; // 计数的
bit tt1; // 标志位
void main() // 主函数
{
TMOD=0x20;
TH1=256-30; // 定时时间 可以修改
TL1=256-30; // 12 MHz
EA=1; // 中断启动
ET1=1;
TR1=1;
while(1)
{ // 调节 PWM0 占空比
if(key10==0 && tt1==0) {tt1 = 1; PWM0++;} // K1、K2
if(key11==0 && tt1==0) {tt1 = 1; PWM0--;}
if(key10==1 && key11==1) tt1=0;
}
}
void Timer0(void) interrupt 3 // 定时器1 PWM 控制
{
counter++;
if(counter >= 20) counter = 0; // PWM 32级 可以修改
if(counter >= PWM0) P1_0 = 0; else P1_0 = 1;
}