單片機c語言基礎
❶ c語言與單片機C語言的區別 急求
單片機c語言比起普通C語言增加了一些基本的指令,變數的賦值是16進制,當然單片機c語言只牽涉到普通c語言的基礎部分。具體體現在:
1、單片機中C的語法一般都對 ANSI C有些擴展,及一些特殊寫法 如C51擴展的 data xdata bit sbit 一類的,還有一些中斷程序寫法 void int() interrput 1 一類的。
2、C是一門語言,由對應平台的編譯器編譯成對應平台匯編的程序,各平台的匯編不一樣,當然編譯器也不一樣 DOS上的TC2 TC3 WINDOWS上的VC 8051的C51都有自已的編譯器 。具體區別是由編譯器決的,只能參考對應的編譯手冊,即使同種平台不同的編譯器對C的擴展也有不同。
3、單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。
C51本質就是C,是為在單片機上使用C而出來的,如果C不牢固,還是多掌握一點C再學C51,不過新增的知識也不少,而且基本上跟C無關。
4、C只是一種高級語言。它除具有一般高級語言的功能特性外,它可以很好的操作底層的硬體介面。在C語言的基礎上,如果你把一些單片機的埠或特殊功能寄存器加於定義,使之方便於在 寫語句的時候,直接直觀的編寫。這樣就差不多是單片機C語言。
C語言的特性差不多都可以用於單片機C語言,因為它們的編譯機理都是一樣的。
(1)單片機c語言基礎擴展閱讀:
C語言:
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
單片機的C語言:
單片機軟體設計使用C語言作為編程開發軟體,採用模塊化的程序結構,設計了按鍵模塊程序、RFID模塊程序、日歷時鍾模塊程序、GPRS模塊程序、顯示存儲模塊程序等,並編寫系統主程序,將五個程序模塊組合在一起,實現單片機控制系統的整體功能。
51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,並具有良好的程序結構,適用於各種應用的程序設計,是目前使用較廣的單片機編程語言。
單片機的C語言採用C51編譯器(簡稱C51)。有C51產生的目標代碼短,運行速度高,所需存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言或PL/M51語言目標代碼混合使用
C語言-網路
單片機C語言-網路
❷ 《零基礎學單片機C語言程序設計》epub下載在線閱讀全文,求百度網盤雲資源
《零基礎學單片機C語言程序設計》電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/11HzXgEX91f_f9PxykWMhBQ
書名:零基礎學單片機C語言程序設計
出版年份:2012-3
頁數:506
內容簡介:
《零基礎學單片機C語言程序設計(第2版》內容簡介:單片機C51語言是目前最流行的單片機程序設計語言。《零基礎學單片機C語言程序設計(第2版》由淺入深、循序漸進地講解了C51語言的方方面面。《零基礎學單片機C語言程序設計(第2版》知識點覆蓋全面、結構安排緊湊、講解詳細、通俗易懂、實例豐富。內容包括51系列單片機開發環境和流程、程序設計基礎以及編程指南,並給出了一些常用的典型案例。《零基礎學單片機C語言程序設計(第2版》分為四篇,共21章,全面詳細地講述了單片機的程序設計基礎、編程指南及應用案例。首先介紹了51系列單片機的基本結構以及單片機的開發概述,其次詳細介紹了單片機程序設計的C51語言,隨後結合單片機的硬體資源細致講解了如何應用C51語言進行編程操作,最後結合實際應用,重點分析了在各個領域中常用到的一些典型案例,使讀者更加融會貫通地掌握C51語言,以供讀者在學習和工作中進行參考。在第21章中還介紹了部分常見的面試題及解答,方便讀者做好入職前的准備工作。
❸ 學習單片機要先學會C語言嗎
那是必須的,現在覺大多數單片機都支持C語言開發,不僅快而且便於移植到不同的單片機上,所以必須學會C語言。
❹ 學單片機需要什麼基礎知識
學單片機需要學習數字和模擬電子技術等基礎知識,還要有一定的C語言編程能力。
學習初期可以先買一個開發板,先學會單片機開發的環境搭建,主要是單片機集成開發軟體keil的配置,軟體項目的建立,程序的編譯和燒寫,先把點亮LED燈,流水燈和控制蜂鳴器這些最基本的程序完整的實現一遍。
之後可以把LED數碼管顯示,按鍵信號採集,去抖動,串口與PC機通信等例子的程序完整的編寫一遍,並且在開發板上把程序運行一下。
這時你已經對單片機開發有了初步了解了,已經邁出了單片機學習的第一步了。
學習單片機軟體方面需要的基礎知識:
軟體方面需要會寫簡單的C語言程序,雖然說單片機編程也可以使用匯編語言,但C語言在使用的方便性和可移植性上要比匯編語言好很多,所以初學者可以越過匯編語言,而直接學習C語言的單片機編程。
❺ 我要學單片機c語言編程, 是不是一定要學好c語言啊
C語言就是C語言,只不過針對的硬體不同,所以就有了單片機C語言!課程書本上的C是最基本的C,涉及到的演算法等,都是為其他使用C的地方做鋪墊的!基礎不好的話,單片機C的時候,遇到的問題會很多!
雖然C不是很精通,一樣可以編出來簡單的程序,但是當你編寫復雜程序的時候,就沒有戲了!
❻ 單片機c語言編程100個實例
51單片機C語言編程實例 基礎知識:51單片機編程基礎 單片機的外部結構: 1. DIP40雙列直插; 2. P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平) 3. 電源VCC(PIN40)和地線GND(PIN20); 4. 高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位) 5. 內置振盪電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍) 6. 程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機內部I/O部件:(所為學習單片機,實際上就是編程式控制制以下I/O部件,完成指定任務) 1. 四個8位通用I/O埠,對應引腳P0、P1、P2和P3; 2. 兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一個串列通信介面;(SCON,SBUF) 4. 一個中斷控制器;(IE,IP) 針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。 C語言編程基礎: 1. 十六進製表示位元組0x5a:二進制為01011010B;0x6E為01101110。 2. 如果將一個16位二進數賦給一個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。 3. ++var表示對變數var先增一;var—表示對變數後減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變數TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無限執行該語句,即死循環。語句後的分號表示空循環體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。 在某引腳輸出低電平的編程方法:(比如P2.7引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反後,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { 7. if( P1_1 == 1 ) //讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC 8. { P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 2 51單片機C語言編程實例 9. else //否則P1.1輸入為低電平GND 10. //{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 11. { P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC 12. } //由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平 13. } 將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:( 比如 P2 = NOT( P3 ) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { //取反的方法是異或1,而不取反的方法則是異或0 7. P2 = P3^0x0f //讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出 8. } //由於一直為真,所以不斷將P3取反輸出到P2 9. } 注意:一個位元組的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個埠P2,即是將P2.7、P2.6至P2.0,讀入到一個位元組的8位D7、D6至D0。 第一節:單數碼管按鍵顯示 單片機最小系統的硬體原理接線圖: 1. 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF 2. 接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF 3. 接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理 4. 接配置:EA(PIN31)。說明原因。 發光二極的控制:單片機I/O輸出 將一發光二極體LED的正極(陽極)接P1.1,LED的負極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向導通(導通時LED上的壓降大於1V),有電流流過LED,至發LED發亮。實際上由於P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小於(5V-1V)/10K = 0.4mA。只要P1.1輸出低電平GND,實際小於0.3V,LED就不能導通,結果LED不亮。 開關雙鍵的輸入:輸入先輸出高 一個按鍵KEY_ON接在P1.6與GND之間,另一個按鍵KEY_OFF接P1.7與GND之間,按KEY_ON後LED亮,按KEY_OFF後LED滅。同時按下LED半亮,LED保持後松開鍵的狀態,即ON亮OFF滅。 代碼 1. #include <at89x52.h> 2. #define LED P1^1 //用符號LED代替P1_1 3. #define KEY_ON P1^6 //用符號KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符號KEY_OFF代替P1_7 5. void main( void ) //單片機復位後的執行入口,void表示空,無輸入參數,無返回值 6. { 7. KEY_ON = 1; //作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1 8. KEY_OFF = 1; //作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1 9. While( 1 ) //永遠為真,所以永遠循環執行如下括弧內所有語句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1輸出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1輸出低,LED滅 13. } //松開鍵後,都不給LED賦值,所以LED保持最後按鍵狀態。 14. //同時按下時,LED不斷亮滅,各佔一半時間,交替頻率很快,由於人眼慣性,看上去為半亮態 15. } 數碼管的接法和驅動原理 一支七段數碼管實際由8個發光二極體構成,其中7個組形構成數字8的七段筆畫,所以稱為七段數碼管,而餘下的1個發光二極體作為小數點。作為習慣,分別給8個發光二極體標上記號:a,b,c,d,e,f,g,h。對應8的頂上一畫,按順時針方向排,中間一畫為g,小數點為h。 我們通常又將各二極與一個位元組的8位對應,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應8個發光二極體正好與單片機一個埠Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發光二極的亮與滅,從而顯示各種數字和符號;對應位元組,引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果將8個發光二極體的負極(陰極)內接在一起,作為數碼管的一個引腳,這種數碼管則被稱為共陰數碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內接在一起引出的,則稱為共陽數碼管,共同的引腳則稱為共陽極,8個負極則為段極。 以單支共陰數碼管為例,可將段極接到某埠Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表位元組數據
❼ C語言與單片機C語言的區別是什麼
單片機c語言比起普通C語言增加了一些基本的指令,變數的賦值是16進制,當然單片機c語言只牽涉到普通c語言的基礎部分。
❽ 關於單片機C語言的,這個每一句的意思是什麼呢我剛學
這個就太基礎了,建議你不要心急,一定要從最基本的學起,買一本C語言的書,一定要好的,好好學基礎先。給你簡單解釋一下:
首先這是一個延時子程序,函數名是Delay,void delay(unsigned int i)這句裡面的void 是指函數執行完成後返回的結果,現在是返回的無類型,就是沒有返回結果。在後面(unsigned int i)是要傳遞給函數運算的數,這個類型是無符號的整型變數。
在函數體,unsigned int j;這句是定義一個無符號整型變數j。
while(){ }這是C語言裡面的一個循環體,while(i--)就是i減,如果不為0,則執行for(j=100,j>0;j--); 為0就退出些函數。
for(j=100,j>0;j--); 這句也是C語言裡面的一個循環函數體,原型是for(;;){ }意思是先給j 一個整型數100,然後判斷j>0(如果j大於0); 就執行原型{ }裡面的內容,現在沒有{ },則就不用執行,則j --(j減一),又回到判斷j>0(如果j大於0),直到j小於0為止,也就是循環一百次。
❾ 單片機編程,c語言
如果你是想學計算機軟體開發的話,就不要去理會什麼單片機編程了。
但如果你是想學電子產品開發(嵌入式系統開發),那麼單片機編程就是基礎了。
電腦和單片機的區別是:電腦屬於通用計算機,而單片機是嵌入式微機。
通用計算機上的C語言和匯編編寫出來的程序是在本台計算機上運行的,當然你也可以讓它在其他電腦上運行。而單片機編程就不同了,單片機編程有專門的編譯器,不同的單片機編程軟體是不同的,而不像電腦上的c++6.0、TC或其他什麼編程軟體寫出來的程序就在本台電腦上運行,單片機的編程是在電腦上編寫程序並生成可執行文件。讓後把可執行文件下載到單片機裡面,也就是說單片機編程是面向單片機的,而通用計算機編程時面向通用計算機的。這就說明了為什麼不同的單片機需要不同的編程軟體,因為編程生成的可執行代碼都需要硬體的支持,通用機的硬體是「通用的」「兼容的」,而單片機型號不同硬體就會有差別
,所以需要不同的編譯器來支持了。
你會發現單片機編程的C語言和標准C會有差別,很多單片機C語言在標准C里是不被承認的,這個也能說明單片機和電腦的區別吧。
❿ 如何快速的學會單片機C語言編程
先從51單片機入手,一般都看郭天祥的視頻,建議這個時候自學畫PCB,自己製作51最小系統,並繪制51的外設模塊,通過編程式控制制模塊。
學習16的單片機,學習的是TI的16位MSP430單片機,然後把底層的庫自己寫一遍,這個時候就會發現其實所有的單片機就都是大同小異了,就是讀數據手冊,配置寄存器。
最後你可以用stm32這種32位的單片做一些東西,由於前面使用16位單片機寫過底層,這個時候調庫就比較輕松,做項目更多的集中在演算法和電路上,而不是單片機上了。
學習了以上這些,就會了單片機,進而可以學習更高端的ARM晶元,進而學習嵌入式操作系統的知識了,希望對你有所幫助。