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