单片机初学掌握
什么是常量:
常量是数在程序执行过程中不能改变,常量是在程序MAIN函数之前定义的,在MAIN 函数之后是不能改变的,如要改变必须在MAIN函数之前改变,.常量定义是一些地址或字符如#define duan_kou1 0xff; #include shu_ju2 0123,0x3f,…;但定义的符号字符前不能是数字或常用符号如@,#,-%,-.
什么变量:
变量是地址字符在程序运行过成中其值是可以改变的,变量在内存之中是一个地址单元,地址单元的内部其值是可以改变的,如#define uchar unsiued cha uchar shu_zhi,a,b,c……;a=P3;此时a为P3内容,现在把a的内容改变a=P2
变量与常量的区别:
delay(1000);括号之中的1000是常量也就是说每次编译以后在也不能改变了,如要改变需从新写入新得数值,如果把它改动一下delay(shu_zhi);程序在运行时只改变shu_zhi之中得数不就成了变量了.
原文:keyValue=P3|0xfb;//P3口的所有位按位或,把按位或完结果从新赋值keyValue因为有逻辑运算符和逻辑表达式的优先及决定。
例如:此时P3口为:16六进制0xfd(11111101B)和0xfb按位或
1. P3|=0x3e // 这是一种定义?
2。if((KValue=P3|0xe3)!=0xff //这句程序含义是什么?此时KValue里的值是多少?
2. 1 p3|=0x3e;这个语句将P3.5,P3.4,P3.3,P3.2,P3.1这五根口线置成高电平,因为P1,P2,P3是准双向口所以作为输入前必须侄1为下面语句读入
P3口状态作准备。
作准备。
2 if((KValue=P3|0xe3)!=0xff) 此语句读入P3口状态,并且和0xe3按位或,保持其它位不变(即P3.7,P3.6,P3.0),将结果
3. 送入KValue中,然后进
行判断:不等于Oxff则顺序执行,否则跳出if语句。
4. /*按下K1点亮LED,按下K2熄灭LED,且K2优先,只要K2被按下LED就不能被点亮。*/
5. #include "reg51.h"
6. void main()
7. { for(;;)
8. { P3|=0x3c;
9. if((P3|0xf7)!=0xff) /*如果K2被按下P3口和0xf7相或其值肯定不等于0xff因为P3.3是低电平而0xf7(11110111B)
10. 的位三也是低电平,所以P3.3的0电平和立即数0xf7的位三0电平相或结果为0所以不等于0xff说明只有 p3.3被按下,接下来则顺序执行而且只能执行一条语句否则编译通不过*/
11. P1=0xff;//只能执行一条语句,执行完后并退出if语句
12. else if((P3|0xfb)!=0xff) /*否则判断K1是否被按下*/
13. P1=0;
14. }
}