2019-09-24動(dòng)手寫代碼之前必須的準(zhǔn)備工作

1.keil軟件的介紹和安裝

1.1晃酒、IDE概念

(1)IDE就是集成開發(fā)環(huán)境,就是一套用來開發(fā)的完整軟件系統(tǒng)
(2)keil是美國keil Software出的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)娩井。包括C編譯器算芯、宏匯編努咐、鏈接器嫂侍、庫管理、仿真測試

1.2漏设、keil uvision

(1)發(fā)展
(2)版本:1.2墨闲、1.3、1.4√(keil 4)郑口、1.5
(3)安裝包:https://pan.baidu.com/s/1shbyJBNnclmNoV3d-p0xNw 提取碼:aosw

1.3鸳碧、安裝和破解

win7版本以上的系統(tǒng)要用管理員身份運(yùn)行keil軟件和注冊(cè)機(jī)
破解:把注冊(cè)機(jī)打開盾鳞,在keil軟件的文件,license management賦值CID到注冊(cè)機(jī)上生成序列碼在復(fù)制到keil軟件杆兵。這種有注冊(cè)機(jī)的破解方式是公司為了更多人使用這個(gè)軟件而采取的一種方式雁仲。

1.4、keil和MDK

(1)本來只能用來開發(fā)51單片機(jī)琐脏,叫keil
(2)后來ARM公司受夠了keil軟件,基于keil擴(kuò)展了ARM的開發(fā)缸兔,主要用來開發(fā)ARM Cortex-M系列的單片機(jī)的程序(STM32)日裙,軟件名改成了MDK。
(3)上面keil 4的C51惰蜜,只能用來開發(fā)51單片機(jī)程序。如果要開發(fā)ARM Cortex-M系列的單片機(jī)還要擴(kuò)展安裝MDK安裝包抛猖。

2.keil的基本使用演示

2.1格侯、使用keil打開已有工程項(xiàng)目

(1)IDE(keil)來開發(fā)軟件,需要首先創(chuàng)建一個(gè)工程項(xiàng)目(project)财著,keil軟件需要一些工程項(xiàng)目文件來管理項(xiàng)目中的代碼联四。
(2)別人事先創(chuàng)建好的工程項(xiàng)目,我們可以使用直接打開撑教。打開的方式有2個(gè):
①進(jìn)入項(xiàng)目中雙擊(項(xiàng)目名.uvproj)項(xiàng)目文件打開
②keil軟件→project→open project→找到要打開的uvproj朝墩。(后綴名uv開頭的文件都是工程文件,軟件自動(dòng)生成)

2.2伟姐、編譯工程

(1)工程項(xiàng)目中有很多文件收苏,分3類:工程文件、源文件愤兵、目標(biāo)文件
①工程文件:就是keil軟件工作需要的文件鹿霸,后綴名由uv開頭,和我們寫程序無關(guān)秆乳;
②源文件:我們寫的源代碼懦鼠,就是我們變成編出來的;
③目標(biāo)文件:就是keil中的編譯器等工具把我們?cè)次募幾g后生成的文件矫夷,最終向單片機(jī)燒錄時(shí)需要目標(biāo)文件來燒錄進(jìn)去葛闷。
(2)我們工程剛創(chuàng)建好(空工程)時(shí)只有工程文件,此時(shí)我們要去編寫添加源代碼双藕,代碼寫好后就有了工程文件和源文件淑趾,此時(shí)編譯操作就可以得到目標(biāo)文件。
(3)編譯的時(shí)候可能會(huì)報(bào)錯(cuò)(errors)和報(bào)警告(warmings)忧陪,報(bào)錯(cuò)則排除錯(cuò)誤重新編譯扣泊,警告則可以適當(dāng)忽略近范。
(4)建議編譯時(shí)按rebuild按鈕。

2.3延蟹、keil中建立新工程

(1)建立新工程前建議先關(guān)閉之前的工程
(2)菜單欄:Project→new uVision Project评矩,選擇一個(gè)合適的目錄用來保存將來的工程項(xiàng)目,并輸入一個(gè)項(xiàng)目名阱飘。
(3)選CPU斥杜,選Atmel→AT89C51(無STC89C51)但兼容。點(diǎn)擊OK沥匈,彈出來選擇“是否添加標(biāo)準(zhǔn)的8051的起始代碼”蔗喂,選擇是,確定高帖。
(4)現(xiàn)在可以自己寫代碼缰儿,或者直接復(fù)制一個(gè)已經(jīng)寫好的代碼文件進(jìn)來,并且添加到我們的工程項(xiàng)目中(右鍵項(xiàng)目工程散址,add Source file)乖阵,編譯预麸。
(5)編譯完成后,發(fā)現(xiàn)一個(gè)問題:沒有可以用來燒錄的.hex文件师崎。編譯時(shí)生成的文件有很多,但是只有.hex文件是我們需要的齐蔽,其他很多是中間文件含滴。
(6)解決方案是再多配置一項(xiàng)配置丐巫,打開快速菜單欄中的“Target Options”,在彈出的多選框里碑韵,點(diǎn)擊output菜單祝闻,點(diǎn)選下面的create HEX file,然后關(guān)閉菜單联喘,重新rebuild。

3.C語言基本介紹

3.1叭喜、匯編語言與C語言

(1)匯編語言編程比C語言難
(2)用匯編或者C語言都能完成任務(wù)蓖谢,寫出程序
(3)推薦路線:先用C語言入門學(xué)會(huì)單片機(jī)闪幽,然后去擴(kuò)展學(xué)習(xí)匯編。

3.2、標(biāo)準(zhǔn)C語言和keil C51的C語言

(1)C語言并不是專門為51單片機(jī)發(fā)明的腊嗡,C語言的用途是很廣的拾酝。
(2)標(biāo)準(zhǔn)C語言就是獨(dú)立于各種應(yīng)用領(lǐng)域稱為標(biāo)準(zhǔn)C語言,和各種平臺(tái)的具體的C語言有微小差異客们。

4.C語言基本概念

關(guān)鍵字底挫、函數(shù)脸侥、變量、頭文件官边、源文件注簿、可執(zhí)行程序诡渴、注釋

5.整體流程梳理

5.1、程序開發(fā)過程

(1)源代碼編寫
(2)編譯生成可執(zhí)行程序
(3)燒錄

5.2玩徊、單片機(jī)工作流程

(1)單片機(jī)上電
(2)時(shí)鐘模塊起振恩袱,CPu有了時(shí)鐘節(jié)拍,單片機(jī)內(nèi)部各模塊開始工作
(3)CPU從ROM中逐條讀取可執(zhí)行程序指令來執(zhí)行潭辈,RAM存儲(chǔ)變量(對(duì)應(yīng)C語言程序中定義的變量)把敢,配合程序執(zhí)行谅辣。直到關(guān)機(jī)桑阶。

5.3蚣录、程序是調(diào)出來的(邏輯思維很重要)

(1)程序不可能一次寫好達(dá)到要求
(2)先解決編譯時(shí)錯(cuò)誤
(3)在解決運(yùn)行時(shí)問題

6.跟著數(shù)據(jù)手冊(cè)學(xué)單片機(jī)

6.1、STC90C51介紹

(1)12T荔泳、6T和1T的問題:典型的51單片機(jī)都是12T的玛歌,12T的意思就是51單片機(jī)加內(nèi)部會(huì)對(duì)外部時(shí)鐘頻率進(jìn)行12分頻后再給CPU(如果外部晶振是12MHZ,則外部時(shí)鐘頻率就是112MHZ沾鳄,內(nèi)部CPU主頻就是12MHZ/12=1MHZ)译荞,6T的含義就是CPU時(shí)鐘頻率=外部時(shí)鐘頻率/6休弃,1T的含義就是CPU時(shí)鐘頻率=外部時(shí)鐘頻率/1,。所以1T單片機(jī)是最快的篙骡。

6.2糯俗、STC90C51內(nèi)部結(jié)構(gòu)框圖

(1)總線,單片機(jī)內(nèi)部模塊與模塊之間的通信線
(2)模塊杖玲,單片機(jī)內(nèi)部各自獨(dú)立具有一定功能的單元
(3)要求:能看到懂圖例摆马,知道圖中分別表示的是什么鸿吆。當(dāng)我們對(duì)CPU內(nèi)部元件模塊理解很少的時(shí)候惩淳,其實(shí)從框圖看不出什么思犁。框圖中實(shí)際上傳達(dá)了很多信息,將來回顧的時(shí)候能看懂就行托呕。

6.3项郊、單片機(jī)管腳圖

(1)DIP封裝和SMD封裝
(2)引腳編號(hào)和名字
每一個(gè)引腳都有個(gè)編號(hào)斟赚,這個(gè)編號(hào)主要看文檔時(shí)文檔里用來描述這個(gè)引腳的作用時(shí)做標(biāo)記用的拗军,跟編程是無關(guān)的发侵。所以一般引腳編號(hào)并不重要刃鳄。每一個(gè)引腳除了編號(hào)外還有名字,這個(gè)引腳的名字比較重要挪鹏。(如p01讨盒、p02這些就是CPU延伸出來的引腳)因?yàn)檫@些引腳名字和我們將來在編程中控制這個(gè)引腳時(shí)的名字是一樣的,所以引腳名字和編程有關(guān)肮蛹。

6.4伦忠、關(guān)于仿真器和ISP

(1)仿真器稿辙。早期開發(fā)單片機(jī)軟件時(shí)的輔助設(shè)備邻储。早期的單片機(jī)很多只能燒錄一次赋咽,或者不提供調(diào)試功能脓匿,軟件開發(fā)難度很大陪毡。后來單片機(jī)廠商就專門發(fā)明了一個(gè)設(shè)備叫仿真器毡琉,仿真器能夠仿真出單片機(jī)的效果桅滋,可以用來調(diào)試程序丐谋。所以那時(shí)候買了單片機(jī)之后還要買仿真器笋鄙,用仿真器來開發(fā)萧落,好了后燒錄到單片機(jī)中運(yùn)行践美。
(2)缺陷:
①一個(gè)仿真器對(duì)應(yīng)1個(gè)單片機(jī)型號(hào)
②仿真器很貴
(3)因?yàn)榉抡嫫骱苜F,所以有些公司開發(fā)出了軟件仿真器找岖,叫做軟仿真陨倡。比如keil中就自帶了軟件仿真功能。
(4)后來仿真器被放棄了许布,升級(jí)成了調(diào)試器兴革。調(diào)試器的思路是:程序開發(fā)還是在單片機(jī)中,只不過我們用一個(gè)專用的調(diào)試器可以在單片機(jī)中直接完成仿真蜜唾。典型的調(diào)試器如Jlink調(diào)試器比仿真器來說更加便宜杂曲,所以是更好的解決辦法。現(xiàn)在的單片機(jī)都支持調(diào)試器方案袁余。
(5)有時(shí)候開發(fā)程序并不使用調(diào)試器進(jìn)行單步調(diào)試擎勘,而是直接開發(fā)了程序后通過串口將程序下載到單片機(jī)中去運(yùn)行,然后根據(jù)運(yùn)行現(xiàn)象來直接判斷定位問題颖榜,然后解決問題,最后完成程序軟件開發(fā)欣硼。這種方式下不需要專用的硬件仿真器和調(diào)試器存淫,有時(shí)候會(huì)配合使用軟件仿真功能岩饼。還可以配合使用串口打印或者LED燈的指示等方式來進(jìn)行調(diào)試。
(6)總結(jié):3和4是我們現(xiàn)在開發(fā)軟件的主流方法。相對(duì)來說俭茧,沒經(jīng)驗(yàn)的人更喜歡3(有經(jīng)驗(yàn)的喜歡4)毡们;越往后(單片機(jī)到嵌入式到物聯(lián)網(wǎng))3用的越少,4用的越多。51單片機(jī)階段軟件仿真結(jié)合ISP下載方式來調(diào)試程序,STM32學(xué)習(xí)階段是調(diào)試器和ISP下載兩種方式結(jié)合,到了嵌入式階段就又返回到4的方式,以后都不會(huì)再用Jlink等調(diào)試器了庄敛。

6.4头滔、選型表瀏覽

6.5、單片機(jī)最小系統(tǒng)介紹

(1)單片機(jī)最小系統(tǒng)倾芝,就是指的單片機(jī)加上最少的外圍電路,然后還可以工作。
(2)最小系統(tǒng)中有3部分電路:供電電路、上電復(fù)位電路、晶振電路。

6.6疼邀、管腳定義

(1)電源等管腳拐袜、單片機(jī)上面有一些管腳是用來支持單片機(jī)工作的甜攀,比如VCC和GND啡捶、RST等,這些引腳和編程無關(guān),程序也無法操控這些引腳袄秩。這些引腳軟件工程師不用管背稼,硬件工程師很在意俯树。
(2)IO端口聘萨。IO端口是單片機(jī)和外部電路進(jìn)行交互的窗口,外部電路通過IO向單片機(jī)內(nèi)部輸入(input)信息狸页,單片機(jī)通過IO端口向外部輸出(output)信息址遇。單片機(jī)中大部分的引腳都是IO(p開頭的引腳都是IO)倔约,將來單片機(jī)內(nèi)部的程序運(yùn)行就會(huì)通過操作這些IO來和外部電路交互钾军,從而實(shí)現(xiàn)程序目的。
(3)管腳復(fù)用唇礁。普通引腳時(shí)一個(gè)引腳只有一個(gè)名字,一種作用漠另;有些引腳有2個(gè)名字(比如P3.0/RxD)性湿,這種引腳就有2中作用(意思不是說這個(gè)引腳同時(shí)做2件事情,而是說這個(gè)引腳在不同的時(shí)候可以工作在不同的2中模式下)满败,可以通過軟件編程讓這個(gè)引腳在某個(gè)時(shí)候工作在某種模式下肤频。一個(gè)引腳的2種模式之間沒有關(guān)聯(lián),配置在A模式下則和B模式下一點(diǎn)關(guān)系都沒有算墨。為什么要管腳復(fù)用宵荒?純粹是為了省引腳。

7.二進(jìn)制和IO端口

7.1、二進(jìn)制和bit位

7.2骇扇、位(bit,b)和字節(jié)(byte面粮,B)

1字節(jié) = 8位

7.3少孝、初始IO

(1)什么是IO,單片機(jī)的IO物理上表現(xiàn)為單片機(jī)的引腳熬苍。
(2)IO對(duì)單片機(jī)的重要意義稍走。
(3)單片機(jī)有多少IO。
(4)IO的組織形式柴底。首先一個(gè)單片機(jī)的眾多IO分為多個(gè)端口(port)婿脸,一個(gè)端口由若干個(gè)IO引腳(很多時(shí)候都是8個(gè))組成”ぃ可以理解為一個(gè)端口就是一組IO引腳狐树。
(5)如何編程控制IO。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸿脓,一起剝皮案震驚了整個(gè)濱河市抑钟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌野哭,老刑警劉巖在塔,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拨黔,居然都是意外死亡蛔溃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門篱蝇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贺待,“玉大人,你說我怎么就攤上這事态兴『莩郑” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵瞻润,是天一觀的道長喘垂。 經(jīng)常有香客問我,道長绍撞,這世上最難降的妖魔是什么正勒? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮傻铣,結(jié)果婚禮上章贞,老公的妹妹穿的比我還像新娘。我一直安慰自己非洲,他們只是感情好鸭限,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布蜕径。 她就那樣靜靜地躺著,像睡著了一般败京。 火紅的嫁衣襯著肌膚如雪兜喻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天赡麦,我揣著相機(jī)與錄音朴皆,去河邊找鬼。 笑死泛粹,一個(gè)胖子當(dāng)著我的面吹牛遂铡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晶姊,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扒接,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了们衙?” 一聲冷哼從身側(cè)響起珠增,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砍艾,沒想到半個(gè)月后蒂教,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脆荷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年凝垛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓谋。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梦皮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桃焕,到底是詐尸還是另有隱情剑肯,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布观堂,位于F島的核電站让网,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏师痕。R本人自食惡果不足惜溃睹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胰坟。 院中可真熱鬧因篇,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至商佑,卻和暖如春汽烦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莉御。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俗冻,地道東北人礁叔。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像迄薄,于是被迫代替她去往敵國和親琅关。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 生活的選擇多種多樣,在我看來冶伞,開心就好新症。可以在閑余時(shí)間里响禽,烹一份美味徒爹,享受自己的勞動(dòng)果實(shí),養(yǎng)一條可愛的大狗芋类,像照顧...
    你喜歡Eric嗎閱讀 270評(píng)論 0 1
  • 文/魚兒君 01 這是一趟開往海城的動(dòng)車隆嗅。 陳諾坐在靠窗的位置,看窗外飛過的風(fēng)景侯繁,思緒縹緲胖喳。 她打開自己的博客,更...
    魚兒君閱讀 695評(píng)論 4 24
  • 有些書是子子孫孫要讀的贮竟,有些書是百年前出版丽焊,百年后還要出版。 反復(fù)讀咕别,就象老牛反芻一樣粹懒。讀了之后,踐行它顷级。讀了之后...
    兜兜娘lwj閱讀 506評(píng)論 1 2
  • 桃色凋零春夢淺凫乖,簫風(fēng)空谷散枝遙。 青煙吹皺一池暖,戲雨閑鷗繞澗橋帽芽。 ——雨霖磐石
    雨霖磐石閱讀 378評(píng)論 18 10