電機正反轉啟停要求如下:啟動時間:6秒;正轉時間:30秒; 停止時間:2秒;反轉時間:30秒,如何寫入下面這段程序:
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code FFW[]=
- {
- 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
- };
- uchar code REV[]=
- {
- 0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
- };
- sbit K1 = P3^0;
- sbit K2 = P3^1;
- sbit K3 = P3^2;
- sbit K4 = P3^3;
- sbit K5 = P3^4;
- void DelayMS(uint ms)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<120;i++);
- }
- }
- void SETP_MOTOR_FFW(uchar n)
- {
- uchar i,j;
- int M=25;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- if(K3 == 0) break;
- P1 = FFW[j];
- if(K4 == 0)
- {
- P0=0xf6;
- DelayMS(20);
- }
- else if(K5 == 0)
- {
- P0=0xee;
- DelayMS(100);
- }
- else DelayMS(50);
- if(K4 == 1&&K5 == 1)
- {
- P0 = 0xfe;
- }
- }
- }
- }
- void SETP_MOTOR_REV(uchar n)
- {
- uchar i,j;
- int M=25;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- if(K3 == 0) break;
- P1 = REV[j];
- if(K4 == 0)
- {
- P0=0xf5;
- DelayMS(20);
- }
- else if(K5 == 0)
- {
- P0=0xed;
- DelayMS(100);
- }
- else DelayMS(50);
- if(K4 == 1&&K5 == 1)
- {
- P0 = 0xfd;
- }
- }
- }
- }
- void main()
- {
- uchar N = 50;
- while(1)
- {
- if(K1 == 0)
- {
- P0 = 0xfe;
- SETP_MOTOR_FFW(N);
- if(K3 == 0) break;
- }
- else if(K2 == 0)
- {
- P0 = 0xfd;
- SETP_MOTOR_REV(N);
- if(K3 == 0) break;
- }
- else
- {
- P0 = 0xfb;
- P1 = 0x03;
- }
- }
- }
復制代碼
|