⑴ 已經有c語言基礎,但是還是看不懂單片機的c編程...如何是好
根據你的問題,我把單片機的C語言程序分成3塊:
1、純粹的應用級運算或數據處理類的函數或子程序。比如獲得一個四則運算的結果等。這部分程序代碼以你的基礎肯定能讀懂,因為C51和PC機上的C語言都是一樣的。
2、針對單片機自身的硬體控製程序等。這部分軟體其實內容不多,如果了解單片機的結構及各主要模塊的功能就能理解個大概:比如定時器怎麼用、怎樣設定初值、怎樣啟動,又比如如何在單片機的埠輸出高電平或是輸出低電平等等。
3、針對單片機以外的硬體控制子程序或函數。比如8個8位的LED數碼管,如何掃描控制其顯示內容,如何採集單片機系統中的哪個按鍵被按下了等。這部份軟體就需要你去了解單片機最常用的外圍電路的工作原理後才能理解。
總之,需要有一定的硬體基礎才能讀懂單片機的C語言,至於方法:
1、系統的學習單片機的基本結構和原理。無論針對哪個應用最基本的內容都是相似的。熟悉後拿來任何一個程序都能快速的將其拆分,明白各模塊大致的用途。
2、有針對性的去了解單片機以外其它的電路的功能及實現原理。這一點可以邊應用邊學習,任何人都不敢說所有的硬體都了解,都是邊學邊用。
⑵ 怎樣能讀出51單片機里的程序結構
單片機中的程序若在燒錄時進行了加密處理,則無法直接讀取,這確保了程序的安全性。然而,如果程序未加密,我們確實可以通過使用特定的燒錄軟體來讀取程序內容。不過,這些內容通常是以十六進制的機器碼形式呈現,對於大多數人來說,要理解其含義並不容易。
為了更好地理解單片機程序的結構,我們首先需要明白,程序本質上是一系列指令的集合,這些指令以二進制形式存儲在單片機的內存中。以51單片機為例,其程序存儲器通常分為代碼段和數據段,代碼段存儲的是機器指令,數據段則用於存放數據。通過分析這些段落,我們可以逐步解析程序的結構。
在沒有加密的情況下,使用燒錄軟體讀取程序時,你會看到一系列復雜的十六進制數。這些數代表的是具體的機器指令和數據。為了將這些復雜的十六進制數轉化為有意義的信息,你需要具備一定的計算機和匯編語言知識,能夠將這些數翻譯成對應的匯編指令或機器語言。
例如,假設你讀取到一個十六進制數`0x0100`,這可能代表一條跳轉指令,而`0x0101`則可能代表一條載入數據到寄存器的指令。通過逐步解析這些指令,你可以理解程序的邏輯流程。
另外,一些高級工具和軟體可以幫助我們更好地理解這些復雜的程序。例如,反匯編工具可以將機器碼反匯編成匯編語言,使程序更容易閱讀。此外,調試器可以讓我們在程序運行時逐步執行,觀察每條指令的效果,這對於理解程序結構非常有幫助。
總的來說,讀取並理解51單片機中的程序結構需要一定的技術知識和工具。通過掌握一定的匯編語言知識,使用適當的工具,我們可以將復雜的機器碼轉化為易於理解的指令,從而更好地理解程序的邏輯和功能。