大香蕉大香蕉在线播放-日韩av在线一区中文字幕-日韩熟女熟妇久久精品综合-精品免费视频一区二区三区

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

求平均值的簡(jiǎn)捷方法

更新時(shí)間: 2019-03-23
閱讀量:3117

十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享求平均值的簡(jiǎn)捷方法。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。

首先說(shuō)明,這是前人所推薦的求平均值的方法,只是經(jīng)過(guò)我的一點(diǎn)點(diǎn)加工整理這里開頭先說(shuō)一個(gè)重要的概念,在二進(jìn)制數(shù)值表示方法中,一個(gè)無(wú)限長(zhǎng)的二進(jìn)制數(shù)順序向左移動(dòng)一位就是原值乘以二,而如果二進(jìn)制數(shù)順序向右移一位就是原值除以二。我們利用這個(gè)特性在PIC單片機(jī)中可以很方便地求得兩個(gè)數(shù)的平均值:將兩個(gè)數(shù)相加,然后將和右移一位便是兩個(gè)數(shù)的平均值,如果和是奇數(shù),那么余數(shù)就在C里面。更進(jìn)一步的方法,比如我們要求一段時(shí)間內(nèi)AD值的平均值,通常需要把幾十次的和再除以幾十,而利用移位其實(shí)非常方便,甚至求和后都可以不用再作任何運(yùn)算就可以得到平均值。

舉一個(gè)很特殊的例子說(shuō)明:我們要為8位的AD結(jié)果做平均值運(yùn)算,如果我們一次做256次(注意剛好是2的8次方哦)AD轉(zhuǎn)換,將每次的AD結(jié)果相加,這樣256次AD轉(zhuǎn)換之后我們得到一個(gè)16位的和,這時(shí)我們就不用再把和除以256了,實(shí)際上我們已經(jīng)得到了8位的平均值整數(shù)部分,那就是16位和的高8位!怎么證明?很簡(jiǎn)單:我們求得的和要除以256,將256拆開,就是這樣一個(gè)方程(假設(shè)平均值為X,和為Y): X=Y/(2*2*2*2*2*2*2*2) 也就是將Y除以8次2,換句話說(shuō)按照上面的說(shuō)法就是要將“和”右移8位————?jiǎng)偤脤?6位和的高8位移入低8位,而原低8位如果作為小數(shù)舍去的話,那么原高8位就是平均值的整數(shù)部分!

既然如此簡(jiǎn)單就沒有理由再去自找麻煩移位8次了,直接取16位和的高8位多簡(jiǎn)單?若是有人拿了那個(gè)16位的和直接去冒充16位精度的AD結(jié)果,我也不反對(duì)。讓我們?cè)賮?lái)思考一下10位AD值的平均值如何求:再做256次?太麻煩了,取得的和要18位占用3個(gè)字節(jié),而且時(shí)間太長(zhǎng)不允許,怎么樣才更簡(jiǎn)便呢?右對(duì)齊的10位AD值占用兩個(gè)字節(jié),高字節(jié)前面還有6位空的,6位就是2的6次方=64,這就是我們需要做AD的次數(shù),做完64次AD之后結(jié)果相加的和剛好是10位的左對(duì)齊值!當(dāng)然要舍去低字節(jié)的低6位,那是小數(shù),我們?nèi)≌臅r(shí)候并不關(guān)心的。有人說(shuō):我還是需要結(jié)果是右對(duì)齊的以方便計(jì)算————那就右移6位…………有必要嗎?其實(shí)還有更簡(jiǎn)單的:那就是只需要左移2位!呵呵大家都是明眼人不用我多說(shuō)為什么了,可以看得出來(lái)這有多方便。推而廣之,如果我們要作若干整數(shù)的平均值,只需要先求2的n次方次的和然后右移n次或者左移(8-n)次就可得到它們的平均值整數(shù)了。往哪移,看往哪近嘍。附:10位AD轉(zhuǎn)換求64次平均值程序:

MOVLW D'64' MOVWF COUNT MOVLW ADRESL MOVWF FSR CLRF ADMEANH CLRF ADMEANL ;這個(gè)不要忘了 LOOPAD CALL AD轉(zhuǎn)換 MOVF ADRESH,W ADDWF ADMEANL,F ;加高字節(jié),因?yàn)楦咦止?jié)只有最低兩位,64次求和不會(huì)溢出,所以不用判斷是否有進(jìn)位。 MOVF INDF,W ADDWF ADMEANH,F ;加低字節(jié) BTFSC STATUS,C ;是否有進(jìn)位 INCF ADMEANL DECFSZ COUNT GOTO LOOPAD 平均值調(diào)整 BCF STATUS,C ;這是一個(gè)移位之前的好習(xí)慣,許多找不到原因的錯(cuò)誤就源于此 RLF ADMEANH RLF ADMEANL RLF ADMEANH RLF ADMEANL RLF ADMEANH ;思考:為什么要做兩次半左移?為什么先前加的時(shí)候AD結(jié)果高字節(jié)加到暫存低字節(jié)? MOVLW B'11' ANDLW ADMEANH ;舍掉高字節(jié)高六位的余數(shù)。 ;至此,64次AD的結(jié)果平均值高字節(jié)兩位結(jié)果在ADMEANH中,低字節(jié)8位在ADMEANL中 ;============================================================= AD

轉(zhuǎn)換 重新選擇AD通道 重新開啟AD模塊 ;這兩項(xiàng)比較重要,在同一個(gè)通道反復(fù)采樣中,必須每次都重新采樣才能得到準(zhǔn)確的AD結(jié)果 CALL 采樣延時(shí) ;大約幾十微秒使采樣電容充飽,此延時(shí)視AD口輸入阻抗而定。若阻抗大于10K,應(yīng)適當(dāng)延長(zhǎng)采樣時(shí)間。 BSF ADCON0,GO BTFSC ADCON0,GO GOTO $-1 AD返回

九热中文字幕在线| 添女人荫道口视频| 777米奇在线视频无码| 少妇无套带白浆嗯呢啊污| 久久一级高潮a免费| 高清无码精品一区二区三区| 日韩精品一区二区天堂| 亚洲av伦理一区二区三区久久| 欧美激情在线播放第一页| 9国产亚洲精品国产| 性一交一乱一乱一区二区| 美女最骚逼逼视频| 大香蕉中码手机在线视频| 99精品欧美一区二区三区喷胶| 亚洲午夜福利视频在线| 爱男爽高潮鸡穴视频| 日韩午夜经典福利| 国产裸体视频BBBBB| 亚洲一区二区三区日本在线| 99爱这里只有精品| 美女大鸡操很多水在线看| 精品久久久久久不卡亚洲| 让女人下面出水视频| 国产品无码一区二区三区在线 | 久久亚洲精品中文字幕一| 女人被躁到高潮嗷嗷叫小| 性一交一乱一乱一区二区| 大黑屌狂操骚逼视频| 色狠狠久久av北条麻妃| 午夜福利国产三级片| 国产日韩精品v一区二区| 中文字幕人妻一区二区三区人妻| 黄色片视频1024| 欧美日韩精品视频在线第一区| 成人毛片一级特黄| 国产在线麻豆精品| 国产一级第一级毛片| 色老头av亚洲三区三区| 日韩国产精品视频一区| 日本成人精品一区二区三区| 鸡巴操骚逼视频播放|