volatile的意思是易變的、可變的,作用是限制編譯器優(yōu)化某些變量。首先看一段C51程序: Keil在優(yōu)化級別是為8時得到如下匯編代碼(部分未列出): 可以看到,變量d的值賦給x,y,z時,只有x中
Keil C51編譯器是一個完全支持ANSI標準的C語言編譯器,除少數(shù)關鍵地方外,KEILC和標準ANSI C語言是基本類似的;但是由于51單片機結構的特殊性,KEIL C進行了一些擴展?! EIL C51的擴展類型如
USB固件分為通用枚舉配置部分和類協(xié)議部分。以利用CH375主機端協(xié)議與大容量存儲設備(例如U盤等)通信為例,介紹固件編程中重要的函數(shù)及其實現(xiàn)方法?! ≈鳈C要想識別USB設備,必須獲得設備的各
FFT算法是計算離散傅里葉變換的方法,它大大地減少了運算量,縮短了運算時間,使實時分析成為可能?! “磿r間抽取的FFT算法通常將原始的數(shù)據(jù)倒位序存儲,最后按照正常順序輸出結果X 下面是128點
單片機的一個浮點數(shù)一般在KeilC51中是以4字節(jié)形式存儲的,格式嚴格遵循IEEE-754標準。在單片機二進制數(shù)據(jù)中,浮點數(shù)用兩個部分來表示,基C為2,E為階碼,M為尾數(shù),E的保存形式是一個0~255的8位值,
為了更好的與實際銜接,有三個方面要考慮:發(fā)送FSK信號的形式和參數(shù),解調(diào)器的抗干擾性能,即差錯率與輸入信號比的關系,技術的可行性及設備成本等。從抗干擾性能上考慮我們采用相干解調(diào)法最好,但
我們可以用數(shù)字濾波方法的C語言程序代碼子函數(shù),來完成軟件濾波功能。我們假定,從8位AD中讀取數(shù)據(jù),如果是更高位的AD可以定義數(shù)據(jù)類型為int,子程序定義為get_ad()?! ?1)算術平均濾波程序,
串行A/D轉換器轉換后的結果是以串行方式輸出,數(shù)字量以串行方式輸出可簡化系統(tǒng)的連線,縮小電路板的面積,節(jié)省系統(tǒng)的資源。下面以TLC2543為例,介紹串行A/D驅(qū)動程序的設計?! ?9C51單片機與T
AVR單片機問世以來,獲得廣泛關注。它是一種采用精簡指令集、以時鐘周期為機器周期的高速單片機。它采用快速寄存器文件(共有32個寄存器 R0~R31,其中R16~R31具有較強通用功能)、快速單周期指令。另外
1.帶進位位(C)的寄存器f內(nèi)容左移循環(huán)指令 格式: RLF f.d 其中d=1,結果→f;d→0,結果→w,功能如下圖所示。 2.帶進位位(C)的寄存器f內(nèi)容右移循環(huán)指令 格式:RRFf.dd的取值
假定從8位AD中讀取數(shù)據(jù)(如果是更高位的AD可定義數(shù)據(jù)類型為int),子程序為get_ad();1、限副濾波/* A值可根據(jù)實際情況調(diào)整 value為有效值,new_value為當前采樣值 濾波程序返回有效的實際值 */#defin
/*==============================================================1ms時標 混合式調(diào)度器(一個搶占式任務,多個合作式任務)作者:shadow.hu======================================================
一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存
隨著計算機技術的更新?lián)Q代,USB接口已經(jīng)成為個人計算機上最重要的外部設備擴展接口,在進行USB外設開發(fā)的過程中需要編寫其固件程序。在此對USB接口固件程序進行了開發(fā),在Keil C51軟件環(huán)境中,采用C語