單片機初學掌握
什麼是常量:
常量是數在程序執行過程中不能改變,常量是在程序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. }
}