大家都知道一般的并行擴展總線---地址總線,數(shù)據(jù)總線和控制總線一般是相互獨立的。但單片機由于受引腳的限制,P0口為低8位地址/數(shù)據(jù)復用口。其讀寫時序符合intel8080控制時序。使用外部擴展時,wrrd 等控制引腳不需要
新PIC16Bootloader 在完成HyperBootloader之后(具體詳見我之前的隨筆),我決定重寫PIC bootloader。為什么呢? HyperBootloader是由PC端的串口通信軟件--超級終端來傳送Hex數(shù)據(jù)的,一行一行地傳送,每傳送一
匯編語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。C語言是一種結構化的高級語言。
對程序進行優(yōu)化,通常是指優(yōu)化程序代碼或程序執(zhí)行速度。優(yōu)化代碼和優(yōu)化速度實際上是一個予盾的統(tǒng)一,一般是優(yōu)化了代碼的尺寸,就會帶來執(zhí)行時間的增加,如果優(yōu)化了程序的執(zhí)行速度,通常會帶來代碼增加的副作用,很難魚與熊
HyperBootloader_dsPIC HyperBootloader_dsPIC是我用C語言實現(xiàn)的UART bootloader, 采用串口通信,適用于Microchip的dsPIC30, dsPIC33,同樣適用于PIC24。單片機端bootloader是用XC16編譯的,電腦端的通信軟件
內存這個大話題key:心里一定要有內存的邏輯圖。程序是什么?程序 = 代碼 + 數(shù)據(jù)代碼放在Flash中代碼段,可變的數(shù)據(jù)(全局變量、局部變量)放在內存中。運行程序的目的是什么?得到運行結果; 關注運行過程;既要結果又要
注:keil中單片機C編程若指針沒有指向提前聲明的變量,會產生混亂eg:情景一: 情景二:Type *p,*q; Type *p,*q,pp,qq;給指針p賦值; p=&pp;給指針q賦值; q=&qq;p或q的值會出問題 正常,
新PIC18 Bootloader PhsBoot_v3.0是我最新用C語言實現(xiàn)的PIC bootloader, 采用串口通信,適用于PIC18, 并為其用C#寫了PC端通信程序PhsLoader_v3.0。PhsLoader_v3.0通過串口按照自定義的通信協(xié)定發(fā)送數(shù)據(jù)PhsBoo
HyperBootloader_PIC18_J 和 HyperBootloader_PIC18_None_J 完成PIC16 bootloader (詳細情況請閱讀我的上一篇隨筆《自己用C語言寫單片機PIC16serial bootloader》) 后,接著就開始寫PIC18的UART bootloader。
volatile關鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如操作系統(tǒng)、硬件或者其它線程等。遇到這個關鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優(yōu)化,從而可以提供對特殊地址的穩(wěn)定訪問
編了個PIC的項目,對C語言里的位運算還是蠻有感悟的,特此記錄一下。譬如說,在程序中定義了一個char類型的變量,purge_short_enable_flag,//bit-- start short circuit circle timing//bit--short circuit enable/
/************************************************//*函數(shù)功能:初始化UART口*//************************************************/voidUART_init(uint32_tbaudrate){uint32_tDL_value,Clear=Clear;//(用這種方式
在一個程序的編寫過程中,隨著代碼量的增加,如果把所有的語句都寫到 main 函數(shù)中,一方面程序會顯得的比較亂,另外一個方面,當同一個功能需要在不同地方執(zhí)行時,我們就得再重復寫一遍相同的語句。此時,如果把一些
大家在開發(fā)嵌入式產品時首先會想到用控制器的匯編語言編寫監(jiān)控程序,主要原因是:①匯編語言生成的程序對應的二進制代碼少,程序執(zhí)行要比高級語言生成的程序快;②控制器剛問世時,沒有相應的高級語言可供使用;③存儲器的價格問題和尋址空間的限制。
1. 流水線被指令填滿時才能發(fā)揮最大效能,即每時鐘周期完成一條指令的執(zhí)行(僅指單周期指令)。如果程序發(fā)生跳轉,流水線會被清空,這將需要幾個時鐘才能使流水線再次填滿。因此,盡量少的使用跳轉指令可以提高程序執(zhí)
前言:有些程序每次執(zhí)行時不應該產生相同的結果,如游戲和模擬,此時隨機數(shù)就非常有用。下面這兩個函數(shù)合在一起使用能夠產生偽隨機數(shù)(pseudo-random number):通過計算產生的隨機數(shù),可能有重復出現(xiàn),所以并不是真正
一.基礎知識1.聚合數(shù)據(jù)類型(aggregate data type)能夠同時存儲超過一個的單獨數(shù)據(jù)。C提供了兩種類型的聚合數(shù)據(jù)類型,數(shù)組和結構。(1)數(shù)組是相同類型的元素的集合,它的每個元素是通過下標引用或指針間接訪問來選擇的
一.前言1.編譯一個C程序涉及很多步驟。其中第一步驟稱為預處理(preprocessing)階段。C預處理器(preprocessor)在源代碼編譯之前對其進行文本性質的操作。2.它的主要任務包括刪除注釋、插入被#include指令包含的內容、
在C和C++語言開發(fā)中,指針、內存一直是學習的重點。因為C語言作為一種偏底層的中低級語言,提供了大量的內存直接操作的方法,這一方面使程序的靈活度最大化,同時也為bug埋下很多隱患。
雖然目前大多數(shù)DSP都支持C語言編程,但是在實際工程應用中,多是用C語言編寫流程控制,搭建工程框架。具體的算法模塊以及比較耗時的功能模塊還是采用匯編語言來編寫。因為用匯編語言進行編程可以利用電路。