请问以下有关单片机跑马灯的C语言程序各语句的含义(详细)

请问以下有关单片机跑马灯的C语言程序各语句的含义(详细),第1张

#include <reg51h> //51头文件

#include <intrinsh> //包含移位函数_crol_

void Delay10ms(unsigned int c); //延时函数声明

void main(void)

{

unsigned char LED;

LED = 0x01; //一个unsigned char有8位,每一位代表了一个灯,初始点亮第一盏灯

while(1)

{

P0 = LED; //点亮一盏灯

Delay10ms(50); //延时500ms,让其量一会儿

LED = _crol_(LED,1); //向左移位函数,比如 0x01 --> 0x02 --> 0x04 -->0x08 ---> 0x10

}

}

void Delay10ms(unsigned int c) //延时函数

{

unsigned char a, b;

for (;c>0;c--) //三重循环延时,大约延时10ms

{

for (b=38;b>0;b--)

{

for (a=130;a>0;a--);

}

}

}

define是宏定义语法,相当于现实生活中的起昵称。

#define N 10 就是给10这个数字起了一个昵称,叫做N

以后的代码中,遇到N的地方,其实就是10,编译器会在编译之前,将N都给一模一样的替换成10。

sort函数是进行前后顺序颠倒的,for循环有三个部分。

第一个部分是初始化,也就是将q指向p + N -1的位置。其中,p是一个形参地址,假设这个p指向的地址,是一个真实的地址,例如xxx胡同1号。那么p + N - 1,就相当于p + 10 - 1,也就是p + 9,相当于xxx胡同10号。上面的函数中,sort的实参是a[10],xxx胡同10号,其实就是a数组的最后一个元素。

第二部分是跳出for循环的条件,就是p < q

第三部分是每次执行完毕之后,进行什么 *** 作,p++,q--

for循环执行体的内容,其实就是一次数据的交换。

假设输入是1,2,3,4,5执行函数之后的结果,就是5,4,3,2,1

#include <stdioh>

#define CUBE(x) (xxx)//预定义函数CUBE(x),功能:计算x的3次方。

main()

{

int n=5;

int s=CUBE(++n);//此处运算顺序:n=n+1;n=n+1;n=n+1;s=nnn,即n=5+1;n=6+1;n=7+1;s=888

//++n的运算优先级高于乘,所以先算所有的++n

printf(“%d”,s);//输出结果:392

}

/

   判断一个数是否素数,是的话返回true,否则false

   

   @param num

   @return

  /

 public static boolean isPrime(int num) {

  boolean flag = true;

  if (num <= 1) {

  } else {

   for (int i = 2; i < num; i++) {

    if (num % i == 0) {

     flag = false;

    }

   }

  }

  return flag;

 }

 public static void main(String[] args) {

  int ri, repeat;

  Systemoutprintln("请输入一个值:");

  Scanner in = new Scanner(Systemin);

  repeat = innextInt();

  if (repeat < 6 || repeat % 2 != 0) {

   Systemerrprintln(repeat + "不符合题目要求");

   return;

  }

  // 最小素数为2:,从2开始遍历

  int prime2 = 0;

  for (ri = 2; ri <= repeat; ri++) {

   if(!isPrime(ri)){

    //不是素数,跳过

    continue;

   }else{

    //是素数,那么用原值减去该素数得到第二个值

    prime2 = repeat - ri;

    if(isPrime(prime2)){

     //如果第二个值是素数,则中断查找,结果已出

     break;

    }else{

     prime2 = 0;//重置为0

    }

   }

  }

  if(prime2 != 0){

   //表示找出结果

   Systemoutprintln("程序找出"+repeat+"的2个素数为:"+ri+","+prime2);

  }else{

   Systemoutprintln("程序没找出"+repeat+"的2个素数!");

  }

  inclose();

 }

//有啥问题可追问

但是,当开关松开的时候,K恢复到高电平,IF语句应该是不执行的。

这句话是对的。

无论按键如何 *** 作,灯始终处于点亮状态。这句话有问题。

你的按键能有什么 *** 作,不过就是按下去吗,松开吗,还有吗?

按下去,K=0,执行led=0; 灯亮啊。

你想要灯灭吗?那得有一行是:led=1; 那灯才能灭的,可程序中并没有这一行啊。

所以,灯就一直亮的,只要按过一次,led=0; 以后将永远为0,灯永远亮的。

你提问的标题有(while语句),可程序中并没有用的,这标题不符啊。

以上就是关于请问以下有关单片机跑马灯的C语言程序各语句的含义(详细)全部的内容,包括:请问以下有关单片机跑马灯的C语言程序各语句的含义(详细)、想请大神解释一下一个C语言程序的函数语句、关于C语言程序,每条语句的定义是什么呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10219165.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存