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

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

MCS-51單片機(jī)實(shí)用子程序庫(kù)

(23)標(biāo)號(hào): BHD2 功能:雙字節(jié)BCD碼小數(shù)轉(zhuǎn)換成雙字節(jié)十六進(jìn)制小數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼小數(shù)在R4、R5中。
出口信息:轉(zhuǎn)換后的雙字節(jié)十六進(jìn)制小數(shù)在R2、R3中。*
影響資源:PSW、A、R2~R6 堆棧需求: 2字節(jié)
BHD2: MOV R6,#10H ;準(zhǔn)備計(jì)算兩個(gè)字節(jié)小數(shù)
BHD3: MOV A,R5 ;按十進(jìn)制倍增
ADD A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3 ;將進(jìn)位標(biāo)志移入結(jié)果中
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
DJNZ R6,BHD3 ;共計(jì)算16bit小數(shù)
MOV A,R4
ADD A,#0B0H ;剩余部分達(dá)到0.50否?
JNC BHD4 ;四舍
INC R3 ;五入
MOV A,R3
JNZ BHD4
INC R2
BHD4: RET
 
(24) 標(biāo)號(hào): MM 功能:求單字節(jié)十六進(jìn)制無(wú)符號(hào)數(shù)據(jù)塊的極值

入口條件:數(shù)據(jù)塊的首址在DPTR中,數(shù)據(jù)個(gè)數(shù)在R7中。
出口信息:最大值在R6中,地址在R2R3中;最小值在R7中,地址在R4R5中。
影響資源:PSW、A、B、R1~R7 堆棧需求: 4字節(jié)
MM: MOV B,R7 ;保存數(shù)據(jù)個(gè)數(shù)
MOVX A,@DPTR ;讀取第一個(gè)數(shù)據(jù)
MOV R6,A ;作為最大值的初始值
MOV R7,A ;也作為最小值的初始值
MOV A,DPL ;取第一個(gè)數(shù)據(jù)的地址
MOV R3,A ;作為最大值存放地址的初始值
MOV R5,A ;也作為最小值存放地址的初始值
MOV A,DPH
MOV R2,A
MOV R4,A
MOV A,B ;取數(shù)據(jù)個(gè)數(shù)
DEC A ;減一,得到需要比較的次數(shù)
JZ MME ;只有一個(gè)數(shù)據(jù),不需要比較
MOV R1,A ;保存比較次數(shù)
PUSH DPL ;保護(hù)數(shù)據(jù)塊的首址
PUSH DPH
MM1: INC DPTR ;指向一個(gè)新的數(shù)據(jù)
MOVX A,@DPTR ;讀取這個(gè)數(shù)據(jù)
MOV B,A ;保存
SETB C ;與最大值比較
SUBB A,R6
JC MM2 ;不超過(guò)當(dāng)前最大值,保持當(dāng)前最大值
MOV R6,B ;超過(guò)當(dāng)前最大值,更新最大值存放地址
MOV R2,DPH ;同時(shí)更新最大值存放地址
MOV R3,DPL
SJMP MM3
MM2: MOV A,B ;與最小值比較
CLR C
SUBB A,R7
JNC MM3 ;大于或等于當(dāng)前最小值,保持當(dāng)前最小值
MOV R7,B ;更新最小值
MOV R4,DPH ;更新最小值存放地址
MOV R5,DPL
MM3: DJNZ R1,MM1 ;處理完全部數(shù)據(jù)
POP DPH ;恢復(fù)數(shù)據(jù)首址
POP DPL
MME: RET
 
(25) 標(biāo)號(hào): MMS 功能:求單字節(jié)十六進(jìn)制有符號(hào)數(shù)據(jù)塊的極值

入口條件:數(shù)據(jù)塊的首址在DPTR中,數(shù)據(jù)個(gè)數(shù)在R7中。
出口信息:最大值在R6中, 地址在R2R3中;最小值在R7中,地址在R4R5中。
影響資源:PSW、A、B、R1~R7 堆棧需求: 4字節(jié)
MMS: MOV B,R7 ;保存數(shù)據(jù)個(gè)數(shù)
MOVX A,@DPTR ;讀取第一個(gè)數(shù)據(jù)
MOV R6,A ;作為最大值的初始值
MOV R7,A ;也作為最小值的初始值
MOV A,DPL ;取第一個(gè)數(shù)據(jù)的地址
MOV R3,A ;作為最大值存放地址的初始值
MOV R5,A ;也作為最小值存放地址的初始值
MOV A,DPH
MOV R2,A
MOV R4,A
MOV A,B ;取數(shù)據(jù)個(gè)數(shù)
DEC A ;減一,得到需要比較的次數(shù)
JZ MMSE ;只有一個(gè)數(shù)據(jù),不需要比較
MOV R1,A ;保存比較次數(shù)
PUSH DPL ;保護(hù)數(shù)據(jù)塊的首址
PUSH DPH
MMS1: INC DPTR ;調(diào)整數(shù)據(jù)指針
MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)
MOV B,A ;保存
SETB C ;與最大值比較
SUBB A,R6
JZ MMS4 ;相同,不更新最大值
JNB OV,MMS2 ;差未溢出,符號(hào)位有效
CPL ACC.7 ;差溢出,符號(hào)位取反
MMS2: JB ACC.7,MMS4;差為負(fù),不更新最大值
MOV R6,B ;更新最大值
MOV R2,DPH ;更新最大值存放地址
MOV R3,DPL
SJMP MMS7
MMS4: MOV A,B ;與最小值比較
CLR C
SUBB A,R7
JNB OV,MMS6 ;差未溢出,符號(hào)位有效
CPL ACC.7 ;差溢出,符號(hào)位取反
MMS6: JNB ACC.7,MMS7;差為正,不更新最小值
MOV R7,B ;更新最小值
MOV R4,DPH ;更新最小值存放地址
MOV R5,DPL
MMS7: DJNZ R1,MMS1 ;處理完全部數(shù)據(jù)
POP DPH ;恢復(fù)數(shù)據(jù)首址
POP DPL
MMSE: RET
 
(26) 標(biāo)號(hào): FDS1 功能:順序查找(ROM)單字節(jié)表格

入口條件:待查找的內(nèi)容在A中,表格首址在DPTR中,表格的字節(jié)數(shù)在R7中。
出口信息:OV=0時(shí),順序號(hào)在累加器A中;OV=1時(shí),未找到。
影響資源:PSW、A、B、R2、R6 堆棧需求: 2字節(jié)
FDS1: MOV B,A ;保存待查找的內(nèi)容
MOV R2,#0 ;順序號(hào)初始化(指向表首)
MOV A,R7 ;保存表格的長(zhǎng)度
MOV R6,A
FD11: MOV A,R2 ;按順序號(hào)讀取表格內(nèi)容
MOVC A,@A+DPTR
CJNE A,B,FD12;與待查找的內(nèi)容比較
CLR OV ;相同,查找成功
MOV A,R2 ;取對(duì)應(yīng)的順序號(hào)
RET
FD12: INC R2 ;指向表格中的下一個(gè)內(nèi)容
DJNZ R6,FD11 ;查完全部表格內(nèi)容
SETB OV ;未查找到,失敗
RET
 
(27) 標(biāo)號(hào): FDS2 功能:順序查找(ROM)雙字節(jié)表格

入口條件:查找內(nèi)容在R4、R5中,表格首址在DPTR中,數(shù)據(jù)總個(gè)數(shù)在R7中。
出口信息:OV=0時(shí)順序號(hào)在累加器A中,地址在DPTR中;OV=1時(shí)未找到。
影響資源:PSW、A、R2、R6、DPTR 堆棧需求: 2字節(jié)
FDS2: MOV A,R7 ;保存表格中數(shù)據(jù)的個(gè)數(shù)
MOV R6,A
MOV R2,#0 ;順序號(hào)初始化(指向表首)
FD21: CLR A ;讀取表格內(nèi)容的高字節(jié)
MOVC A,@A+DPTR
XRL A,R4 ;與待查找內(nèi)容的高字節(jié)比較
JNZ FD22
MOV A,#1 ;讀取表格內(nèi)容的低字節(jié)
MOVC A,@A+DPTR
XRL A,R5 ;與待查找內(nèi)容的低字節(jié)比較
JNZ FD22
CLR OV ;相同,查找成功
MOV A,R2 ;取對(duì)應(yīng)的順序號(hào)
RET
FD22: INC DPTR ;指向下一個(gè)數(shù)據(jù)
INC DPTR
INC R2 ;順序號(hào)加一
DJNZ R6,FD21 ;查完全部數(shù)據(jù)
SETB OV ;未查找到,失敗
RET
 
(28) 標(biāo)號(hào):FDD1 功能:對(duì)分查找(ROM)單字節(jié)無(wú)符號(hào)增序數(shù)據(jù)表格


入口條件:待查找的內(nèi)容在累加器A中,表格首址在DPTR中,字節(jié)數(shù)在R7中。
出口信息:OV=0 時(shí),順序號(hào)在累加器A中;OV=1 時(shí),未找到。
影響資源:PSW、A、B、R2、R3、R4 堆棧需求: 2字節(jié)
FDD1: MOV B,A ;保存待查找的內(nèi)容
MOV R2,#0 ;區(qū)間低端指針初始化(指向第一個(gè)數(shù)據(jù))
MOV A,R7
DEC A
MOV R3,A ;區(qū)間高端指針初始化(指向最后一個(gè)數(shù)據(jù))
FD61: CLR C ;判斷區(qū)間大小
MOV A,R3
SUBB A,R2
JC FD69 ;區(qū)間消失,查找失敗
RRC A ;取區(qū)間大小的一半
ADD A,R2 ;加上區(qū)間的低端
MOV R4,A ;得到區(qū)間的中心
MOVC A,@A+DPTR;讀取該點(diǎn)的內(nèi)容
CJNE A,B,FD65;與待查找的內(nèi)容比較
CLR OV ;相同,查找成功
MOV A,R4 ;取順序號(hào)
RET
FD65: JC FD68 ;該點(diǎn)的內(nèi)容比待查找的內(nèi)容大否?
MOV A,R4 ;偏大,取該點(diǎn)位置
DEC A ;減一
MOV R3,A ;作為新的區(qū)間高端
SJMP FD61 ;繼續(xù)查找
FD68: MOV A,R4 ;偏小,取該點(diǎn)位置
INC A ;加一
MOV R2,A ;作為新的區(qū)間低端
SJMP FD61 ;繼續(xù)查找
FD69: SETB OV ;查找失敗
RET
 
(29) 標(biāo)號(hào):FDD2 功能:對(duì)分查找(ROM)雙字節(jié)無(wú)符號(hào)增序數(shù)據(jù)表格

入口條件:查找內(nèi)容在R4、R5中,表格首址在DPTR中,數(shù)據(jù)個(gè)數(shù)在R7中。
出口信息:OV=0 時(shí)順序號(hào)在累加器A中,址在DPTR中;OV=1 時(shí)未找到。
影響資源:PSW、A、B、R1~R7、DPTR 堆棧需求: 2字節(jié)
FDD2: MOV R2,#0 ;區(qū)間低端指針初始化(指向第一個(gè)數(shù)據(jù))
MOV A,R7
DEC A
MOV R3,A ;區(qū)間高端指針初始化,指向最后一個(gè)數(shù)據(jù)
MOV R6,DPH ;保存表格首址
MOV R7,DPL
FD81: CLR C ;判斷區(qū)間大小
MOV A,R3
SUBB A,R2
JC FD89 ;區(qū)間消失,查找失敗
RRC A ;取區(qū)間大小的一半
ADD A,R2 ;加上區(qū)間的低端
MOV R1,A ;得到區(qū)間的中心
MOV DPH,R6
CLR C ;計(jì)算區(qū)間中心的地址
RLC A
JNC FD82
INC DPH
FD82: ADD A,R7
MOV DPL,A
JNC FD83
INC DPH
FD83: CLR A ;讀取該點(diǎn)的內(nèi)容的高字節(jié)
MOVC A,@A+DPTR
MOV B,R4 ;與待查找內(nèi)容的高字節(jié)比較
CJNE A,B,FD84;不相同
MOV A,#1 ;讀取該點(diǎn)的內(nèi)容的低字節(jié)
MOVC A,@A+DPTR
MOV B,R5
CJNE A,B,FD84;與待查找內(nèi)容的低字節(jié)比較
MOV A,R1 ;取順序號(hào)
CLR OV ;查找成功
RET
FD84: JC FD86 ;該點(diǎn)的內(nèi)容比待查找的內(nèi)容大否?
MOV A,R1 ;偏大,取該點(diǎn)位置
DEC A ;減一
MOV R3,A ;作為新的區(qū)間高端
SJMP FD81 ;繼續(xù)查找
FD86: MOV A,R1 ;偏小,取該點(diǎn)位置
INC A ;加一
MOV R2,A ;作為新的區(qū)間低端
SJMP FD81 ;繼續(xù)查找
FD89: MOV DPH,R6 ;相同,恢復(fù)首址
MOV DPL,R7
SETB OV ;查找失敗
RET
 
(30) 標(biāo)號(hào): DDM1 功能:求單字節(jié)十六進(jìn)制無(wú)符號(hào)數(shù)據(jù)塊的平均值


入口條件:數(shù)據(jù)塊的首址在DPTR中,數(shù)據(jù)個(gè)數(shù)在R7中。
出口信息:平均值在累加器A中。
影響資源:PSW、A、R2~R6 堆棧需求: 4字節(jié)
DDM1: MOV A,R7 ;保存數(shù)據(jù)個(gè)數(shù)
MOV R2,A
PUSH DPH
PUSH DPL
CLR A ;初始化累加和
MOV R4,A
MOV R5,A
DM11: MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)
ADD A,R5 ;累加到累加和中
MOV R5,A
JNC DM12
INC R4
DM12: INC DPTR ;調(diào)整指針
DJNZ R2,DM11 ;累加完全部數(shù)據(jù)
LCALL D457 ;求平均值(R4R5/R7-→R3)
MOV A,R3 ;取平均值
POP DPL
POP DPH
RET
 
(31) 標(biāo)號(hào): DDM2 功能:求雙字節(jié)十六進(jìn)制無(wú)符號(hào)數(shù)據(jù)塊的平均值

入口條件:數(shù)據(jù)塊的首址在DPTR中,雙字節(jié)數(shù)據(jù)總個(gè)數(shù)在R7中。
出口信息:平均值在R4、R5中。
影響資源:PSW、A、R2~R6 堆棧需求: 4字節(jié)
DDM2: MOV A,R7 ;保存數(shù)據(jù)個(gè)數(shù)
MOV R2,A ;初始化數(shù)據(jù)指針
PUSH DPL ;保持首址
PUSH DPH
CLR A ;初始化累加和
MOV R3,A
MOV R4,A
MOV R5,A
DM20: MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)的高字節(jié)
MOV B,A
INC DPTR
MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)的低字節(jié)
INC DPTR
ADD A,R5 ;累加到累加和中
MOV R5,A
MOV A,B
ADDC A,R4
MOV R4,A
JNC DM21
INC R3
DM21: DJNZ R2,DM20 ;累加完全部數(shù)據(jù)
POP DPH ;恢復(fù)首址
POP DPL
LJMP DV31 ;求R3R4R5/R7-→R4R5,得到平均值
 
(32) 標(biāo)號(hào): XR1 功能:求單字節(jié)數(shù)據(jù)塊的(異或)校驗(yàn)和

入口條件:數(shù)據(jù)塊的首址在DPTR中,數(shù)據(jù)的個(gè)數(shù)在R6、R7中。
出口信息:校驗(yàn)和在累加器A中。
影響資源:PSW、A、B、R4~R7 堆棧需求: 2字節(jié)
XR1: MOV R4,DPH ;保存數(shù)據(jù)塊的首址
MOV R5,DPL
MOV A,R7 ;雙字節(jié)計(jì)數(shù)器調(diào)整
JZ XR10
INC R6
XR10: MOV B,#0 ;校驗(yàn)和初始化
XR11: MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)
XRL B,A ;異或運(yùn)算
INC DPTR ;指向下一個(gè)數(shù)據(jù)
DJNZ R7,XR11 ;雙字節(jié)計(jì)數(shù)器減一
DJNZ R6,XR11
MOV DPH,R4 ;恢復(fù)數(shù)據(jù)首址
MOV DPL,R5
MOV A,B ;取校驗(yàn)和
RET
 
(33) 標(biāo)號(hào): XR2 功能:求雙字節(jié)數(shù)據(jù)塊的(異或)校驗(yàn)和

入口條件:數(shù)據(jù)塊的首址在DPTR中,雙字節(jié)數(shù)據(jù)總個(gè)數(shù)在R6、R7中。
出口信息:校驗(yàn)和在R2、R3中。
影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
XR2: MOV R4,DPH ;保存數(shù)據(jù)塊的首址
MOV R5,DPL
MOV A,R7 ;雙字節(jié)計(jì)數(shù)器調(diào)整
JZ XR20
INC R6
XR20: CLR A ;校驗(yàn)和初始化
MOV R2,A
MOV R3,A
XR21: MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)的高字節(jié)
XRL A,R2 ;異或運(yùn)算
MOV R2,A
INC DPTR
MOVX A,@DPTR ;讀取一個(gè)數(shù)據(jù)的低字節(jié)
XRL A,R3 ;異或運(yùn)算
MOV R3,A
INC DPTR ;指向下一個(gè)數(shù)據(jù)
DJNZ R7,XR21 ;雙字節(jié)計(jì)數(shù)器減一
DJNZ R6,XR21
MOV DPH,R4 ;恢復(fù)數(shù)據(jù)首址
MOV DPL,R5
RET
 
(34) 標(biāo)號(hào): SORT 功能:?jiǎn)巫止?jié)無(wú)符號(hào)數(shù)據(jù)塊排序(增序)

入口條件:數(shù)據(jù)塊的首址在R0中,字節(jié)數(shù)在R7中。
出口信息:完成排序(增序)
影響資源:PSW、A、R2~R6 堆棧需求: 2字節(jié)
SORT: MOV A,R7
MOV R5,A ;比較次數(shù)初始化
SRT1: CLR F0 ;交換標(biāo)志初始化
MOV A,R5 ;取上遍比較次數(shù)
DEC A ;本遍比上遍減少一次
MOV R5,A ;保存本遍次數(shù)
MOV R2,A ;復(fù)制到計(jì)數(shù)器中
JZ SRT5 ;若為零,排序結(jié)束
MOV A,R0 ;保存數(shù)據(jù)指針
MOV R6,A
SRT2: MOV A,@R0 ;讀取一個(gè)數(shù)據(jù)
MOV R3,A
INC R0 ;指向下一個(gè)數(shù)據(jù)
MOV A,@R0 ;再讀取一個(gè)數(shù)據(jù)
MOV R4,A
CLR C
SUBB A,R3 ;比較兩個(gè)數(shù)據(jù)的大小
JNC SRT4 ;順序正確(增序或相同),不必交換
SETB F0 ;設(shè)立交換標(biāo)志
MOV A,R3 ;將兩個(gè)數(shù)據(jù)交換位置
MOV @R0,A
DEC R0
MOV A,R4
MOV @R0,A
INC R0 ;指向下一個(gè)數(shù)據(jù)
SRT4: DJNZ R2,SRT2 ;完成本遍的比較次數(shù)
MOV A,R6 ;恢復(fù)數(shù)據(jù)首址
MOV R0,A
JB F0,SRT1 ;本遍若進(jìn)行過(guò)交換,則需繼續(xù)排序
SRT5: RET ;排序結(jié)束
END

  • 上一篇: MCS-51單片機(jī)實(shí)用子程序庫(kù)(三)
  • 下一篇: MCS-51單片機(jī)實(shí)用子程序庫(kù)(二)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(pí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ī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(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ì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

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