精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

一個維修工如何學單片機(講述自己學單片機經歷)2

前幾個貼說了,學單片機所具備的軟件和硬件.接下來說說如何用C語言進行編寫程序.在 編程序之前,有幾個東西要講清楚.1-學單片機就是要學習如何隨意控制單片機的I/O端口.AT89S52一共有32個I/O口,分成4個組,分別是P0,P1,P2,P3,每個組分成8位,分別是P0.0--P0.7,P1.0--P1.7,P2.0--P2.7,P3.0--P3.7.每個人對單片機的理解都不一樣,我當初把單片機理解成下面這個圖

32個I/O口分布如圖,單片機每個I/O口占一個小方格,小方格具備存儲電荷功能,滿電荷的時候,小方格的邏輯電平為1,對應的實際電壓是5V,沒有電荷的時候邏輯電平是0,對應實際電壓是0(確切來說是小于0.7V,其實0.7伏電壓做不了什么事情,就可以認為是0V啦).那我們編寫程序的時候,就是讓小方格要么是1(5V),要么是0(0V).
   下面這些操作是假設你的編程軟件安裝成功,并且你會建立第一個工程文件的前提下進行.我就編一個小成程序讓下面圖的小燈亮起來.


程序代碼:
#inlcude--程序的頭文件,作用是把程序代碼和單片機內部的硬件 結構聯系上,初學的朋友不要過多鉆這句話,反正每次寫程序都要寫這句話就對了.
#define uint unsigned int---定義一個無符號整型數據類型變量
#define uchar unsigned char----定義一個無符號字符型數據變量

void main()--程序主函數,一定要記住程序的函數結構寫法,都是固定的.程序             執行都是從主函數開始執行.
{
P2=0Xfe;
while(1);

}
P2=0Xfe;把一個數0Xfe付給P2口,0X代表16進制,這時P2口的狀態如圖





P2=0Xfe這句話的目的就是讓P2.0口的邏輯電平為0,實際電壓為0,這樣LED兩端就會有電壓差,從而使其點亮.可能有人不知道16進制和2進制是怎么回事.好簡單的,0000-0,0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,1001-9,1010-a,1011-b.1100-c,1101-d,1110-e,1111-f.16進制就是從0數到f,一共16個數,完了.細心的朋友可能會發現,讓P2.0發光,就是讓P2口最后一位為0,那只要P2口最后一位為0,LED就會發光,看上面的2進制數值,只要最后一位為0就達到目的,如P2=0X00,P2=0X02,P2=0Xdc....等等.
這種操做方法叫總線操作方法.讓P2.0的LED發光還可以用位操作的方法.
程序代碼如下:
#inlcude
#define uint unsigned int
#define uchar unsigned char
sbit D1=P2^0;
void main
{
D1=0;
while(1);

}

sbit D1=P2^0;這句話意思是把P2^0定義為一個變量D1,操作D1就可以操作P2.0.有的人會有疑問,這多麻煩了,直接P2.0=0,不就完了嗎?不可以,這樣寫編譯器不認識這種格式,所以大家一定要記得如何定義一個位變量,格式不能改了,一定是sbit D1=P2^0,當然D1可以是其他字母,A1,B2,C1都沒有問題.
總結一下,讓LED發光辦法2個,總線操作,位操作.學習懂得總結進步才快.(待續)
全部回復(3)
正序查看
倒序查看
janyao
LV.1
2
2009-09-03 11:32
講得很詳細易懂,但while(1)是啥意思?還有前面定義的數據變量,我在其他教程看到不需要這個啊?

直接是:
#include
void main()
{
P1=0xfd;
}
0
回復
yaojiajia
LV.1
3
2009-09-03 14:25
@janyao
講得很詳細易懂,但while(1)是啥意思?還有前面定義的數據變量,我在其他教程看到不需要這個啊?直接是:#includevoidmain(){P1=0xfd;}
可能是寫的太倉促了,這個也是我寫程序的習慣吧!因為我以后發貼while(1)的使用率達到90%以上.
其實這個程序實際上是這樣的:
void main()
{
P2=0xff;---單片機上電的時候,關掉所有的LED.
while(1)---這是一個條件判斷語句,只要wihle()括弧里的表達式為真(邏輯直為1,那么單片機就會執行while 語句里的語句(也就是大括弧里的語句),反之就不執行.
{
P2=0Xfe;---這條語句將會一直被執行,所以燈一直在亮.
}
}
0
回復
janyao
LV.1
4
2009-09-07 08:48
@yaojiajia
可能是寫的太倉促了,這個也是我寫程序的習慣吧!因為我以后發貼while(1)的使用率達到90%以上.其實這個程序實際上是這樣的:voidmain(){P2=0xff;---單片機上電的時候,關掉所有的LED.while(1)---這是一個條件判斷語句,只要wihle()括弧里的表達式為真(邏輯直為1,那么單片機就會執行while語句里的語句(也就是大括弧里的語句),反之就不執行.{P2=0Xfe;---這條語句將會一直被執行,所以燈一直在亮.}}
多謝指教,我也自己查詢了相關資料,明白了它的意思,希望你的經驗繼續寫下去!
0
回復
主站蜘蛛池模板: 伊人精品久久久 | 欧美精品羞羞答答 | 亚洲综合无码无在线观看 | 8x福利第一导航 | 精品人妻伦九区久久AAA片69 | 污视频在线免费观看网站 | 亚洲福利视频免费观看 | 久久久久久精品人妻免费网站 | 想找个天天能干到我爽的男人 | 就去吻亚洲精品欧美日韩在线 | 拔萝卜高清在线观看 | 精品国产自在精品国产浪潮 | 欧美日韩日本国产 | 欧美在线视频日韩 | 中旅在线 | 国产午夜福利精品久久 | 亚洲成av人片在www鸭子 | 国产精品久久久久久福利 | 亚洲AV无码乱码在线观看四虎 | 91九色视频在线 | 国内精品一区二区三区 | 伊人天天色 | 白人av| 红桃视频免费看 | 再见爱人1在线完整免费观看 | 亚洲一级片av | 短裙公车被直接进入被c视频在线 | 我们的视频免费观看高清 | 国产中出在线观看 | 小Sao货撅起屁股扒开c打视频 | 亚洲精品日本无v一区 | 黄色免费网址在线观看 | 大地影视资源在线观看视频在线观看免费 | 久久er这里只有精品 | 国产97免费视频 | 91精品啪在线观看国产60岁 | 久久精品国产免费看久久精品 | 精品欧美视频 | 老熟妇高潮一区二区三区 | 我要看一级黄色片 | 久久无码中文字幕免费影院 |