完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我写了一个红外遥控 控制PWM调速的程序,可是一个电机正常工作,可以产生PWM,另一个电机不行,两端电压一直不变,也就是不产生PWM波形,请高手看看怎么回事。程序如下
#include #include #include #define uchar unsigned char #define uint unsigned int #define motor_c P1 //uchar time_delay; uchar count=0; ***it PWM_R=P1^3; ***it PWM_L=P1^0; ***it PWM_HL=P1^1; ***it PWM_HR=P1^2; ***it en1=P1^4; ***it en2=P1^5; ***it IRIN=P3^2; //红外数据线 uchar IRCOM[7]; uchar m1=0; uchar m2=0; //电机2速度值 uchar tmp1,tmp2; //电机当前速度值 //控制电机程序 void motor(uchar index,char speed) { if(index==1) // 第一个电机 { m1=abs(speed); if(speed>0) //正转 {PWM_L=1;PWM_HL=0;} else //反转 {PWM_L=0;PWM_HL=1;} } if(index==2) // 第二个电机 { m2=abs(speed); if(speed>0) {PWM_R=1;PWM_HR=0;} else {PWM_R=0;PWM_HR=1;} } } void main() { //uchar i; IRIN=1; TMOD=0x02; TH0=0x9B; TL0=0x9B; EA=1; ET0=1; TR0=1; IT0=1; EX0=1; while(1) { //for(i=0;i<100;i++) //motor(1,i); //delay(5000); } } void timer0() interrupt 1 { if(count==0) /* 1个PWM周期完成后才会接受新数值 */ {tmp1=m1;tmp2=m2;} if(count if(count>=100) count=0; //1gePWM信号有100次中断产生 } void delay(uchar x) //x*0.14MS { uchar i; while(x--) { for(i=0;i<13;i++); } } void IR_IN(void) interrupt 0 |
|
相关推荐
3个回答
|
|
|
|
这位兄台,你这程序是完整的吗?
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11970 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:38 , Processed in 0.515479 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号