完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
693 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
681 浏览 0 评论
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
993 浏览 0 评论
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
781 浏览 0 评论
893 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16958 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 07:17 , Processed in 0.672177 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4192