|
声明:本次的程序参考了网上的贴子,感谢原创者
今天的任务比较简单,就是输出一个PWM信号
程序如下:
- //程序功能:P1.0口输出PWM信号
- #include <reg52.h> //头文件
- typedef unsigned char uchar; //类型定义
- typedef unsigned int uint;
- sbit PWM=P1^0; //P1.0口输出PWM信号
- uchar time; //调节占空比的变量
- void time0init(); //声明定时器初始化子函数
- void main () //主函数
- {
- time0init(); //调用初始化子函数
- while(1)
- {
- }
- }
- void time0init() //定时器初始化函数
- {
- EA=1; //开总中断
- ET0=1; //开定时器0
- TR0=1; //定时器0开始
- TMOD=0X01; // 定时器模式1
- TH0=(65536-10)/256; //初值高8位
- TL0=(65536-10)%256; //初值低8位
- }
- void time0 ()interrupt 1 //定时器中断函数
- {
- TR0=0; //中断函数中,定时器先关再开,具体作用是什么?是为了计时更准确吗,
- TH0=(65536-10)/256;
- TL0=(65536-10)%256;
- TR0=1;
- time++; //
- if(time>=100) //如果定时满了100次
- time=0; //
- if(time<=10) // 相当于10次定时输出高电平,剩下的90次输出低电平
- PWM=1; //
- else
- PWM=0; //
- }
复制代码
以下为验证
上图是占空比为10的波形
上图是占空比50的波形
上图是占空比90的波形
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|