寫的兩個方法想拼在一起,主函數是獨立按鍵的程序,里面當按鍵按下K1去調用另一個程序(步進電機轉動的程序),為什么調用不了, 請幫忙看看, 調用motor_ccw()失敗。
單片機源程序:
- #include "reg52.h"
- #include "motor.c"
- void delaynms(uint aa);
- void motor_ccw();
- void motor_cw();
- typedef unsigned int u16;
- typedef unsigned char u8;
- sbit led=P2^0;
- sbit K1=P3^1;
- void delay(u16 i)
- {
- while(i--);
- }
- void keypros()
- {
- if(K1==0)
- {
- delay(1000);
- if(K1==0)
- {
- led=~led;
- motor_ccw;
- }
- while(!K1);
- }
- }
- void main()
- {
- while(1)
- {
- keypros();
- }
- }
- ---------------------------------------------------------------------------------------------------------------------------------------------------------
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時鐘旋轉相序表
- uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時鐘旋轉相序表
-
- void delaynms(uint aa)
- {
- uchar bb;
- while(aa--)
- {
- for(bb=0;bb<115;bb++) //1ms基準延時程序
- {
- ;
- }
- }
-
- }
- void motor_ccw()
- {
- uchar i,j,k;
- for(k=0;k<128;k++)
- {
- for(j=0;j<8;j++) //電機旋轉一周,不是外面所看到的一周,是里面的傳動輪轉了一周
- {
- for(i=0;i<8;i++) //旋轉45度
- {
- P1=CCW[i];
- delaynms(1); //調節轉速
- }
- }
- }
- P1=0xf0;
- }
- void motor_cw()
- {
- uchar i,j,k;
- for(k=0;k<128;k++)
- {
- for(j=0;j<8;j++)
- {
- for(i=0;i<8;i++) //旋轉45度
- {
- P1=CW[i];
- delaynms(1); //調節轉速
- }
- }
- }
- P1=0xf0;
- }
復制代碼
|