『壹』 單片機C語言程序分析
uint8_t *ptr uint8_t len 這是傳入參數。 len可能是長度,ptr可能指向的是一個數組。
^= 按位異或後賦值。
crc ^= *ptr++; //首先將數組第一位異或後復制給Crc。之後ptr再向前一步,簡單理解就是指向數組的下一位。
for(i = 0;i < 8;i++) { if(crc & 0x01) crc = (crc >> 1) ^ 0x8C; else crc >>= 1; }
//將取到數組第一位值,與0x01上。如果非零,crc就需要右移一位,再與0x8C異或。否則右移1位。每位數組值要做8次。
while(len--) //表示要判斷數組內len個值。或則說是取得數組內len長度的元素個數。
return crc; //len個數組值都作完以後,將Crc返回。
我想你需要了解一下 0x01的意義,0x8C的意義。
0x01 = 0000 0001
0x8c = 1000 1100
沒看到啊,已經有人答完了。哎,早知道就不寫這么多字了。
『貳』 會C語言 但 看不懂單片機C語言程序!
會C語言的話就容易多啦,但要看你的C語言到哪個層次,另外對於單片機程序這種和硬體連接緊密的程序,僅有C語言是不夠的,還需要了解單片機的硬體,用C語言編程相對匯編容易,可以簡單看看PIC16F716的使用手冊,然後從最簡單的程序開始,慢慢就行了,如果還是吃力的話建議可以先了解最簡單的51單片機。了解單片機硬體原理,再會C語言,就可以寫
單片機程序了
『叄』 單片機C語言程序,看不懂,求講解
「T0中斷服務程序不是一個子程序嗎?但沒看見在主程序中調用這個子程序啊,求講解這個程序命令的運行過程,定時器怎麼中斷的?」
該子程序是在硬體產生中斷的時候,跳轉到相應中斷入口後,再跳轉到這個中斷服務程序的。請注意函數後面的「interrupt x」聲明,這是C51的擴展內容。
「用示波器測波形是測p1.0引腳,為什麼是這個引腳,怎麼確定的?p1_0不是個變數名嗎?」
P1_0這個符號在前面的頭文件 t89c51cc02.h 中有定義。至於「為什麼是這個引腳」,是由硬體設計及本程序共同確定的。P1_0(不是你寫的p1_0,C語言要區分大小寫哦)代表P1口的第0管腳,在頭文件中通過sbit定義。
「為什麼T0中斷服務程序和主程序中都有T0的初值,設置還是一樣,他們有什麼關系?」
主程序前面的是對Timer0初始化,賦以初值。執行 TR0 = 1; 這一句以後,Timer0就開始運行了——TL0與TH0組成的13位計數器開始不斷遞增。當13位全部為1之後,再遞增就全部為0,此時溢出事件會觸發產生定時器0,同時計數器仍然在繼續計數——為了讓時間間隔保持一致,就需要再度將計數器賦以初值。
『肆』 單片機c語言編程
單片機C語言程序設計入門課程,說起來容易,說起來難。學習單片機C語言,首先要了解這兩個東西是什麼。單片機入門編程主要是學習C語言,其次是電路和編程語言。單片機C語言程序設計學習中必讀的模擬電、數字電、電路三本書,為接下來的學習做鋪墊。看書的目的是因為網上教程太多,容易出現偏差。其實只要能懂電路原理,就能開發單片機軟體。簡介單片機又稱單片微控制器,不是執行某種邏輯功能的晶元,而是將一個計算機系統集成到一個晶元中。相當於一台微型計算機,與計算機相比,單片機只是缺少I/O設備。綜上所述,晶元變成了電腦。它體積小、重量輕、價格低,為研究、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理和結構的最佳選擇。單片機已經廣泛應用於智能儀器、實時工業控制、通訊設備、導航系統、家用電器等領域。自20世紀90年代以來,單片機技術得到了發展。隨著時代的進步和科技的發展,這項技術的實際應用也越來越成熟,單片機被廣泛應用於各個領域。如今,人們越來越重視單片機在智能電子技術中的發展和應用,單片機的發展進入了一個新的時期。無論是自動測量的實踐,還是智能儀器的實踐,都可以看到單片機技術的身影。在當前的產業發展過程中,電子產業是一個新興的產業。在工業生產中,人們已經成功地應用了電子信息技術,將電子信息技術與單片機技術相結合,有效地提高了單片機的應用效果。作為計算機技術的一個分支,單片機技術在電子產品領域的應用豐富了電子產品的功能,為智能電子設備的開發和應用提供了新的途徑,實現了智能電子設備的創新和發展。以上內容參考:網路-單片機
你應該先學習C語言。你可以讀譚浩強和單片機的書,循序漸進。別擔心。基礎好,什麼都能說。
如果你沒學過微機原理,建議你先學完再買本上海馬超的書,一周就能看懂了~
不認同無意義的光。《C編程》確實創造了一時的輝煌,這種輝煌很可能會延續下去,但不代表就是最好的。這本書之所以流行,是因為當時沒有辦法學習C,這本書很好理解。但是現在這本書太落後了,甚至3版還在用老標准,現在大家普遍用C99標准。老標准不能用Dev C編譯而且好像提問者應該知道C的基礎,推薦《單片機C語言編程及實例》這本書。直接搜索就能找到PDF版本的下載。-馬克·提埃洛
看譚浩強老師的。清華大學出版的《飢餓》。
『伍』 如何理解C語言
如下圖所示:
『陸』 如何快速的學會單片機C語言編程
很多想學單片機的人問我的第一句話就是怎樣才能學好單片機?對於這個問題我今天就我自己是如何開始學單片機,如何開始上手,如何開始熟練這個過程給大家講講。
先說說單片機,一般我們現在用的比較多的的MCS-51的單片機,它的資料比較多,用的人也很多,市場也很大。就我個人的體會怎麼樣才能更快的學會單片機這門課。單片機這門課是一項非常重視動手實踐的科目,不能總是看書,但是學習它首先必須得看書,因為從書中你需要大概了解一下,單片機的各個功能寄存器,而說明白點,我們使用單片機就是用軟體去控制單片機的各個功能寄存器,再說明白點,就是控制單片機那些管腳的電平什麼時候輸出高,什麼時候輸出低。由這些高低電平的變化來控制你的系統板,實現我們需要的各個功能。至於看書,只需大概了解單片機各管腳都是干什麼的?能實現什麼樣的功能?第一次,第二次你可能看不明白,但這不要緊,因為還缺少實際的感觀認識。所以我總是說,學單片機看書看兩三天的就夠了,看小說你一天能看五六本,看單片機你兩三天看兩三遍就夠了,可以不用仔細的看。推薦一本書,就這一本就足夠,書名是《新編MCS-51單片機應用設計》,是哈爾濱工業大學出版社出的的,作者是張毅剛。大概了解一下書上的內容,然後實踐,這是非常關鍵的,如果說學單片機你不實踐那是不可能學會的,關於實踐有兩種方法你可以選擇,一種方法:你自己花錢買一塊單片機的學習板,不要求功能太全的,對於初學者來說你買功能非常多的那種板子,上面有很多東西你這輩子都用不著,我建議有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD或DA(原理一樣)、液晶、蜂鳴器,這就差不多了。如果上面我提到的這些,你能熟練應用,那可以說對於單片機方面的硬體你已經入門了,剩下的就是自己練習設計電路,不斷的積累經驗。只要過了第一關,後面的路就好走多了,萬事開頭難,大家可能都聽過。方法二:你身邊如果有單片機方面的高手,向他求助,讓他幫你搭個簡單的最小系統板。對於高手來說,做個單片機的最小系統板只需要一分鍾的時間,而對於初學者可就難多了,因為只有對硬體了解了,才能熟練運用。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你最好是自己買上一塊,畢竟自己有一塊要方便的多,以後做單片機類的小實驗時都能用得上,還省事。
有了單片機學習板之後你就要多練習,最好是自己有台電腦,一天少看電影,少打游戲,把學習板和電腦連好,打開調試軟體坐在電腦前,先學會怎麼用調試軟體,然後從最簡單的流水燈實驗做起,等你能讓那八個流水燈按照你的意願隨意流動時你已經入門了,你會發現單片機是多麼迷人的東西啊,太好玩了,這不是在學習知識,而是在玩,當你編寫的程序按你的意願實現時你比做什麼事都開心,你會上癮的,真的。做電子類的人真的會上癮。然後讓數碼管亮起來,這兩項會了後,你已經不能自拔了,你已經開始考慮你這輩子要走哪一行了。就是要這樣練習,在寫程序的時候你肯定會遇到很多問題,而這時你再去翻書找,或是問別人,當得到解答後你會記住一輩子的,知識必須用於現實生活中,解決實際問題,這樣才能發揮它的作用,你自己好好想想,上了這么多年大學,天天上課,你在課堂上學到了什麼?是不是為了期末考試而忙碌呢?考完得了90分,哈哈哈好高興啊,下學期開學回來忘的一干二凈,是不是?你學到什麼了?但是我告訴你單片機一旦學會,永遠不會忘了。另外我再說說用匯編和C語言編程的問題。很多同學大一二就開設了C語言的課,我也上過,我知道那時天天就是幾乘幾,幾加幾啊,求個階乘啊。學完了有什麼用?讓你用C語言編單片機的程序你是不是就傻了?書上的東西我們必須要會運用。單片機編程用C語言或匯編語言都可以,但是我建議用C語言比較好,如果原來有C語言的基礎那學起來會更好,如果沒有,也可以邊學單片機邊學C語言,C語言也挺簡單,只是一門工具而已,我勸你最好學會,將來肯定用得著,要不你以後也得學,你一點匯編都不會根本無所謂,但你一點C語言都不會那你將來會吃苦頭。匯編寫程序代碼效率高,但相對難度較大,而且很羅嗦,尤其是遇到演算法方面的問題時,根本是麻煩的不得了,現在單片機的主頻在不斷的提高,我們完全不需要那麼高效率的代碼,因為有高頻率的時鍾,單片機的ROM也在不斷的提高,足夠裝得下你用C語言寫的任何代碼,C語言的資料又多又好找,將來可移植性非常好,只需要變一個IO口寫個溫度感測器的程序在哪裡都能用,所以我勸大家用C語言。
總結上面,只要你有信心,做事能堅持到底,有不成功不放棄的強烈意志,那學個單片機來說就是件非常容易的事。
步驟:1.找本書大概了解一下單片機結構,大概了解就行。不用都看懂,又不讓你出書的。(三天)
2.找學習板練習編寫程序,學單片機就是練編程序,遇到不會的再問人或查書。 (二十天)
3.自己網上找些小電路類的資料練習設計外圍電路。焊好後自己調試,熟悉過程。 (十天)
4.自己完全設計具有個人風格的電路,產品,。。。你已經是高手了。 。。。。
看到了嗎?下功夫一個多月你就能成為高手,我就講這么多了,學不學得會,下不下得了功夫就看你的了。
參考資料:
『柒』 單片機c語言程序,看不懂 ,求講解
本文分三個步驟介紹12864的內部資源原理,指令集詳細講解,以及應用例子。
對12864的所有操作概括起來有4種:
1)、讀忙狀態(同時讀出指針地址內容),初始化之後每次對12864的讀寫均要進行忙檢測。
2)、寫命令:所有的命令可以查看指令表,後續講解指令的詳細用法。寫地址也是寫指令。
3)、寫數據:操作對象有DDRAM、CGRAM、GDRAM。
4)、讀數據:操作對象也是DDRAM、CGRAM、GDRAM。
關於編碼在DDRAM中的存儲需要說明事項如下:
1)、每次對DDRAM的操作單位是一個字,也就是2個位元組,當往DDRAM寫入數據時,首先寫地址,然後連續送入2個位元組的數據,先送高位元組數據,再送低位元組數據。讀數據時也是如此,先寫地址,然後讀出高位元組數據,再讀出低位元組數據(讀數據時注意先假讀一次)。
2)、顯示ASCII碼半寬字元時,往每個地址送入2個位元組的ASCII編碼,對應屏幕上的位置就會顯示2個半寬字元,左邊的為高位元組字元,右邊的為低位元組字元。
3)、顯示漢字時,漢字編碼的2個位元組必須存儲在同一地址空間中,不能分開放在2個地址存放,否則顯示的就不是你想要的字元。每個字中的2個位元組自動結合查找字模並顯示字元。所以,如果我們往一個地址中寫入的是一個漢字的2位元組編碼就會正確顯示該字元,編碼高位元組存放在前一地址低位元組,編碼低位元組存放在後一地址高位元組,顯然他們就不會結合查找字模,而是與各地址相應位元組結合查找字模。
『捌』 單片機C語言編程教程
單片機c語言編程入門教程說難不難,說易不易,學習單片機c語言首先就要明白這兩樣東西是啥?單片機入門編程主要是學C語言,其次就是電路跟編程語言。
單片機c語言編程學習必看的關於模電,數電,電路這三本書,為接下來的學習做鋪墊。看書的目的是因為網上的教程太多太混雜,容易帶偏,做單片機軟體開發其實只要看得懂電路原理就可以了。
簡介
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。
概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。
從二十世紀九十年代開始,單片機技術就已經發展起來,隨著時代的進步與科技的發展,目前該技術的實踐應用日漸成熟,單片機被廣泛應用於各個領域。現如今,人們越來越重視單片機在智能電子技術方面的開發和應用,單片機的發展進入到新的時期。
無論是自動測量還是智能儀表的實踐,都能看到單片機技術的身影。當前工業發展進程中,電子行業屬於新興產業,工業生產中人們將電子信息技術成功運用,讓電子信息技術與單片機技術相融合,有效提高了單片機應用效果。
作為計算機技術中的一個分支,單片機技術在電子產品領域的應用,豐富了電子產品的功能,也為智能化電子設備的開發和應用提供了新的出路,實現了智能化電子設備的創新與發展。
以上內容參考:網路-單片機
『玖』 已經有c語言基礎,但是還是看不懂單片機的c編程...如何是好
根據你的問題,我把單片機的C語言程序分成3塊:
1、純粹的應用級運算或數據處理類的函數或子程序。比如獲得一個四則運算的結果等。這部分程序代碼以你的基礎肯定能讀懂,因為C51和PC機上的C語言都是一樣的。
2、針對單片機自身的硬體控製程序等。這部分軟體其實內容不多,如果了解單片機的結構及各主要模塊的功能就能理解個大概:比如定時器怎麼用、怎樣設定初值、怎樣啟動,又比如如何在單片機的埠輸出高電平或是輸出低電平等等。
3、針對單片機以外的硬體控制子程序或函數。比如8個8位的LED數碼管,如何掃描控制其顯示內容,如何採集單片機系統中的哪個按鍵被按下了等。這部份軟體就需要你去了解單片機最常用的外圍電路的工作原理後才能理解。
總之,需要有一定的硬體基礎才能讀懂單片機的C語言,至於方法:
1、系統的學習單片機的基本結構和原理。無論針對哪個應用最基本的內容都是相似的。熟悉後拿來任何一個程序都能快速的將其拆分,明白各模塊大致的用途。
2、有針對性的去了解單片機以外其它的電路的功能及實現原理。這一點可以邊應用邊學習,任何人都不敢說所有的硬體都了解,都是邊學邊用。