PHILIPS 51LPC系列单片机解析方案
动越快,反之则越慢;电机停转,LED 熄灭。此电路稍经修改就可以用于其它许多类似的场合。 源程序清单: 该软件在Keil C51 V6.02上编译通过,在目标板上运动正常。如果用其它编译器必须稍加修改。 #include #define uchar unsigned char #define uint unsigned int uchar s,x,y=0; void timer0(void)interrupt 1 using 1 {/*T0中断服务程序*/ x=x+1; if(x/10>s){ if(y= =0){P1=P10xfb; /*LED点亮*/ x=0;y=1;} else {P1=P1|0x04; /*LED熄灭*/ y=0;x=0;}} TF0=0;TH0=-(28/256); TL0=-(28%256); } void speed(s){ /*电机转换控制子程序*/ uchar pulsecount, pulseduration=0; uint i=0; uint j=0; if (((CMP10x02))!(CMP20x02)/*查询比较器*/ {for (i=0;i {for(j=0;j210;j++) ;} /*延时触发*/ CMP1=CMP10xfc; CMP2=CMP20xfc; pulsecount=1; {P1=P10xfe; pulseduration=12; /*触发脉冲宽度*/ while(pulseduration){pulseduration- -;} P1=P1|0x01; pulsecount- -; } } } void Initcomparatior(void){ //初始化P87LPC761// PT0AD=0x6f; /*禁止P0口的数字功能*/ P0=0xff; P0M1=0x2a; /*P01,P03,P05设为高阻输入*/ P0M2=0xd5; /*P00,P04,P06设为推挽方式*/ P1=0xff; P1M1=0x82; /*P17用于VZC检测*/ P1M2=0x05; CMP1=0x34; CMP2=0x34; } void main(void) {uchar pulsecount ,pulseduration=0x00; uint j;i=0; SP=0x5f;EA=0; TH0=-(28/256); TL0=-(28%256); TF0=0;EA=0;TR0=0; ET0=1;CMP1=CMP2=0; Initcomparator(); CMP1=CMP10xfc; CMP2=CMP20xfc;s=0; while(P1_1) {;} while(!P1_1){;} while(P10x80){}; while(!(P10x80)){}; while(P10x80){} while(!(P10x80)){}; while(P10x80){}; P1=P10xfe; //启动电机 while(1) {if(P1_1= =0) { x=0; while (!x){;} if(P1_1=0) {P1=0xff;s=s+1;} //停止电机 if(s= =8){s=0;} while(!P1_1){;} //等待释放按键 while(P10x80){}; while(!(P10x80)){}; while(P10x80)(); whie(!(P10x80)){}; while(P10x80){}; P1=P10xfe;} //启动电机 EA=1;TR0=1; speed(s); } } //结束
解析 方案 单片机 系列 51LPC PHILIPS 相关文章:
- 基于TI最新多核DSP SoC架构解析(05-12)
- ARM linux解析之压缩内核zImage的启动过程(11-10)
- 基于Xilinx V5的DDR2数据解析功能实现(09-12)
- 网站出现“register_globals must is Off”解析(09-12)
- SAX PULL DOCUMENT解析XML总结(09-12)
- 两起西门子PROFIBUS-DP网络干扰故障解析(09-12)