51单片机实战教程(30 人机界面编程七)

51单片机实战教程(30 人机界面编程七),第1张

51单片机实战教程(30 人机界面编程七)

       Usart HMI支持赋值运算符:“=”;算术运算符: “+”、“-”、“*”、“/”、“%”;单目运算符:"++"、“--”,位运算符:"&"、"|"、"^"、"<<"、“>>”;复合运算符:"+="、     "-="、“*=”、“/=”、“%=”、"|="、"&="、“^=”、“<<=”、“>>=”;逻辑运算符"=="、 "<"、">"、“<=”、">=";  赋值运算符的优先级最低,但是Usart HMI的其他符不支持优先级,算术运算按从左到右进行计算,这点需要特别注意。本文将讲解Usart HMI 的这些运算符、循环语句及其应用。

一 Usart HMI代码语句格式

Usart HMI代码语句由指令、 *** 作对象、“,”及运算符与空格组成。指令与 *** 作对象(参数)间用空格隔开,除头尾外不可再有空格, *** 作对象(参数)间用“,”隔开(除for循环头外,这里用";")。示例

page main

covx t2.txt,va0.val,0,0

习惯写c代码后,不小心就会在语句后面加分号";", 这千万不能加,加了编译就会出错。

二 赋值运算符

       Usart HMI支持的数据类型就两种:字符串、整数,整数占4个字节。内部变量都为整数类型,在使用它们时后面不能加".val"。自己添加的变量,字符串型变量名后必须加".txt",数值型变量名后必须加".val",才能用于赋值,或被赋值。注意:不同类型的变量不可相互赋值,变量也不可赋予不同类型的值。

 给数值型变量赋值示例1:

        va0.val=100

给数值型变量赋值示例2:

        va0.val=sys0

给数值型变量赋值示例3:

        va0.val=va1.val

给字符串型变量赋值示例1:

      va0.txt=va1.txt

给字符串型变量赋值示例2:

va1.txt=“abc”

va0.txt=“123” //如果va0.txt的最大字符数大于或等于3,结果为"123",如果小于3,后面多余字符将丢弃

    三 算术运算符

   数值型变量的算术运算   这个很简单,不需要多讲。示例:

    va3.val=8+3/3+1%2     //va3.val值为0

    va3.val=8+3*5             //va3.val值为55

  字符串型变量的算术运算     支持"+","-"运算当很特别,不支持变量间相减,例如:

却支持减去整数,如:

 从输出结果可以看出t2.txt的值为"123",即删除了后两位.

但不支持加上一个整数,例如:

       字符串型变量相加,结果是把两个 字符串连接在一起,把结果赋值给一个字符串型变量,如果这个变量最大字符数n大于结果字符数,这个变量值就是相加的结果,否则截取前n个字符.

示例:

 输出结果为"12345",即t2.txt为"12345". 再看下面:

  输出结果为"12345",即t2.txt为"12345".因为t2.txt的最大字符数为5,多余的丢弃了.

四 单目运算符

      单目运算符中的“++”仅适合数值型变量,与C语言的单目运算符功能一致。示例:

 输出结果为4. 再看下面:

 输出结果为6.  再看数值型变量“--”应用:

结果是删除末尾字符。

       五 位运算

      位运算仅适合与数值型变量,用法与C语言的位运算符一致。示例:

 结果为1, 再看按位或运算:

 va3.val的结果为0xFF,即255. 再看异或运算:

 va3.val的结果为0xFF,即255. 再看左移运算:

 va3.val的结果为0x08,即8. 再看右移运算:

 va3.val的结果为0x02,即2. 

       六  复合运算符

       复合运算符,即变量先与后面的参数运算,然后再将结果赋予变量,单一运算符支持的,复合运算符依然支持。这个也与C语言的复合运算符原理相同,很简单,就不再做演示。

      七 逻辑运算符

       Usart HMI的逻辑运算符符号与原理都与C语言的逻辑运算符一致,需在if语句中使用。

if语句示例1:

if(Main.r0.val==1)
{
  s0.gdc=65535
}else
{
  s0.gdc=34784
}

if语句示例2:

if(va2.val<300)
{
  va2.val++
  printh AF //upload data
  cov va3.txt,sys0,0
  add 13,0,sys0
  //wepo sys0,va2.val
}else if(va2.val>775)
{
  Main.finishflag.val=1
  printh A2 //stop test
}else
{
  va1.val++
  if(va1.val==Main.timgap.val)
  {
    va1.val=0
    va2.val++
    printh AF //upload data
  }
}

if语句示例3: 

if(va1.val==0)
{
  bt0.val=0
  bt3.val=0
  bt6.val=0
}else if(va1.val==1)
{
  bt0.val=1
  bt3.val=0
  bt6.val=0
}else if(va1.val==2)
{
  bt0.val=0
  bt3.val=1
  bt6.val=0
}else if(va1.val==3)
{
  bt0.val=0
  bt3.val=0
  bt6.val=1
}
strlen t1.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t1.txt
  t1.txt=tem2.txt
}
strlen t2.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t2.txt
  t2.txt=tem2.txt
}
strlen t3.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t3.txt
  t3.txt=tem2.txt
}
strlen t4.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t4.txt
  t4.txt=tem2.txt
}
strlen t5.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t5.txt
  t5.txt=tem2.txt
}
strlen t6.txt,sys0
if(sys0<6)
{
  tem2.txt="000000"
  tem2.txt-=sys0
  tem2.txt+=t6.txt
  t6.txt=tem2.txt
}

     八 while循环

Usart HMI支持while循环,其原理也与C语言的相同,示例:

while(va2.val<100)
{
  va2.val++
}

 九 for 循环

 Usart HMI支持for循环,其原理也与C语言的相同,示例:

for(sys0=0;sys0<100;sys0++)
{
  va2.val++
}

   

    

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

原文地址: http://outofmemory.cn/zaji/5692398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存