標題:
為什么單片機主函數(shù)中調(diào)用不到另一個函數(shù)
[打印本頁]
作者:
sefawg
時間:
2018-7-11 22:10
標題:
為什么單片機主函數(shù)中調(diào)用不到另一個函數(shù)
寫的兩個方法想拼在一起,主函數(shù)是獨立按鍵的程序,里面當按鍵按下K1去調(diào)用另一個程序(步進電機轉(zhuǎn)動的程序),為什么調(diào)用不了, 請幫忙看看, 調(diào)用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}; //逆時鐘旋轉(zhuǎn)相序表
uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時鐘旋轉(zhuǎn)相序表
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++) //電機旋轉(zhuǎn)一周,不是外面所看到的一周,是里面的傳動輪轉(zhuǎn)了一周
{
for(i=0;i<8;i++) //旋轉(zhuǎn)45度
{
P1=CCW[i];
delaynms(1); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
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++) //旋轉(zhuǎn)45度
{
P1=CW[i];
delaynms(1); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
P1=0xf0;
}
復制代碼
作者:
devcang
時間:
2018-7-12 00:12
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#include "motor.h"
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();
}
}
//save as motor.h
u8 code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時鐘旋轉(zhuǎn)相序表
u8 code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時鐘旋轉(zhuǎn)相序表
void delaynms(u16 aa){
u8 bb;
while(aa--){
for(bb=0;bb<115;bb++){ //1ms基準延時程序
;
}
}
}
void motor_ccw(){
u8 i,j,k;
for(k=0;k<128;k++){
for(j=0;j<8;j++){ //電機旋轉(zhuǎn)一周,不是外面所看到的一周,是里面的傳動輪轉(zhuǎn)了一周
for(i=0;i<8;i++){ //旋轉(zhuǎn)45度
P1=CCW[i];
delaynms(1); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
P1=0xf0;
}
void motor_cw(){
u8 i,j,k;
for(k=0;k<128;k++){
for(j=0;j<8;j++){
for(i=0;i<8;i++){ //旋轉(zhuǎn)45度
P1=CW[i];
delaynms(1); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
P1=0xf0;
}
//////////////
///////////雖然沒有什么意義,但這樣寫法是可以的
///////////////
作者:
alpdr
時間:
2018-7-12 02:10
第三行好像有點問題
作者:
sefawg
時間:
2018-7-12 09:23
解決了,24行少了一對括號
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1