『壹』 如何用c語言控制步進電機 正轉後自動反轉
中斷2,啟動-停止切換(通過切換flag_status),顯示狀態。do-while是延時。
中斷1,計數器count增1,如果達到預設的數值tab[sp],計數器歸零,標志flag置1。這個好像與速度有關。通過調整延時時間來調整速度。
中斷0,讀鍵盤。沒有scan_key()的源代碼,不知道裡面有些什麼操作。
while(1){...}循環是電機運轉,flag_status是狀態,1轉動,0停止。
沒有看到與正轉反轉有關的代碼。也許在motor_cw_ccw();函數裡面,這個就是電機動一下的函數。
原程序不完整,沒有相應函數、變數的定義及意義說明。難以確切理解。
『貳』 c語言問題 if(!k1)是什麼意思
其實就是k1=1(真),之後執行if內的程序。
2、while(!k1);中的「!」確實是里邊取反,假設你的按鍵還沒有放開,即k1==0(假),取反就 是真了,一直執行此條語句(死循環);假設放開按鍵.....
『叄』 C語言 由K1、k2控制四盞燈的亮滅
if(k1 && k2)
{
燈一亮:flag 1 = 1;
}
else
flag1 = 0;
if(k1 && !k2)
{
燈豎仿二亮:flag 2 = 1;
}
else
flag2 = 0;
if(!k1 && k2)
{
燈三亮:flag 3= 1;
}
else
flag3= 0;
if(!k1 && !k2)
{
燈四亮余旅纖:鎮吵flag 4 = 1;
}
else
flag4 = 0;
『肆』 C語言編程 統計素數
代碼如下:
#include<stdio.h>
voidmain()
{
inti,m,count=0,k1,k2,a[1001];
scanf("%d%d",&k1,&k2);
a[1]=1;
for(i=2;i<=k2;i++)
{
if(a[i]==1)break;
m=2;
while(i*m<=k2)
{
a[i*m]=1;
m++;
}
}
for(i=k1;i<=k2;i++)
if(a[i]!=1)count++;
printf("%d ",count);
for(i=k1;i<=k2;i++)
if(a[i]!=1)printf("%d",i);
printf(" ");
}
這段代碼是用篩選法篩出素數,再計算素數的個數,最後輸出[k1,k2]間的素數,應該不會超時。
『伍』 跪求!C語言51編程按鈕按一秒動作否則無動作。謝謝大神!
#include<reg52.h>
sbitled=P2^0;
sbitk1=P3^1;
#defineuintunsignedint
#defineON0
#defineOFF1
voiddelay_ms(uintn);
voidinit();
uinti=0;
voidmain()
{
while(1)
{
if(k1==0)//判斷按鈕信號
{
delay_ms(10);//延時肆拿防磨雹橘抖
if(k1==0)//再次判斷按鈕信號
{
if(EA==0)
init();
}
}
else//按鈕松開關閉LED、定時器,並初始化計時變數i
{
i=0;
led=OFF;
TR1=0;
ET1=0;
EA=0;
}
}
}
voidinit()
{
TMOD=0x10;
TH1=0x4c; //定時50ms
TL1=0x00;
EA=1;
ET1=1;
TR1=1;
}
voiddelay_ms(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidtime1()interrupt3
{
TH1=0x4c;
TL1=0x00;
i++;
if(i==20)
{
i=0;
led=ON;
TR1=0;
ET1=0;
EA=0;
}
}
『陸』 如何用C語言定義一個單片機的引腳為按鍵
這是一個按鍵子函數:
sbit k1=P2^1; //在主函數前面要聲明的部分
void keyscan() //按鍵識別子函數,P2.1腳
{
int a=1;
while(a)
{
if(k1==0) //循環檢測按鍵動作
{
delay1(15); //延時消抖
if(k1==0)
while(!k1) //等待按鍵釋放
a=0; //跳出子函數
}
}
}
void delay1(int h) //延時子函數
{
int i,j;
for(i=h;i>0;i--)
for(j=110;j>0;j--);
}
哥們,回答的夠詳細了吧!記得加分咯
『柒』 單片機C語言編程:控制流水燈
#include<reg52.h>
#include<intrins.h>
#define uintunsignedint
#define ucharunsignedchar
sbitk1=P1^0;//左循環按鈕
sbitk2=P1^1;//右循環按鈕
sbitk4=P1^2;//恢復暫停
sbitk3=P3^2;//暫停
voidinit();
voidshowLED();
voiddelay(uintxms);
uintdelayTime;
uintgoLeft=1;
uintgoRight=0;
uintsFlag=0;
voidmain()
{
init();
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(k1==0);
goLeft=1;
goRight=0;
}
}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(k2==0);
goLeft=0;
goRight=1;
}
}
}
}
voiddelay(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
voidinit()
{
P0=0xfe;
TMOD=0x02;//T0工作模式2自動裝填8位 200us
TH0=0x38;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
voidshowLED()
{
if(goLeft==1)
P0=_crol_(P0,1);
if(goRight==1)
P0=_cror_(P0,1);
}
voidmoveDelay()interrupt1 //一次中斷200us
{
if(delayTime==5000)
{
showLED();
delayTime=0;
}
else
delayTime++;
}
voidstopLED()interrupt0
{
while(1)
{
if(k4==0)
{
delay(10);
if(k4==0)
{
while(k4==0);
break;
}
}
}
}
『捌』 C語言if語句,按下K1,8個LED從左到右依次點亮;按下K2,從右到左依次點亮,按下K3,8個le
關鍵是你需要的宴啟山是視覺效果,所以要有延時。單純旁叢的一個個點亮是看不出效果的。
把你需要的視覺效果分階段,每個階段實現後,可以延時0.5s左右。這樣你要的晌中效果就達到了。
實現代碼應該不需要把。