主页>电机技术资料>内容 |
三个输入信号控制一个电机
来源:www.dianji114.com.cn 作者:电机百事通 发布时间:2008-06-14 |
||||||
|
#include <STDIO.H> #include <REG52.H> unsigned int i=0; unsigned char idata electromotor=0; //electromotor为电机转与不转的标志 //unsigned char idata section=0; //板水平为0,垂直为1 //unsigned char temperature =1 ; sbit press = 0x90; //p10为按键 sbit temperature= 0x94; //p14为温度 sbit section= 0x92; //p12为位置 unsigned char idata ii=1; //ii作为标志,如果等于1的时候,说明电机的转动是温度控制的 void delay(int y); #define ture 1 //电机信号用的 #define false 0 #define yes 1 //光偶信号用的,yes=水平 #define no 0 #define stop P12=0;electromotor=false; #define start P12=1;electromotor=ture; void main(void) { section=1; press=0; temperature=1; TMOD = 0x01;//定时器0 方式1 TF0=0; TH0=0x15;//延时60MS 算法:(2^16-x)*1*10^-6 = 60*10^-3 TL0=0xA0;/// 1*10^-6为us 需要的时间为 60*10^-3///简单算法:65536-x (us)=定时器的16进制数 ET0=1; TR0=0; EA =1; electromotor=0; stop; while(1) { if(press==1) { delay(1000); if(section==no) { start; ii=0; } else stop; } if((temperature==1)&&(TR0==0)) { TR0=1; //当温度信号来了,启动定时器 }
if ((electromotor==ture) &&(section=no)&&(ii==1)) //电机启动了,当垂直的时候就停止 { stop; } } } void time1(void) interrupt 1 using 0 { TF0=0;//定时器2必须软件清0 TR0=0; TH0=0x15;//延时100MS 算法:(2^16-x)*1*10^-6 = 100*10^-3 TL0=0xA0; TR0=1; i++; if (i==5000) { i=0; start; ii=1; TR0=0;
} } void delay(int y) { while(--y); } |
|||||
|
把您喜欢的内容收藏到QQ书签或者各种书签内,可以通过书签分享给您的朋友哦!还可以让您快速方便的再次阅读哦! |
Powered by dianji114 © 2004-2008 电机百事通 本站部分信息来自互联网 若有版权问题请及时与本站联系. |