单片机程序 每句都是什么意思

单片机程序 每句都是什么意思,第1张

sbit led_en_port = P2^5; /定义发光二极管控制脚/

sbit led_ch_en_port = P3^7; /定义发光二极管通道控制脚/

这两句是什么意思??定义它有什么用?

这两句的意思是:定义P2^5引脚,程序中只要对led_en_port赋值,就是对P2^5引脚控制,P3^7同理。

uchar sled_disp_buff[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

这些数据时怎样得到的

这个是数码管的码表,根据数码管的共阴共阳,选择点亮数码管的哪几段,才可以显示出1,2,3,4。。。这样的数字。 可以自己花个图写出来,或者去网站上下载数码管小工具。

SET //将RLO(逻辑运算结果保存位)位置1,

SAVE //将RLO结果保存到BR位,以保证下面的程序可以执行。

= L 01 //将RLO位保存到L01临时存储区位

L #IN3 //装载#IN3这个变量到ACC1

SAVE //将RLO结果保存到BR位,以保证下面的程序可以执行。

ITD //将ACC 1中的数值转换为双整数

DTR //将ACC1的双整数转为浮点数,最终#IN3变成了浮点数,保存在了ACC1

SAVE //将RLO结果保存到BR位

L 1000000e+001 //装载100到ACC2

/R //ACC2除以ACC1,也就是100除以#IN3变量,结果保存在ACC1

JO M001 //如果有溢出那么跳转到M001

JU M002 //如果没有溢出那么跳转到M002

M001: CLR //清除RLO位

= L 01//RLO结果暂存到L01临时存储区

M002: T #IO9 //将ACC1的数据传送给#IO9变量

CLR //清除RLO位

A #STAT65 //检查#STAT65是否为1

NOT //对RLO取反

A #IN0 //检查#IN0是否为1

JCN M003 //如果以上逻辑运算结果为0跳转到M003

L #IO9 //如果逻辑运算结果为1,那么装载#IO9

T #STAT66 //将#IO9传送给#STAT66

L #IO9 //装载#IO9

T #IO10 //将#IO9传送给#IO10

L 0000000e+000 //装载00

T #STAT67 //创送00给#STAT67

M003: CLR //清零RLO

import javautilDate;//导入jar里面日期路径

import javautilList; //导入jar里面List集合路径

import javautilArrayList;//导入jar里面ArrayList集合路径

public class ArrayListTest { // 创建类

public static void main(String[] args) {//添加程序入口方法

// TODO Auto-generated method stub//方法注解

News news1 = new News();//实例化News对象 并起个别名news1

news1setId(1); //调用news1 对象setId方法给news1对象的id属性赋值

news1setTitleName("F4"); //同上

news1setCreater("英皇集团");//同上

news1setCreateTime(new Date());//同上

News news2 = new News(); //实例化News对象 并起个别名news2

news2setId(2); //调用news1 对象setId方法给news1对象的id属性赋值 news2setTitleName("披头士"); //同上

news2setCreater("BBC集团");//同上

news2setCreateTime(new Date());//同上

//集合添加对象

//泛型

Systemoutprintln("----------jdk 15 泛型---------------------");//输出控制台信息

List<News> list = new ArrayList<News>(); //实例化一个ArrarList集合对象 别名list

listadd(news1);

listadd(news2); //分别把上面创建并已经赋值过的两个对象存放在list集合对象中

// listadd(new Date()); //注释 再添加一个当前日期到list集合中

News news3 = new News(); //实例化一个News对象 别名news3

news3setId(333);

news3setTitleName("333披头士");

news3setCreater("333集团");

news3setCreateTime(new Date());

listadd(1,news3);

Systemoutprintln("长度 :"+listsize());

Systemoutprintln(list);

if(listcontains(new News())){ //调用list集合listcontains()这个方法,去比较当前list里面存放的内容是不是new News这个类的实例

Systemoutprintln(news3getId()+" : id "+news3getTitleName()+" : name " +news3getCreateTime()toLocaleString()); /输出new3对象的相关信息到控制台

}

for(int i=0;i<listsize();i++){//使用for循环对list进行遍历

News n=(News)listget(i);//循环取值

Systemoutprintln(ngetId()+" : id "+ngetTitleName()+" : name " +ngetCreateTime()toLocaleString());//循环打印输出到控制台

}

Systemoutprintln("-------------------------------");

// listremove(2);

Systemoutprintln("-------------------------------");

for(int i=0;i<listsize();i++){

News n=(News)listget(i);

Systemoutprintln(ngetId()+" : id "+ngetTitleName()+" : name " +ngetCreateTime()toLocaleString());

}

Systemoutprintln("---------for新特性----------------------");

for(Object obj :list){ //使用增强for循环去遍历list

News n=(News)obj;

Systemoutprintln(ngetId()+" : id "+ngetTitleName()+" : name " +ngetCreateTime()toLocaleString());

}

}

}

首先你的代码有两处错误

#include <stdioh>

int main()                    //这里的int指返回类型为:int,即整数类型,但是你在这个函数最                                         //后没有返回任何数据,所以错误

//修改方式有两种①:吧int改为void,即无返回类型

//②:在 printf("\n");后面加一句 return 0;

{

  int i=5;

  void palin(int n);

  printf("请输入5个字符:");

  palin(i);

  printf("\n");

}

void palin(n)        //这里palin()括号内的变量n需要定义一个类型,但是你吧它写在了下面

int n;

{

  char next;

  if(n<=1) {

      next=getchar();

      printf("相反顺序输出结果:");

      putchar(next);

  } else {

      next=getchar();

      palin(n-1);

      putchar(next);

  }

}

-------------------------------------------分割线-----------------------------------------

下面是正确的代码及注释

#include <stdioh>        //编译预处理

int main()                        //main函数声明

{

  int i=5;                        //定义一个变量i,并赋初值5

  void palin(int n);        //声明palin函数,无返回值,定义整型参数n

  printf("请输入5个字符:");    //输出语句,输出一句话:请输入5个字符:

  palin(i);                                //调用palin函数

  printf("\n");                        //输出语句,\n代表换行,dos窗口程序走到这里光标会换行

return  0;                                //返回0,

}

void palin(int n){                    //函数实现,{ }里的代码是函数体

  char next;                            //定义一个char类型变量

  if(n<=1) {                            //分支判断语句,如果n<=1就执行 { }里的代码,否则就                                                        //执行 else { }里的代码

      next=getchar();               //吧从控制台输入的字符赋值给next字符变量

      printf("相反顺序输出结果:");    //输出一句话,没什么好讲的,同上

      putchar(next);                //吧next的值输出

  } else {

      next=getchar();                //吧从控制台输入的字符赋值给next字符变量

      palin(n-1);                        //调用palin函数,注意这里是palin函数调用palin函数,                                                      //即:调用自身,在数学上这叫递归,有兴趣可以百度一下

      putchar(next);                   //吧next的值输出

  }

}

最后解释一下palin函数:

刚开始n=5, 走else,next=getchar();    然后palin(4);还走else,next=getchar();直到n=1,走if,next=getchar(),所以next=getchar()调用了5次,吧输入在dos命令行的字符放入缓冲区,执行printf("相反顺序输出结果:"); 再然后 putchar(next); 输出字符,此时的字符是n=1时的字符,即:你输入的最后一个字符;再然后程序会回到n=2时else里剩下的putchar(next); 输出字符,此时的字符是n=2时的字符,即:你输入的倒数第二个字符;以此类推,输出5个字符。这样就完成了顺序输入,倒序输出的算法

#include <stdioh>//包含标准输入输出头文件

#include <stringh>//string声明头文件

void reverse(char str)//函数

{

char p = str + strlen(str)-1;//p指向str的最后一个字符

char temp;//char型临时变量

while(str<p)//如果str所指向的字符小于p所指向的字符

temp=p, p--=str, str++=temp;//交换,并且各自指向下一个字符

}

void main()

{

char str[81];//字符数组

gets(str);//从终端输入一个字符串保存到str中

reverse(str);

printf("%s\n", str);

}

正在写解释LZ等待

while((len = gtline(line, MAXLINE))>1)

{

if(line[len - 1] != '\n')//gtline函数输入第19个字符的时候不是\n则此if语句成立

{

if(getmore == 0)

copy(temp, line);

prevmax += len;//一次输入30个字符 20+10 len的最大值是20

if(max < prevmax)//把大者赋给max

max = prevmax;

getmore = 1;//记录有超出数组的输入

}

else

{

if(getmore == 1)//getmore起标记作用。因为输入的30个大于20所以分2次累加

{

if(max < prevmax + len)//prevmax + len 意思就是20+10,一共输入的数量比max大则执行

{

max = prevmax + len;

copy(longest, temp);//temp存放着这个30个字符的前20个,后面的都忽略了

longest[MAXLINE - 2] = '\n';

}

getmore = 0;//恢复标记

}

else if(max < len)//gtline输入没有超出范围,则判断大小

{

max = len;

copy(longest, line);//直接送给打印数组

}

prevmax = 0;

}

}

有时间最好是用聊天工具说问题,我感觉我写的这个你看不懂QQ359627596

以上就是关于单片机程序 每句都是什么意思全部的内容,包括:单片机程序 每句都是什么意思、西门子S7-300程序中语句表每一句都是什么意思,求大神帮忙!、Java程序每个语句都是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存