📄 pwm.c
字号:
#include<reg51.h>
#include<stdio.h>
#include<stdlib.h>
#include<absacc.h>
#include<string.h>
#include <ctype.h>
#define unchar unsigned char
#define unint unsigned int
#define unlong unsigned long
sbit pwm_out=P0^0;//pwm波形输出
unchar ton=90; //高电平宽度为9ms
unchar toff=10;//低电平宽度为1ms
unchar counter=0;
unchar period=100;//一个方波的周期为10ms
void timer(){ //初始化定时器,每0.1ms产生一次中断
TMOD=0X22; //定时器0,1均为方式2
EA=1; //开放所有的中断
ET0=1; //打开定时器0的中断
TL0=TH0=156; //经过(256-TH0)个振荡周期后溢出,每个振荡周期为1uS,针对12M的晶振
TR0=1; //打开定时器0
}
void t0(void) interrupt 1 using 0{
counter++;
if(counter<=period){
if(counter<=ton) pwm_out=1;
else pwm_out=0;
}
else counter=0;
}
void main(){
timer();
while(1) {}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -