‘壹’ 如何用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左右。这样你要的晌中效果就达到了。
实现代码应该不需要把。