专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
急求51单片机输出pwm波的程序,能从一个I/O口输出就行,之前找了很多都改不对
2019-07-15 15:49
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
3376
5
1379
急求51
单片机
输出pwm波的程序,能从一个I/O口输出就行,之前找了很多都改不对
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
山代王
1楼-- · 2019-07-15 19:40
精度要求高吗?不高的话弄一个定时器,翻转电平,这样不就好了??
加载中...
liqijian101
2楼-- · 2019-07-16 00:21
我也觉得是翻转电平 好久不用51 暂时没啥程序
加载中...
3312856
3楼-- · 2019-07-16 00:37
IO口输出高电平然后延时,再输出低电平再延时,循环下去就产生自己想要的不同比和占空周期的PWM
加载中...
3312856
4楼-- · 2019-07-16 04:03
不同占空比和周期的PWM,笔记本电脑键盘真的不好用,手碰到触摸板打字就会产生顺序颠倒胡言乱语。
加载中...
小S咯
5楼-- · 2019-07-16 04:45
我说一个IO模拟PWM把。我用的是新塘的8051
首先定时器初始化
void TIMER_INIT (void)
{
TIMER0_MODE1_ENABLE;
clr_T0M;
u8TH0_Tmp = (65536-1000)/256;
u8TL0_Tmp = (65536-1000)%256;
TH0 = u8TH0_Tmp;
TL0 = u8TL0_Tmp;
set_ET0; //enable Timer0 interrupt
set_EA; //enable interrupts
set_TR0; //Timer0 run
}
定时器中断
void Timer0_ISR (void) interrupt 1 //interrupt address is 0x000B
{
TH0 = u8TH0_Tmp;
TL0 = u8TL0_Tmp;
timecnt++;
if(timecnt>=100)
timecnt=0;
if(dat>timecnt)
P00=1;
else
P00=0
}
主函数改变dat的值就会改变占空比了,0-100。
加载中...
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
首先定时器初始化
void TIMER_INIT (void)
{
TIMER0_MODE1_ENABLE;
clr_T0M;
u8TH0_Tmp = (65536-1000)/256;
u8TL0_Tmp = (65536-1000)%256;
TH0 = u8TH0_Tmp;
TL0 = u8TL0_Tmp;
set_ET0; //enable Timer0 interrupt
set_EA; //enable interrupts
set_TR0; //Timer0 run
}
定时器中断
void Timer0_ISR (void) interrupt 1 //interrupt address is 0x000B
{
TH0 = u8TH0_Tmp;
TL0 = u8TL0_Tmp;
timecnt++;
if(timecnt>=100)
timecnt=0;
if(dat>timecnt)
P00=1;
else
P00=0
}
主函数改变dat的值就会改变占空比了,0-100。
一周热门 更多>