日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
MCS-51單片機(jī)實(shí)用子程序庫(二)
MCS-51單片機(jī)實(shí)用子程序庫(二)
 更新時(shí)間:2008-7-26 19:48:47  點(diǎn)擊數(shù):3
【字體: 字體顏色

(11) 標(biāo)號: DIVS 功能:雙字節(jié)二進(jìn)制有符號數(shù)除法(補(bǔ)碼)
入口條件:被除數(shù)在R2、R3、R4、R5中,除數(shù)在R6、R7中。
出口信息:OV=0時(shí)商在R2、R3中,OV=1時(shí)溢出。
影響資源:PSW、A、B、R1~R7 堆棧需求: 5字節(jié)
DIVS: LCALL MDS ;計(jì)算結(jié)果的符號和兩個(gè)操作數(shù)的絕對值
PUSH PSW ;保存結(jié)果的符號
LCALL DIVD ;計(jì)算兩個(gè)絕對值的商
JNB OV,DVS1 ;溢出否?
POP ACC ;溢出,放去結(jié)果的符號,保留溢出標(biāo)志
RET
DVS1: POP PSW ;未溢出,取出結(jié)果的符號
MOV R4,#0
MOV R5,#0
MDSE: JB F0,MDS2 ;用補(bǔ)碼表示結(jié)果
CLR OV ;結(jié)果為正,原碼即補(bǔ)碼,計(jì)算成功
RET
MDS: CLR F0 ;結(jié)果符號初始化
MOV A,R6 ;判斷第二操作數(shù)的符號
JNB ACC.7,MDS1;為正,不必處理
CPL F0 ;為負(fù),結(jié)果符號取反
XCH A,R7 ;第二操作數(shù)取補(bǔ),得到其絕對值
CPL A
ADD A,#1
XCH A,R7
CPL A
ADDC A,#0
MOV R6,A
MDS1: MOV A,R2 ;判斷第一操作數(shù)或運(yùn)算結(jié)果的符號
JNB ACC.7,MDS3;為正,不必處理
CPL F0 ;為負(fù),結(jié)果符號取反
MDS2: MOV A,R5 ;求第一操作數(shù)的絕對值或運(yùn)算結(jié)果的補(bǔ)碼
CPL A
ADD A,#1
MOV R5,A
MOV A,R4
CPL A
ADDC A,#0
MOV R4,A
MOV A,R3
CPL A
ADDC A,#0
MOV R3,A
MOV A,R2
CPL A
ADDC A,#0
MOV R2,A
MDS3: CLR OV ;運(yùn)算成功
RET
 
(12) 標(biāo)號: SH2 功能:雙字節(jié)二進(jìn)制無符號數(shù)開平方(快速)

入口條件:被開方數(shù)在R2、R3中。
出口信息:平方根仍在R2、R3中,整數(shù)部分的位數(shù)為原數(shù)的一半,其余為小數(shù)。
影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
SH2: MOV A,R2
ORL A,R3
JNZ SH20
RET ;被開方數(shù)為零,不必運(yùn)算
SH20: MOV R7,#0 ;左規(guī)次數(shù)初始化
MOV A,R2
SH22: ANL A,#0C0H ;被開方數(shù)高字節(jié)小于40H否?
JNZ SQRH ;不小于40H,左規(guī)格化完成,轉(zhuǎn)開方過程
CLR C ;每左規(guī)一次,被開方數(shù)左移兩位
MOV A,R3
RLC A
MOV F0,C
CLR C
RLC A
MOV R3,A
MOV A,R2
MOV ACC.7,C
MOV C,F0
RLC A
RLC A
MOV R2,A
INC R7 ;左規(guī)次數(shù)加一
SJMP SH22 ;繼續(xù)左規(guī)
 
(13) 標(biāo)號: SH4 功能:四字節(jié)二進(jìn)制無符號數(shù)開平方(快速)

入口條件:被開方數(shù)在R2、R3、R4、R5中。
出口信息:平方根在R2、R3中,整數(shù)部分的位數(shù)為原數(shù)的一半,其余為小數(shù)。
影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
SH4: MOV A,R2
ORL A,R3
ORL A,R4
ORL A,R5
JNZ SH40
RET ;被開方數(shù)為零,不必運(yùn)算
SH40: MOV R7,#0 ;左規(guī)次數(shù)初始化
MOV A,R2
SH41: ANL A,#0C0H ;被開方數(shù)高字節(jié)小于40H否?
JNZ SQRH ;不小于40H,左規(guī)格化完成
MOV R6,#2 ;每左規(guī)一次,被開方數(shù)左移兩位
SH42: CLR C ;被開方數(shù)左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
DJNZ R6,SH42 ;被開方數(shù)左移完兩位
INC R7 ;左規(guī)次數(shù)加一
SJMP SH41 ;繼續(xù)左規(guī)
SQRH: MOV A,R2 ;規(guī)格化后高字節(jié)按折線法分為三個(gè)區(qū)間
ADD A,#57H
JC SQR2
ADD A,#45H
JC SQR1
ADD A,#24H
MOV B,#0E3H ;第一區(qū)間的斜率
MOV R4,#80H ;第一區(qū)間的平方根基數(shù)
SJMP SQR3
SQR1: MOV B,#0B2H ;第二區(qū)間的斜率
MOV R4,#0A0H;第二區(qū)間的平方根基數(shù)
SJMP SQR3
SQR2: MOV B,#8DH ;第三區(qū)間的斜率
MOV R4,#0D0H;第三區(qū)間的平方根基數(shù)
SQR3: MUL AB ;與區(qū)間基點(diǎn)的偏移量乘區(qū)間斜率
MOV A,B
ADD A,R4 ;累加到平方根的基數(shù)上
MOV R4,A
MOV B,A
MUL AB ;求當(dāng)前平方根的冪
XCH A,R3 ;求偏移量(存放在R2R3中)
CLR C
SUBB A,R3
MOV R3,A
MOV A,R2
SUBB A,B
MOV R2,A
SQR4: SETB C ;用減奇數(shù)法校正一個(gè)字節(jié)的平方根
MOV A,R4 ;當(dāng)前平方根的兩倍加一存入R5R6中
RLC A
MOV R6,A
CLR A
RLC A
MOV R5,A
MOV A,R3 ;偏移量小于該奇數(shù)否?
SUBB A,R6
MOV B,A
MOV A,R2
SUBB A,R5
JC SQR5 ;小于,校正結(jié)束,已達(dá)到一個(gè)字節(jié)的精度
INC R4 ;不小于,平方根加一
MOV R2,A ;保存新的偏移量
MOV R3,B
SJMP SQR4 ;繼續(xù)校正
SQR5: MOV A,R4 ;將一個(gè)字節(jié)精度的根存入R2
XCH A,R2
RRC A
MOV F0,C ;保存最終偏移量的最高位
MOV A,R3
MOV R5,A ;將最終偏移量的低八位存入R5中
MOV R4,#8 ;通過(R5R6/R2)求根的低字節(jié)
SQR6: CLR C
MOV A,R3
RLC A
MOV R3,A
CLR C
MOV A,R5
SUBB A,R2
JB F0,SQR7
JC SQR8
SQR7: MOV R5,A
INC R3
SQR8: CLR C
MOV A,R5
RLC A
MOV R5,A
MOV F0,C
DJNZ R4,SQR6 ;根的第二字節(jié)計(jì)算完,在R3中
MOV A,R7 ;取原被開方數(shù)的左規(guī)次數(shù)
JZ SQRE ;未左規(guī),開方結(jié)束
SQR9: CLR C ;按左規(guī)次數(shù)右移平方根,得到實(shí)際根
MOV A,R2
RRC A
MOV R2,A
MOV A,R3
RRC A
MOV R3,A
DJNZ R7,SQR9
SQRE: RET
 
(14) 標(biāo)號: HASC 功能:單字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換成雙字節(jié)ASCII碼

入口條件:待轉(zhuǎn)換的單字節(jié)十六進(jìn)制數(shù)在累加器A中。
出口信息:高四位的ASCII碼在A中,低四位的ASCII碼在B中。
影響資源:PSW、A、B 堆棧需求: 4字節(jié)
HASC: MOV B,A ;暫存待轉(zhuǎn)換的單字節(jié)十六進(jìn)制數(shù)
LCALL HAS1 ;轉(zhuǎn)換低四位
XCH A,B ;存放低四位的ASCII碼
SWAP A ;準(zhǔn)備轉(zhuǎn)換高四位
HAS1: ANL A,#0FH ;將累加器的低四位轉(zhuǎn)換成ASCII碼
ADD A,#90H
DA A
ADDC A,#40H
DA A
RET
 
(15) 標(biāo)號: ASCH 功能:ASCII碼轉(zhuǎn)換成十六進(jìn)制數(shù)

入口條件:待轉(zhuǎn)換的ASCII碼(30H~39H或41H~46H)在A中。
出口信息:轉(zhuǎn)換后的十六進(jìn)制數(shù)(00H~0FH)仍在累加器A中。
影響資源:PSW、A 堆棧需求: 2字節(jié)
ASCH: CLR C
SUBB A,#30H
JNB ACC.4,ASH1
SUBB A,#7
ASH1: RET
 
(16) 標(biāo)號:HBCD 功能:單字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成單字節(jié)BCD碼整數(shù)

入口條件:待轉(zhuǎn)換的單字節(jié)十六進(jìn)制整數(shù)在累加器A中。
出口信息:轉(zhuǎn)換后的BCD碼整數(shù)(十位和個(gè)位)仍在累加器A中,百位在R3中。
影響資源:PSW、A、B、R3 堆棧需求: 2字節(jié)
HBCD: MOV B,#100 ;分離出百位,存放在R3中
DIV AB
MOV R3,A
MOV A,#10 ;余數(shù)繼續(xù)分離十位和個(gè)位
XCH A,B
DIV AB
SWAP A
ORL A,B ;將十位和個(gè)位拼裝成BCD碼
RET
 
(17) 標(biāo)號: HB2 功能:雙字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在R6、R7中。
出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。
影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB2: CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
HB3: MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;十進(jìn)制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙字節(jié)十六進(jìn)制數(shù)的萬位數(shù)不超過6,不用調(diào)整
DJNZ R2,HB3 ;處理完16bit
RET
 
(18) 標(biāo)號: HBD 功能:單字節(jié)十六進(jìn)制小數(shù)轉(zhuǎn)換成單字節(jié)BCD碼小數(shù)

入口條件:待轉(zhuǎn)換的單字節(jié)十六進(jìn)制小數(shù)在累加器A中。
出口信息:CY=0時(shí)轉(zhuǎn)換后的BCD碼小數(shù)仍在A中。CY=1時(shí)原小數(shù)接近整數(shù)1。
影響資源:PSW、A、B 堆棧需求: 2字節(jié)
HBD: MOV B,#100 ;原小數(shù)擴(kuò)大一百倍
MUL AB
RLC A ;余數(shù)部分四舍五入
CLR A
ADDC A,B
MOV B,#10 ;分離出十分位和百分位
DIV AB
SWAP A
ADD A,B ;拼裝成單字節(jié)BCD碼小數(shù)
DA A ;調(diào)整后若有進(jìn)位,原小數(shù)接近整數(shù)1
RET
 
(19) 標(biāo)號: HBD2 功能:雙字節(jié)十六進(jìn)制小數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼小數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制小數(shù)在R2、R3中。
出口信息:轉(zhuǎn)換后的雙字節(jié)BCD碼小數(shù)仍在R2、R3中。
影響資源:PSW、A、B、R2、R3、R4、R5 堆棧需求: 6字節(jié)
HBD2: MOV R4,#4 ;四位十進(jìn)制碼
HBD3: MOV A,R3 ;原小數(shù)擴(kuò)大十倍
MOV B,#10
MUL AB
MOV R3,A
MOV R5,B
MOV A,R2
MOV B,#10
MUL AB
ADD A,R5
MOV R2,A
CLR A
ADDC A,B
PUSH ACC ;保存溢出的一位十進(jìn)制碼
DJNZ R4,HBD3 ;計(jì)算完四位十進(jìn)制碼
POP ACC ;取出萬分位
MOV R3,A
POP ACC ;取出千分位
SWAP A
ORL A,R3 ;拼裝成低字節(jié)BCD碼小數(shù)
MOV R3,A
POP ACC ;取出百分位
MOV R2,A
POP ACC ;取出十分位
SWAP A
ORL A,R2 ;拼裝成高字節(jié)BCD碼小數(shù)
MOV R2,A
RET
 
(20)標(biāo)號:BCDH 功能:單字節(jié)BCD碼整數(shù)轉(zhuǎn)換成單字節(jié)十六進(jìn)制整數(shù)

入口條件:待轉(zhuǎn)換的單字節(jié)BCD碼整數(shù)在累加器A中。
出口信息:轉(zhuǎn)換后的單字節(jié)十六進(jìn)制整數(shù)仍在累加器A中。
影響資源:PSW、A、B、R4 堆棧需求: 2字節(jié)
BCDH: MOV B,#10H ;分離十位和個(gè)位
DIV AB
MOV R4,B ;暫存?zhèn)位
MOV B,#10 ;將十位轉(zhuǎn)換成十六進(jìn)制
MUL AB
ADD A,R4 ;按十六進(jìn)制加上個(gè)位
RET
 
(21)標(biāo)號: BH2 功能:雙字節(jié)BCD碼整數(shù)轉(zhuǎn)換成雙字節(jié)十六進(jìn)制整數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼整數(shù)在R2、R3中。
出口信息:轉(zhuǎn)換后的雙字節(jié)十六進(jìn)制整數(shù)仍在R2、R3中。
影響資源:PSW、A、B、R2、R3、R4 堆棧需求: 4字節(jié)
BH2: MOV A,R3 ;將低字節(jié)轉(zhuǎn)換成十六進(jìn)制
LCALL BCDH
MOV R3,A
MOV A,R2 ;將高字節(jié)轉(zhuǎn)換成十六進(jìn)制
LCALL BCDH
MOV B,#100 ;擴(kuò)大一百倍
MUL AB
ADD A,R3 ;和低字節(jié)按十六進(jìn)制相加
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
RET
 
(22)標(biāo)號: BHD 功能:單字節(jié)BCD碼小數(shù)轉(zhuǎn)換成單字節(jié)十六進(jìn)制小數(shù)

入口條件:待轉(zhuǎn)換的單字節(jié)BCD碼數(shù)在累加器A中。
出口信息:轉(zhuǎn)換后的單字節(jié)十六進(jìn)制小數(shù)仍在累加器A中。
影響資源:PSW、A、R2、R3 堆棧需求: 2字節(jié)
BHD: MOV R2,#8 ;準(zhǔn)備計(jì)算一個(gè)字節(jié)小數(shù)
BHD0: ADD A,ACC ;按十進(jìn)制倍增
DA A
XCH A,R3
RLC A ;將進(jìn)位標(biāo)志移入結(jié)果中
XCH A,R3
DJNZ R2,BHD0 ;共計(jì)算8bit小數(shù)
ADD A,#0B0H ;剩余部分達(dá)到0.50否?
JNC BHD1 ;四舍
INC R3 ;五入
BHD1: MOV A,R3 ;取結(jié)果
RET

  • 上一篇: MCS-51單片機(jī)實(shí)用子程序庫(三)
  • 下一篇: MCS-51單片機(jī)實(shí)用子程序庫(一)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1