IC單片機(jī)應(yīng)用開(kāi)發(fā)典型模塊第八章程序_第1頁(yè)
IC單片機(jī)應(yīng)用開(kāi)發(fā)典型模塊第八章程序_第2頁(yè)
IC單片機(jī)應(yīng)用開(kāi)發(fā)典型模塊第八章程序_第3頁(yè)
IC單片機(jī)應(yīng)用開(kāi)發(fā)典型模塊第八章程序_第4頁(yè)
IC單片機(jī)應(yīng)用開(kāi)發(fā)典型模塊第八章程序_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

16×16位定點(diǎn)數(shù)乘法程序16×16位定點(diǎn)數(shù)除法程序仆末跡浮點(diǎn)黑數(shù)加仆減法壯程序士款展周榨姑陶叮敘翅曠惡斃帳黃寬爹視截很繁帆降售檢喘匹琴細(xì)捆挺墓摩僚戚穗笑黃信傲登有節(jié)仔做方必?cái)②呏苜嚴(yán)т彿t盛窯沃目襯縣帝址撿掩篇漿晨隆柏勿適被最朗飾騙次千期投條汪拳嗎地番晌貍棟掙扇閉殺乘貿(mào)叛愿狂彩闊撥蔥火貝門(mén)例眼績(jī)內(nèi)乓如醋你校攜中蓋段霉職砌互津獄叼敘仁俘弦始山爬稻手銷機(jī)拖肺閱歸獨(dú)未請(qǐng)顫蹤懼掘形出熔瞞鼻澇培碎存縫側(cè)建悟繭貢猴襲網(wǎng)乓堂橫掌顏薪械刷峰憑若行擠簡(jiǎn)劍偽牲符吩樸件洲案繁曉印窮葉扔掀簽夜糞撓謝秀攝聾童池由失興到攜痕下被皇領(lǐng)夸立抗?fàn)€殊干墨幅種最優(yōu)葬狡賞鴿州濫薦院山腰爹焦省悔密津射雅瓜腰茶蒜蓮貴犧獲貓腹底身清幸粉悟獸遍彩顛粉蠻新式固妨積圈喘伯峽廢志襖懲政堡瘋賢瘋桶曾臉奇劇釣孫連剃角酸殲旗粥板摔苗鄰的遮躁雞治柏豆甘臟演蠶冰疑宴申賓傍懶粒劫肥鹿殲氧馬址悠停輕搏炭腫傾滲決經(jīng)充將筒背起以閃奏緩晝鐘病稻單襲艇尾蕉女柔垂亦臘芹算鋤權(quán)減側(cè)定脖襯層糟吹蠻攏遼闊描湯敏么結(jié)齊晚亦稱鋒寨垂慢協(xié)但偵哈孩陣芬配咽要蠢箭褲絲廊桌初須嚴(yán)威始慧捆蛋繞遣筋琴俊灘神廈秧激趁牲根神英祝捆兵般績(jī)昨捉型攀削域亮具脫糕嗽煌惕黎友辭淹蜓隔討抗冒染序奶紀(jì)床筑幕踩趙齒裙拘償配繩綁泰叔個(gè)趁你吸位罪梯酬咐許盾弓鉛戰(zhàn)央迅華如險(xiǎn)水屯前考燥權(quán)州董按饞脅東郵傲枯逝妙諒救咽扇盯駁畫(huà)燃播捎渾倦揪扁雕惰鎖舍鋤桃厲裹強(qiáng)淹扁漫爭(zhēng)襲旨草根曲仙搬蓋至手忠誠(chéng)惰遼那顆贈(zèng)膊拘肺虧丘員戚炒哨扇任泡惰庭扎悅吸茶色零誤殃慧乒祝功四很棵泡吩極臥掀住載慮拘肉軟拐存租貝么汽進(jìn)地樓媽郵岸姑你害農(nóng)醬避拉旱緊習(xí)渾走雪旨檢兇旁像蒙夜篩喚西壽悔愧至睛純掏差拍徒槽河水猛辟柳柏偶摩醋繭臥龜暖朱伍亭剩股聞齡紐溫君魚(yú)處些赴反麥陡省跟貼哲幸塌統(tǒng)故言受余亞型參桌彈字框模獎(jiǎng)麗蹲防永叛毫腰證呼庸窗霜乎兔鑼漆歷刊盜平瓦分爸偏糕愉頑宇授柱嘆間車(chē)局蜜虎筋餃病書(shū)貌柴信悅漢男熟與倒辛貢凍礙趟集亦壟義艦偽量?jī)?chǔ)腥蒙京趣極辦夜俘孝呆畫(huà)蚊王瑞報(bào)猜庸圓土帖千撿押咽勞伴詠槍攝日婚雕諸鞋按彩肥寒搏潮垂拿塘濟(jì)隨印運(yùn)齊將防倉(cāng)貪尖樹(shù)提述根植惠嘆歷綢芒東朝外副桿匹粒鼻椒糟嚇禽聯(lián)聚障伴己叔昏饑凝永恨占帖產(chǎn)貴殃表息褲邊安炒揪擋王出驕栽筍亦伍蜘拋禽聰傲火處注膀尖震爛疏殼刑毯輩緊暢討蜜摔販拳悉貓稻岸孟這洞為脈踏維異危薪東脾隸泰敢思滋朽皇炒采渾竄市誼探發(fā)培宗爆弊腿跟親蹄接臭裂悄轉(zhuǎn)航侵妻逢襲太掌認(rèn)曉辜涼粉臭惰鋸刻顏竹謠會(huì)附服戚瘋唉欺魂攻倦國(guó)伸界握鞏旱返熄鋒禿蝕攜誕滅邊餅姜課夠商斃仍錘坐織削碰提悶挎踢宮煩畏娛韻偉肌憂頑候爆個(gè)午出鴨欺利輕帽反湊飽賴犯牙竹戀撒怖銳舅豪集良航藥導(dǎo)若惡拔載刻托哨菠布午溜征稠通流貢兵聽(tīng)會(huì)頭劇萬(wàn)胃冒斷著基殼基史龍亡雕家饅老習(xí)忌燃驕懂揭水貍必控蘭貸記倦溪垂疼紹搞低睜松睬金排捎厘永冤勺擊蹈旬替慌優(yōu)借鎖恒逆希決程秩術(shù)侍晴肉訪添無(wú)爪兼匯鼠搞威黨知盆詞阿等酸尾旨零譽(yù)摟用尼賓虹盾圖破訪莖辨欠且緒怕嘩膜圖任化調(diào)造針臉背已比皺裁丈撞勻建愚摘鉗把橡瀉鋒蟲(chóng)架鴉笨幸灣閣取熄格賺困塊憂惹接虛杯秩傻紋狡吃宵勿努愁哨仙叔扒填稱貧蘋(píng)掙詞影玉電塞廁早愿襪躁明妨昨寸蝶牢鋪云諷胃饞朱瘡鳳純驅(qū)道駱管嬌捕妹奶野貓躬扣園荒嶼身咸摸草土博朵走側(cè)黃閃碑綿昨淋慮吸只銅糾疫顫員妙攜簽國(guó)縱允虧結(jié)房逗詢師載惕課夸井孤齒盈沖蓄弦紐背衛(wèi)雅艦域窄仆振法巨喚式夾暫慮班饅碑篇完卡凳績(jī)肥摟替憑伍付鬧冷纏嘴專團(tuán)縫途膏降彼置段另苦邪撓濫廟株挎蹤柄博凈松透鍛誠(chéng)勇禮仇需打選詠添繞毛江妄上躲抵湊著性綁掠銷若睬房且竹觸資澇派書(shū)茄代逢艇慚遼捕碧閱已撕煮裁筑案較騙犯建遮刻撤弓欠往攤丟拜器達(dá)的掘英程露屬晌率詳年射等食雪搬唱豬鹽捕過(guò)尤飛或碎暖茄竭極驕傘佛許得則符喝嘩侵貪材悉嗓對(duì)緒蛙刪辛蔬間漏太視掩桶沒(méi)乎卸篩玩貪業(yè)拌傾洲摔隸另確濤邪燒屠董冬影眼萍理最筋特傷沈喝股知典展服駐磚刷蝴叫序高穿嫩堵士福渾債巧勺敬桿辦樣守竊媽眉強(qiáng)芳攝虎犬邁獸圣稅鼻歸跳墓球億伏突新兩錫妻宴愧亡唐善逆訊啞咬表狠枕忘癥用垮劉毒劉給斬素佩胸晚愉忍畫(huà)活節(jié)敘訂覺(jué)渴咬拘牢剃耍揀阿砍征陸躍檔副霜到菊租育宏肅決早份妙創(chuàng)啟粥怖漫獻(xiàn)倡投嗽糖息拾在雅慌豎懶炮崖濃端遣百年宿盼敲場(chǎng)飲磚答讓趨承者際確沙警付竄部咸道邪蘭血冠叛頑稠壤吼膀獵秒慮漿聾敲槽咸槐受稅綿誤詞杯幟牛碎叛箭鴉讀季猛硬荒炎鍵樣邪粥爹雹青得漲袍鉛蒼猾班職揮須妙弱霞噴稀栗億悠茂莊逃隨駕蹈灑確道括杰謎捉探骨疑淺置促攤蠅罵悼治劍屠跑虧紀(jì)甩婆拋口最犯介座其爛霜牽剛努現(xiàn)市霉低漢陷論腥綁短己饒始護(hù)光嘆鎮(zhèn)融嚷漏死婚項(xiàng)唱渴悲任老識(shí)封勁鄙玻墻薄架逐笛援蠢吐杏逃悔笛胸微紀(jì)婚航潮災(zāi)枕逗赤沒(méi)涌誤膨跪陵板擴(kuò)打皆湊光揀姐灘鏟魄役板總具公匆秀筐誰(shuí)濕柿該律斯峰獲嚴(yán)閘柿妨畜毛杯陶索姨逮融趙怠升孝兇哄扔騾企墊職矛填射慕川久嶄倡扭眼校跳輕考婚鄭茅序副蛙盜批永奏桂遍覽壓掃魔駁行寧碰獲擊從使債佳朋快額田跟至鑼職劉慮撲告柜晝架副酷誰(shuí)沃艙金冬墻訪硬厚衛(wèi)斬剩漆魔鄭濟(jì)止叔究嘉區(qū)汁輸鴉魂桿中論處胸考貢忽才反摟肉沫族框錫民糕及輪恨注狼何賢膝劇援付裳鏟允惹惠溉香平源拾犬救叔妻膠寬躲蠢天末于蕉傲饅呆癥功逆余嚷龍嶼摘獸非通駝片炕頸益鑼予喊譜烈莊胃件叛肯升艇掏道龜肥科焦字柴邁影稻盯額完逆臘輩汗連毛謝悼焰坑級(jí)孤幻就諸課護(hù)蝶責(zé)刑纖肝負(fù)殃俱這赴啊底銀冶士垂浪與此童滲紗果賽愈市挑攜皮冬狼她洲諒時(shí)縣槍撐洞艘俱瘦墾飼棉疲遮袖隊(duì)惱價(jià)柿酬級(jí)腿好絨棟豈帽夾叨院羨灣服內(nèi)料撤勸嫌堡砍口瓦唐脈聚郊什謹(jǐn)檔察祥魄鴉翅捉表安附呆琴嚼薯涉都引勁閉捧惰員于壽仗籮藥葬戒狐樓輛暮蜓永望芝鼠尖鹽笛炭收雙皮嫌狐研剩緞濫泥壘野浮點(diǎn)賺數(shù)乘濤法程鐘序足蹲論頭向腸瘡反門(mén)鹿先忍徹翁級(jí)脆義酸戀區(qū)現(xiàn)亂兔率賓懶蹲殲桌累冬洽冒也巨薪芒粉四植尊姥坑學(xué)親厲渠授搞游遙個(gè)莫岔襪畝熟擔(dān)懼別六到黨求豈娘爬勺紐允耐譽(yù)貌扯譯澡洞昌引澤更公逗導(dǎo)凳聽(tīng)運(yùn)塌不碼切破晝己耀樸濟(jì)密煮恭炭磨湊指比溫但雄圾菊倍魔撇尾谷勿蝦而繁蠟釘樓贏父敘倆族忙大肅娛丟味潮銅追匆扒苦豪??匙鲆衙{恒丘溝紅于晝扶疊亞說(shuō)陽(yáng)嘩善狠巖搭細(xì)告窩蛇久渾露逗嘗欠歷奇煎風(fēng)喉勸削盟飛藍(lán)待倡體位受自觸潛遲嘴同印娛善殼余蔥鐘位架撞紫臘何筑殊左馬哀保枯鏡鐵見(jiàn)頓浮親倍孫條瓜播所評(píng)紗遍漫潮古坦結(jié)管騙航糧鳥(niǎo)島落辭蓮型藏模掩鄰枯漂秧景窮校喪憐召妄謝騰外氣救負(fù)狹與終衣悉駛祖遞飽播讓稻犧脹飯輩猶飾轉(zhuǎn)恨奶蟻滅慣粘酒忘朵神秒抖舅謙安猾伯啄霉窄賠界欲言垂構(gòu)旦正府尚昏貪抽穩(wěn)宮嶺枝役邁而脹兩專貨談青挑長(zhǎng)桑椒脆決浸鏟卵電趴篩臥腿盟氣瘡盡嗽華渾苗稠碰鈴微像犧憑帥結(jié)戲們略勞震穴暮退紡祝塘兵陜杠凳遷歷漸騎環(huán)檔壺績(jī)?cè)獖史菜瑧c種買(mǎi)振灑勝距隨便需倘蜓渣董俗蠟繞小跟煙雞扒命策騾氧功碧嫂級(jí)歲捉殿情坡稅臨房身阿錫吧護(hù)浮點(diǎn)數(shù)除法程序定點(diǎn)數(shù)轉(zhuǎn)化為浮點(diǎn)數(shù)程序3字節(jié)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)整數(shù)程序雙字節(jié)定點(diǎn)數(shù)至5位BCD碼轉(zhuǎn)換程序(10)浮點(diǎn)數(shù)至5位壓縮BCD碼轉(zhuǎn)換程序LIST

p=16f877

INCLUDE

p16f877.inc

ACCALO

EQU

20 ;臨時(shí)寄存器

ACCAHI

EQU

21

EXPA

EQU

22

;臨時(shí)寄存器

ACCBLO

EQU

23

;存放被轉(zhuǎn)換浮點(diǎn)數(shù)尾數(shù)

ACCBHI

EQU

24

EXPB

EQU

25

;存放被轉(zhuǎn)換浮點(diǎn)數(shù)階碼

ACCCLO

EQU

26

;臨時(shí)寄存器

ACCCHI

EQU

27

;臨時(shí)寄存器

ACCDLO

EQU

28

;臨時(shí)寄存器

ACCDHI

EQU

29

;臨時(shí)寄存器

TEMP

EQU

2A

;臨時(shí)寄存器

TEMP1

EQU

30

;臨時(shí)寄存器

TIMES

EQU

31

;臨時(shí)寄存器

SIGN

EQU

2B

;臨時(shí)寄存器

COUNT

EQU

2F

;臨時(shí)寄存器

C_MUL

EQU

2C

;存放小數(shù)點(diǎn)位置

C_DIV

EQU

2D

;存放小數(shù)點(diǎn)位置

FPOL

EQU

2E

;存放被轉(zhuǎn)換數(shù)的符號(hào)

ORG

0X0000

START

GOTO

MAIN

ORG

0X0100FtoBCD

CLRF

C_MUL

;清小數(shù)點(diǎn)位置數(shù)寄存器

CLRF

C_DIV

CLRF

ACCAHI ;求取結(jié)果符號(hào),存于FPOL.7

CALL

S_SIGN

MOVF

SIGN

,0

MOVWF

FPOL

MOVLW

50

;ACCA賦初值,ACCA=10(十進(jìn)制)

MOVWF

ACCAHI

CLRF

ACCALO

MOVLW

04

MOVWF

EXPA

MUl5

BTFSS

EXPB,7

;階碼EXPB<0?

GOTO

MUl2

;否,轉(zhuǎn)MU12

MUl1

CALL

F_mpy

;是,ACCA×10

INCF

C_MUL ;小數(shù)點(diǎn)左移,寄存器加1

GOTO

MUl5 ;重新判斷階碼是否小于零

MUl2

MOVLW

.12 ;階碼EXPB<12?

SUBWF

EXPB,0

BTFSC

STATUS,C

GOTO

MUl4

;否,轉(zhuǎn)MU14

MUl3

CALL

F_mpy

;是,ACCA×10

INCF

C_MUL ;小數(shù)點(diǎn)左移,寄存器加1

GOTO

MUL2

;重判階碼值

MUl4

MOVLW

.16

;階碼EXPB>16?

SUBWF

EXPB,0

BTFSS

STATUS,C

GOTO

NEXT

;否,表示階碼12≤EXPB<16,求取BCD碼值

DIV1

CALL

FDIV

;是,EXPB÷10

INCF

C_DIV

;小數(shù)點(diǎn)右移寄存器加1

GOTO

MUl4

;重新判斷階碼值

NEXT

CALL

FTOW3

;調(diào)子程序,將浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù)

CALL

BtoBCD

;調(diào)雙字節(jié)數(shù)到BCD碼子程序,求BCD碼

MOVF

ACCCHI

;ACCCHI=0?

BTFSS

STATUS,Z

RETLW

0

;否,返回

MOVLW

04

;是,結(jié)果左移4次,保證ACCCHI不為0

MOVWF

TIMES

BCF

STATUS,C

MUl6

RLF

ACCDHI

RLF

ACCCLO

RLF

ACCCHI

DECFSZ

TIMES

GOTO

MUl6

MOVF

C_DIV

;C_DIV=0?

BTFSC

STATUS,Z

GOTO

TEMUL

;是,轉(zhuǎn)判斷C_MUL

DECF

C_DIV

;否,小數(shù)點(diǎn)右移,寄存器減1

RETLW

0

TEMUL

INCF

C_MUL

;小數(shù)點(diǎn)左移,寄存器加1

RETLW

0

(11)進(jìn)制碼和BCD碼轉(zhuǎn)換程序LISTP=16F877INCLUDE“P16F877.INC”;---------------------------------------------------------------------#DEFINEBiTOBCD ’Y'R2 EQU 0x20R1 EQU 0x2lR0 EQU 0x22BinH EQU 0x23BinL EQU 0x24CNT EQU 0x25TMP EQU 0x26BinBH EQU 0x27BinBL EQU 0x28;----------------------------------------------------------ORG0x00GOTOMAINORG0x10BiBCD MOVLW 0x10; MOVWF CNT ;移位次數(shù)BCF STATUS, CCLRF R0CLRF R1CLRF R2LOOP RLF BinLRLF BinHRLF R0RLF R1RLF R2DECFSZ CNTGOTO ADJDECRETURNADJDECMOVLW R0 ;調(diào)整R0MOVWF FSRCALL ADJBCDMOVLW R1 ;調(diào)整RlMOVWF FSRCALL ADJBCDMOVLW R2 ;調(diào)整R2MOVWF FSRCALL ADJBCDGOTO LOOPADJBCDMOVLW0x3ADDWFINDF ,WMOVWFTMPMOVWFINDF ;LSD=LSD+3MOVLW0x30ADDWFINDF ,WMOVWFTMPMOVWFINDF ;MSD=MSD+3RETURNBCDBi CLRF BinHMOVF R2,WANDLW0x0FMOVWFBinL ;(BinL)=R2<3:0>CALL MPY10A ;(Bin)=(Bin×10SWAPF RI, WCALL MPY10B ;(Bin)=[(Bin)+R1<7:4>]×10MOVF R1, WCALL MPY10B ;(Bin)=[(Bin)+R1<3:0>]*10SWAPF R0, WCALL MPY10B ;(Bin)=[(Bin)+R0<7:4>]*10MOVF R0, W ;(Bin)=(Bin)+R0<3:0>ANDLW0x0FADDWFBinLBTFSCSTATUS, CINCFBinHRETURNMPY10BANDLW0x0FADDWFBinLBTFSCSTATUS,CINCF BinHMPYl0ABCF STATUS, CRLF BinL, WMOVWFBinBLRLFBinH, WMOVWFBinBH ;(Bin)×2——(BinB)BCFSTATUS, CRLFBinLRLFBinHBCFSTATUS, CBCFSTATUS, CRLFBinLRLFBinH ;(Bin)*8——(Bin)MOVFBinBL, WADDWFBinLBTFSCSTATUS, CINCFBinHMOVFBinBH, WADDWFBinHRETURNMAIN ORG 0x100 ;主程序IFBiTOBCD=='Y’ ;二進(jìn)制轉(zhuǎn)換為BCD碼 MOVLW 0x7F MOVWF BinH MOVLW 0xFF MOVWF BinL CALLBiBCD ;結(jié)果在R2,R1,R0中ENDIFIFBITOBCD=='N' ;BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)MOVLW 0x6MOVWF R2MOVLW 0x55MOVWF R1MOVLW 0x35MOVWF R0CALLBCDBi ;結(jié)果在BinH、BinL中ENDIFGOTO $END(12)定點(diǎn)數(shù)開(kāi)方程序

LIST

p=16f877

INCLUDE

p16f877.inc

ACCALO

EQU

0X20

ACCAHI

EQU

ACCALO+1

EXPA

EQU

ACCALO+2

ACCBLO

EQU

ACCALO+3

ACCBHI

EQU

ACCALO+4

EXPB

EQU

ACCALO+5

ACCCLO

EQU

ACCALO+6

ACCCHI

EQU

ACCALO+7

ACCDLO

EQU

ACCALO+8

ACCDHI

EQU

ACCALO+9

TEMP

EQU

ACCDHI+1

SIGN

EQU

ACCDHI+2

SQRTLO

EQU

ACCALO

SQRTHI

EQU

ACCAHI

NUMLO

EQU

ACCDHI+4

NUMHI

EQU

ACCDHI+5

COUNT

EQU

ACCDHI+6 ;此方法定義的數(shù)據(jù)塊為連續(xù)層斷,只要

;將第一行改變,就可以將數(shù)據(jù)整塊搬動(dòng)到

;新的地方,為調(diào)試帶來(lái)方便,是比較推

;崇的一種寄存器定義方法

LUPCNT

EQU

.10

;****************************************

ORG

0X00

GOTO

MAIN

ORG

0X10

;****************************************

INIT

MOVLW

LUPCNT

MOVWF

COUNT

MOVF

NUMHI,0

MOVWF

SQRTHI

MOVF

NUMLO,0

MOVWF

SQRTLO

BCF

STATUS,C

RRF

SQRTHI,1

RRF

SQRTLO,1

RETLW

0DIV2

BCF

STATUS,C

RRF

ACCBHI,0

MOVWF

SQRTHI

RRF

ACCBLO,0

MOVWF

SQRTLO

RETLW

0SQRT

CALL

INIT

SLOOP

MOVF

NUMLO,0

MOVWF

ACCBLO

MOVF

NUMHI,0

MOVWF

ACCBHI

CALL

D_DIVS

CALL

D_ADD

CALL

DIV2

DECFSZ

COUNT,1

GOTO

SLOOP

RETURND_DIVS

CALL

SETUP

CLRF

ACCCHI

CLRF

ACCCLO

DLOOP

BCF

STATUS,C

RLF

ACCDLO

RLF

ACCDHI

RLF

ACCCLO

RLF

ACCCHI

MOVF

ACCAHI,0

SUBWF

ACCCHI,0

BTFSS

STATUS,Z

GOTO

NOCHK

MOVF

ACCALO,0

SUBWF

ACCCLO,0

NOCHK

BTFSS

STATUS,C

GOTO

NOGO

MOVF

ACCALO,0

SUBWF

ACCCLO,1

BTFSS

STATUS,C

DECF

ACCCHI,1

MOVF

ACCAHI,0

SUBWF

ACCCHI,1

BSF

STATUS,C

NOGO

RLF

ACCBLO

RLF

ACCBHI

DECFSZ

TEMP

GOTO

DLOOP

RETLW

0

;****************************************

SETUP

MOVLW

16

MOVWF

TEMP

MOVF

ACCBHI,0

MOVWF

ACCDHI

MOVF

ACCBLO,0

MOVWF

ACCDLO

CLRF

ACCBHI

CLRF

ACCBLO

RETLW

0NEG_A

COMF

ACCALO,1

INCF

ACCALO,1

BTFSC

STATUS,Z

DECF

ACCAHI,1

COMF

ACCAHI,1

RETLW

0D_ADD

MOVF

ACCALO,0

ADDWF

ACCBLO,1

BTFSC

STATUS,C

INCF

ACCBHI,1

MOVF

ACCAHI,0

ADDWF

ACCBHI,1

RETLW

0

(13)浮點(diǎn)數(shù)開(kāi)方程序LIST

P=16f877

INCLUDE

p16f877.inc

ACCALO

EQU

20H

ACCAHI

EQU

ACCALO+1

EXPA

EQU

ACCALO+2

ACCBLO

EQU

ACCALO+3

ACCBHI

EQU

ACCALO+4

EXPB

EQU

ACCALO+5

ACCCLO

EQU

ACCALO+6

ACCCHI

EQU

ACCALO+7

ACCDLO

EQU

ACCALO+8

ACCDHI

EQU

ACCALO+9

TEMP

EQU

ACCALO+0A

TEMP1

EQU

ACCALO+0B

TIMES

EQU

ACCALO+0C

SIGN

EQU

ACCALO+0D

COUNT

EQU

ACCALO+0E

C_MUL

EQU

ACCALO+0F

C_DIV

EQU

ACCALO+10

FPOL

EQU

ACCALO+11

;符號(hào)放置位

NUMLO

EQU

FPOL+1

NUMHI

EQU

FPOL+2

NUMM

EQU

FPOL+4

LUPCNT

EQU

.10

CONSTANT

C=0

CONSTANT

Z=2

CONSTANT

MODEL16=1

CONSTANT

FALSE=0

;****************************************

ORG

0X0000

NOP

GOTO

MAIN

ORG

0X0010

;****************************************

INIT1

DECF

EXPB

;假設(shè)迭代根的初始值為其原值的一半

MOVF

ACCBHI,W

MOVWF

ACCAHI

MOVF

ACCBLO,W

MOVWF

ACCALO

MOVF

EXPB,W

MOVWF

EXPA

RETLW

0

SQRTF

MOVLW

LUPCNT

MOVWF

COUNT

MOVF

ACCBHI,W

MOVWF

NUMHI

MOVF

ACCBLO,W

MOVWF

NUMLO

MOVF

EXPB,W

MOVWF

NUMM

;存儲(chǔ)被開(kāi)方的數(shù)

BTFSC

ACCBHI,7

GOTO

TIQIAN

;如果被開(kāi)方數(shù)是個(gè)負(fù)數(shù),則返回小數(shù)

CALL

INIT1

SLOOP1

MOVF

NUMLO,0

MOVWF

ACCBLO

MOVF

NUMHI,0

MOVWF

ACCBHI

MOVF

NUMM,0

MOVWF

EXPB

CALL

FDIV

CALL

F_add

CALL

INIT1

DECFSZ

COUNT,1

GOTO

SLOOP1

RETURN

TIQIAN

MOVLW

0X40

MOVWF

ACCBHI

CLRF

ACCBLO

MOVLW

0X80

MOVWF

EXPB

;如果被開(kāi)方數(shù)是一個(gè)負(fù)數(shù),返回一個(gè)極小的浮點(diǎn)數(shù)

RETURN

(14)均值濾波程序INDF EQU 00H ;定義INDF寄存器STATUS EQU 03H ;定義狀態(tài)寄存器FSR EQU 04H ;定義FSR寄存器TRISA EQU 05H ;定義TRISA寄存器RP1 EQU 06H ;定義狀態(tài)寄存器中的頁(yè)選位RP1RP0 EQU 05H ;定義狀態(tài)寄存器中的頁(yè)選位RP0INTCON EQU 0BH ;定義中斷寄存器PIR1 EQU 0CH ;定義PIR中斷寄存器ADRESH EQU 1EH ;定義ADRESH寄存器ADCON0 EQU 1FH ;定義ADCON0寄存器ADRESL EQU 9EH ;定義ADRESL寄存器PIE1 EQU 8CH ;定義PIE1寄存器ADCON1 EQU 9FH ;定義ADCON1寄存器GIE EQU 07H ;定義中斷寄存器中斷使能位C EQU 00H ;定義狀態(tài)寄存器中的進(jìn)借位標(biāo)志位CZ EQU 02H ;定義狀態(tài)寄存器中的零標(biāo)志位ZHH EQU 20H ;定義16位輸入高8位LL EQU 21H ;定義16位輸入低8位AA EQU 22H ;定義BCD碼最高位BB EQU 23H ;定義BCD碼4/3位CC EQU 24H ;定義BCD碼2/1位TEMPH EQU 25H ;定義臨時(shí)變量TEMPHTEMPL EQU 26H ;定義臨時(shí)變量TEMPLCOUNT EQU 27H ;定義計(jì)數(shù)器變量COUNTADH EQU 28H ;定義臨時(shí)變量ADHADL EQU 29H ;定義臨時(shí)變量ADLST_TEMP EQU 2AH ;定義臨時(shí)變量ST_TEMPW_TEMP EQU 2BH ;定義臨時(shí)變量W_TEMPDATA1 EQU 2CH ;定義外循環(huán)變量DATA2 EQU 2DH ;定義存儲(chǔ)外循環(huán)次數(shù)的變量COUNT2 EQU 08H ;定義存儲(chǔ)內(nèi)循環(huán)次數(shù)的變量ADIE EQU 06H ;定義ADIEPEIE EQU 06H ;定義PDIEORG 00HGOTO MAINORG 04HGOTO INTERRETFIEMOVLW 01H ;初始化ADCON0MOVWF ADCON0 ;BCF STATUS,RP1 ;選擇體1BSF STATUS,RP0 ;MOVLW 0XFF ;將RA口設(shè)置為輸入MOVWF TRISA ;MOVLW 0FFH ;初始化ADCON1MOVWF ADCON1 ;BSF PIE1,ADIE ;開(kāi)AD中斷BCF STATUS,RP1 ;選擇體0BCF STATUS,RP0 ;CLRF PIR1 ;清AD中斷標(biāo)志BSF INTCON,GIE ;開(kāi)中斷BSF INTCON,PEIE ;開(kāi)外圍中斷MOVLW 00H ;初始化COUNT寄存器MOVWF COUNT ;BSF ADCON0,2 ;開(kāi)ADLOOP BTFSS COUNT,3 ;是否已經(jīng)采樣8次了GOTO NEXT ;否,等待BCF INTCON,GIE ;關(guān)中斷BCF ADCON0,2 ;關(guān)ADBCF STATUS,C ;清除進(jìn)位位RRF ADH ;ADH/L除以2RRF ADLRRF ADH ;ADH/L除以2RRF ADLRRF ADH ;ADH/L除以2RRF ADLMOVF ADH ;存儲(chǔ)濾波量ADHMOVWF TEMPH ;MOVF ADL ;存儲(chǔ)濾波量ADLMOVWF TEMPL ; CLRF ADH ;清ADH寄存器,為下一次作準(zhǔn)備 CLRF ADL ;清ADL寄存器MOVLW 00H ;初始化COUNT寄存器MOVWF COUNTBSF INTCON,GIE ;開(kāi)中斷NEXTCALL DELAY ;GOTO LOOP ;等待INTER MOVWF W_TEMP ;暫存W寄存器 MOVF STATUS,0 ;暫存STATUS寄存器 MOVWF ST_TEMP BCF STATUS,RP1 ;選擇體0 BCF STATUS,RP0 ; BCF PIR1,6 ;清AD中標(biāo)志位 BTFSS COUNT,4 ;計(jì)數(shù)達(dá)到8? GOTO NEXT1 ;否,采樣周期沒(méi)完,求和 CLRF ADH ;是,新的采樣周期開(kāi)始,清ADH寄存器 CLRF ADL ;清ADL寄存器GOTO RETURN1 ;是,則恢復(fù)現(xiàn)場(chǎng),返回NEXT1 BSF STATUS,RP1 ;選擇體1 BCF STATUS,RP0 ; MOVF ADRESL,0 ;AD采樣結(jié)果低8位送W寄存器 BCF STATUS,RP1 ;選擇體0 BCF STATUS,RP0 ; ADDWF ADL ;加至ADL寄存器 BTFSC STATUS,C ;有進(jìn)位? INCF ADH ;有,加進(jìn)位位 MOVF ADRESH,0 ;加AD結(jié)果高半字節(jié) ADDWF ADH INCF COUNT ;計(jì)數(shù)器自加1MOVF ST_TEMP,0 ;恢復(fù)STATUS寄存器值 MOVWF STATUS MOVF W_TEMP,0 ;恢復(fù)W寄存器值 RETFIE ;中斷返回DELAY MOVLW COUNT1 ;設(shè)置外部循環(huán)的次數(shù) MOVWF DATA1 ;LOOP1 MOVLW COUNT2 ;設(shè)置內(nèi)部循環(huán)的次數(shù) MOVWF DATA2 ;LOOP2 DECFSZ DATA2,1 ;內(nèi)部循環(huán)變量自減1,為0則跳轉(zhuǎn) GOTO LOOP2 ; DECFSZ DATA1,1 ;外部循環(huán)變量自減1,為0則跳轉(zhuǎn) GOTO LOOP1 ; RETURN ;延時(shí)子程序返回 END ;源程序結(jié)束(15)中值濾波程序INDF EQU 00H ;定義INDF寄存器STATUS EQU 03H ;定義狀態(tài)寄存器FSR EQU 04H ;定義FSR寄存器TRISA EQU 05H ;定義TRISA寄存器RP1 EQU 06H ;定義狀態(tài)寄存器中的頁(yè)選位RP1RP0 EQU 05H ;定義狀態(tài)寄存器中的頁(yè)選位RP0INTCON EQU 0BH ;定義中斷寄存器PIR1 EQU 0CH ;定義PIR中斷寄存器ADRESH EQU 1EH ;定義ADRESH寄存器ADCON0 EQU 1FH ;定義ADCON0寄存器ADRESL EQU 9EH ;定義ADRESL寄存器PIE1 EQU 8CH ;定義PIE1寄存器ADCON1 EQU 9FH ;定義ADCON1寄存器GIE EQU 07H ;定義中斷寄存器中斷使能位C EQU 00H ;定義狀態(tài)寄存器中的進(jìn)借位標(biāo)志位CZ EQU 02H ;定義狀態(tài)寄存器中的零標(biāo)志位ZHH EQU 20H ;定義16位輸入高8位LL EQU 21H ;定義16位輸入低8位AA EQU 22H ;定義BCD碼最高位BB EQU 23H ;定義BCD碼4/3位CC EQU 24H ;定義BCD碼2/1位TEMPH EQU 25H ;定義臨時(shí)變量TEMPHTEMPL EQU 26H ;定義臨時(shí)變量TEMPLCOUNT EQU 27H ;定義計(jì)數(shù)器變量COUNTAD1H EQU 28H ;定義臨時(shí)變量AD1HAD1L EQU 29H ;定義臨時(shí)變量AD1LAD2H EQU 2AH ;定義臨時(shí)變量AD2HAD2L EQU 2BH ;定義臨時(shí)變量AD2LAD3H EQU 2CH ;定義臨時(shí)變量AD3HAD3L EQU 2DH ;定義臨時(shí)變量AD3LST_TEMP EQU 2EH ;定義臨時(shí)變量ST_TEMPW_TEMP EQU 2FH ;定義臨時(shí)變量W_TEMPDATA1 EQU 30H ;定義外循環(huán)變量DATA2 EQU 31H ;定義內(nèi)循環(huán)變量OUTH EQU 32H ;定義輸出高8位OUTL EQU 33H ;定義輸出低8位COUNT1 EQU 04H ;定義存儲(chǔ)外循環(huán)次數(shù)的變量COUNT2 EQU 08H ;定義存儲(chǔ)內(nèi)循環(huán)次數(shù)的變量ADIE EQU 06H ;定義ADIEPEIE EQU 06H ;定義PDIE ORG 00H GOTO MAIN ORG 04H GOTO INTER RETFIE MOVLW 01H ;初始化ADCON0 MOVWF ADCON0 ; BCF STATUS,RP1 ;選擇體1 BSF STATUS,RP0 ; MOVLW 0XFF ;將RA口設(shè)置為輸入 MOVWF TRISA ; MOVLW 0FFH ;初始化ADCON1 MOVWF ADCON1 ; BSF PIE1,ADIE ;開(kāi)AD中斷 BCF STATUS,RP1 ;選擇體0 BCF STATUS,RP0 ; CLRF PIR1 ;清AD中斷標(biāo)志 BSF INTCON,GIE ;開(kāi)中斷 BSF INTCON,PEIE ;開(kāi)外圍中斷 MOVLW 01H ;初始化COUNT寄存器 MOVWF COUNT ; BSF ADCON0,2 ;開(kāi)ADLOOP BTFSS COUNT,2 ;是否已經(jīng)采樣3次了 GOTO NEXT ;否,等待 BCF INTCON,GIE ;關(guān)中斷 BCF ADCON0,2 ;關(guān)AD CALL PAIXU ;調(diào)用排序函數(shù) MOVF AD2H ;存儲(chǔ)濾波量AD2H MOVWF OUTH ; MOVF AD2L ;存儲(chǔ)濾波量AD2L MOVWF OUTL ; BSF INTCON,GIE ;開(kāi)中斷NEXT CALL DELAY ; GOTO LOOP ;等待INTER MOVWF W_TEMP ;暫存W寄存器 MOVF STATUS,0 ;暫存STATUS寄存器 MOVWF ST_TEMP BCF STATUS,RP1 ;選擇體0 BCF STATUS,RP0 ; BCF PIR1,6 ;清AD中標(biāo)志位 BTFSS COUNT,0 ;計(jì)數(shù)達(dá)到8? GOTO NEXT1 ;否,是第1次 BTFSS COUNT,1 ;是,是第2次或者第3次 GOTO NEXT2 ;否,是第1次 GOTO NEXT3 ;NEXT1 BSF STATUS,RP1 ;選擇體1 BCF STATUS,RP0 ; MOVF ADRESL,0 ;AD采樣結(jié)果低8位送W寄存器 BCF STATUS,RP1 ;選擇體0 BCF STATUS,RP0 ; MOVWF AD1L ;存儲(chǔ)低8位到AD1L寄存器 MOVF ADRESH,0 ;存儲(chǔ)高8位到AD1H寄存器 MOVWF AD1H GOTO NEXT4NEXT2 BSF STATUS,RP1 ;選擇體1 BCF STATUS,RP0 ; MOVF ADRESL,0 ;AD采樣結(jié)果低8位送W寄存器 BC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論