历史上的今天
今天是:2025年02月06日(星期四)
2020年02月06日 | 按键控制电动机的速度和转向
2020-02-06 来源:51hei
按键控制电动机的速度和转向
源程序:
#include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define CLK_WISE 0//顺时针方向转动 #define INVERSE 1//逆时针方向转动 #define HIGH 2//高电平 #define LOW 1//低电平 #define NULL 0//低电平 sbit CTRL0=P2^0;//CTRL0为高电平,CTRL1为低电平时顺时针方向转动 sbit CTRL1=P2^1;//CTRL0为低电平,CTRL1为高电平时逆时针方向转动 uchar levelflag=0;//高低电平标志,取值为HIGH或LOW,分别代表高电平和低电平,或为NULL bit direction=CLK_WISE;/***方向标志,取值为CLK_WISE 或INVERSE*/ static uchar speedcount=0;//加速标志,越大转速越快,最大到10,然后回归到0,循环。 //程序中可以依据它来改变占空比 uchar highcount; //记录高电平定时次数 /***定时器t0***/ void time0(void) interrupt 1 using 1 { TH0=0xff; TL0=0xCE; highcount++;//记录一出次数 //频率为固定的2kHZ左右,只是占空比发生变化 if(highcount<=speedcount) levelflag=HIGH;//高电平次数 if((highcount>speedcount)&&(highcount<=10)) levelflag=LOW;//低电平次数 if(highcount==10) //最大为10,然后从0开始循环。 highcount=0; } /****改变转向标志*****/ void int1_srv (void) interrupt 2 using 2 { if(INT1==0) { while(!INT1); direction=!direction; } } /*******中断,调节占空比********/ void change(void) interrupt 0 using 0 { if(INT0==0) { while(!INT0); speedcount++;//记录加速次数 if(speedcount>10) speedcount=0;//最大为10,然后从0开始循环。 } } /****延时****/ void delay(uchar i) { while(i--) ; } /*****改变转向*****/ void run(void) { if(direction==CLK_WISE) //顺时针转 { CTRL1=0; if(levelflag==HIGH)//高电平 { levelflag=NULL; CTRL0=1; } if(levelflag==LOW)//低电平 { levelflag=NULL; CTRL0=0; } } if(direction==INVERSE) //逆时针转 { CTRL0=0; if(levelflag==HIGH)//高电平 { levelflag=NULL; CTRL1=1; } if(levelflag==LOW)//低电平 { levelflag=NULL; CTRL1=0; } } } void main() { EA=1; TMOD=0x01; ET0=1;//定时器0初始化 TR0=1; EX0=1; IT0=1;//外部中断0 EX1=1; IT1=1;//外部中断1 TH0=0xff; TL0=0xCE;//定时器0初始值 while(1) { run(); } }
史海拾趣
|
本来是想要显示从000到999的 可是到99后 数字跳到A0了..而不是100...帮我看看哪里出问题了阿...谢谢~~~ inc R3 cjne R3,#0aH,ch ...… 查看全部问答> |
|
想用新英蓓特em-stm3210e 开发板换个合适的板子来玩玩,10年1月份买的,由于一时热血想学STM32开发来着,我不是专业的,半路出家的就是不行,准备工作做了不少,后来放弃了,手中还有一块ULINK2仿真器,当时一起买来的,就点过一次,所有配件全在, ...… 查看全部问答> |
|
模块的基本测试实验前面的坛友们已经做得很多了,我就不重复做了,我只想从我的具体项目出发做几个测试,目前我的产品用得比较多的电源模块包括金升阳的K7805,LM2596自己做的模块,还有TI自家的TPS54331,我也不知道这样比较对不对,我只是想从我 ...… 查看全部问答> |
|
硬件平台:MC9S12HZ256 开发环境: CODEWARRIOR V5.0 最近的应用中有1个100K字节的大数组,我该如何解决16K分页不连续的问题呢? 难道要将这个数组,分解成多个16K的数组,然后在程序上进行判断处理? 有没有好的解决办法呢? 谢谢!… 查看全部问答> |




