版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目六綜合應(yīng)用項(xiàng)目
任務(wù)1遠(yuǎn)程報(bào)警裝置的設(shè)計(jì)任務(wù)2出租車計(jì)費(fèi)器的設(shè)計(jì)任務(wù)1遠(yuǎn)程報(bào)警裝置的設(shè)計(jì)
知識(shí)目標(biāo):了解和掌握單片機(jī)的外圍基本芯片的搭接方法,掌握DS18B20溫度模塊、數(shù)據(jù)處理模塊及顯示模塊的設(shè)計(jì)方法。
能力目標(biāo):掌握DS18B20的搭建方式、通信過(guò)程和LCD顯示模塊的設(shè)計(jì)方法。
1.任務(wù)要求
(1)以MCS-51系列單片機(jī)為核心器件,組成一個(gè)遠(yuǎn)程報(bào)警裝置。
(2)本裝置的溫度范圍為?-20℃~70℃。
(3)溫度用LCD顯示,至少能夠顯示一位小數(shù)。
(4)能設(shè)定報(bào)警溫度。
2.硬件設(shè)計(jì)
本設(shè)計(jì)主要有DS18B20芯片、LCD顯示模塊及報(bào)警用的蜂鳴器,其硬件總體設(shè)計(jì)如圖6-1所示。
3.主程序流程圖
主程序流程圖如圖6-2所示。圖6-1硬件總體設(shè)計(jì)圖6-2主程序流程圖
4.主程序設(shè)計(jì)
程序清單如下:
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
ADC EQU 35H
TCNTA EQU 36H
TCNTB EQU 37H
H_TEMP EQU 46H ;溫度上限
L_TEMP EQU -14H ;溫度下限
FLAG BIT 00H
H_ALM BIT P3.0
L_ALM BIT P3.1
SOUND BIT P3.7
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP INT_T1
START: MOV LED_0, #00H
MOV LED_1, #00H
MOV LED_2, #00H
MOV DPTR, #TABLE
MOV H_TEMP, #60
MOV L_TEMP, #30
MOV TMOD, #12H
MOV TH0, #245
MOV TL0, #0
MOV TH1, #(65536-1000)/256
MOV TL1, #(65536-1000)%256
MOV IE, #8aH
CLR C
SETB TR0 ;為ADC0808提供時(shí)鐘
WAIT: SETB H_ALM
SETB L_ALM
CLR ST
SETB ST
CLR ST ;啟動(dòng)轉(zhuǎn)換
JNB EOC,$
SETB OE
MOV ADC,P1 ;讀取A/D轉(zhuǎn)換結(jié)果
CLR OE
MOV A,ADC
SUBB A,#30 ;判斷是否低于下限
JC LALM
MOV A,H_TEMP
MOV R0,ADC
SUBB A,R0 ;判斷是否高于上限
JC HALM
CLR TR1
LJMP PTOC
LALM: ;低溫報(bào)警
CLR L_ALM
SETB TR1
CLR FLAG
LJMP PTOC
HALM: ;高溫報(bào)警
CLR H_ALM
SETB TR1
SETB FLAG
LJMP PtOC
PTOC: MOV A,ADC ;數(shù)值轉(zhuǎn)換
MOV B,#100
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#10
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP
SJMP WAIT
INT_T0: CPL CLOCK ;提供89C51時(shí)鐘
RETI
INT_T1: MOV TH1,#(65536-1000)/256
MOV TL1,#(65536-1000)%256
CPL SOUND
INC TCNTA
MOV A,TCNTA
JB FLAG,I1 ;判斷是高溫警報(bào)還是低溫警報(bào)
CJNE A,#30,RETUNE ;低溫警報(bào)聲
SJMP I2
I1: CJNE A,#20,RETUNE ;高溫警報(bào)聲
I2: MOV TCNTA,#0
INC TCNTB
MOV A,TCNTB
CJNE A,#25,RETUNE
MOV TCNTA,#0
MOV TCNTB,#0
LCALL DELAY2
RETUNE: RETI
DISP: MOV A,LED_0 ;數(shù)碼顯示子程序
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: MOV R6,#10
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
DELAY2: MOV R5,#20
D2: MOV R6,#20
D3: MOV R7,#250
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
RET
TABLE: DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,FH
END
5.知識(shí)鏈接
1)
DS18B20原理及引腳介紹
DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire(即單總線器件),具有線路簡(jiǎn)單、體積小的特點(diǎn)。因此,用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),線路簡(jiǎn)單,并且在一根通信線上,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20產(chǎn)品的特點(diǎn)如下:
(1)只要求一個(gè)端口即可實(shí)現(xiàn)通信。
(2)在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。
(3)實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。
(4)測(cè)量溫度范圍為-55℃~+125℃。
(5)數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。
(6)內(nèi)部有溫度上、下限告警設(shè)置。
DS18B20的引腳功能描述如下:
(1)?GND—地信號(hào)。
(2)?DQ—數(shù)據(jù)輸入/輸出引腳。開(kāi)漏極單總線接口引腳。當(dāng)工作于寄生電源時(shí),也可以向器件提供電源。
(3)?VDD—電源引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。
2)?DS18B20控制命令
DS18B20的ROM命令如表6-1所示。
DS18B20存儲(chǔ)控制命令如表6-2所示。
表6-1DS18B20的ROM命令
表6-2DS18B20存儲(chǔ)控制命令
DS18B20程序如下:
WENDU_L EQU29H ;用于保存讀出溫度的低字節(jié)
WENDU_H EQU28H ;用于保存讀出溫度的高字節(jié)
XIAOSHU EQU27H ;用于保存溫度的小數(shù)部分
ZHENGSHU EQU26H ;用于保存整數(shù)部分
BIAOZHI BIT50H ;DS18B20檢查位:1為存在,0為不存在
ORG
0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SCON,#00H
ACALL DUWEN
ACALL ZHENGHE
ACALL BCD
ACALL DISP
ACALL TIME1
AJMP MAIN
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;讀溫度子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
DUWEN: SETBP2.0
ACALLFUWEI
;讀溫度之前必須先復(fù)位
JBBIAOZHI,CUNZAI ;查看標(biāo)志位看DS18B20是否存在,1為存在,0為不存在
RET
;不存在則返回
CUNZAI:
;存在則開(kāi)始讀溫度
MOV A,#0CCH
;跳過(guò)ROM匹配
ACALL XIE
;調(diào)寫(xiě)子程序
MOV A,#44H
;發(fā)出溫度轉(zhuǎn)換命令
ACALL XIE
;調(diào)寫(xiě)子程序
ACALL TIME1
;調(diào)1秒延時(shí),等A/D轉(zhuǎn)換完成,現(xiàn)在分辨率為12位,
;溫度最大轉(zhuǎn)換時(shí)間為750ms
ACALL FUWEI
;讀溫前需要復(fù)位
MOV A,#0CCH
;跳過(guò)ROM匹配
ACALL XIE
MOV A,#0BEH
;發(fā)讀溫度命令
ACALL XIE
ACALL DUSHU
;將輸出數(shù)據(jù)讀回
CLR P1.2
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;復(fù)位子程序
;DS18B20復(fù)位需要將數(shù)據(jù)位拉低500μs
;DS18B20收到信號(hào)后要等待16~60μs,然后發(fā)出60~240μs的低脈沖
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
FUWEI: SETB P2.0
NOP
CLR P2.0
MOV R0,#3
INTE: MOV R1,#107
;設(shè)一個(gè)537μs延時(shí)
KK1: DJNZ R1,KK1
DJNZ R0,INTE
SETB P2.0
;拉高數(shù)據(jù)線,等待回應(yīng)
NOP
NOP
NOP
MOV R0,#25
INTE1: JNB P2.0,INTE2 ;延時(shí)50μs等待DS18B20回應(yīng),若返回低脈沖則
;說(shuō)明DS18B20存在
DJNZ R0,INTE1
AJMP INTE3
;經(jīng)過(guò)反應(yīng)時(shí)間而未檢測(cè)到DS18B20的存在,
;則跳轉(zhuǎn)去清零標(biāo)志位
INTE2: SETB BIAOZHI
;檢測(cè)到DS18B20存在,標(biāo)志位置1
CLR P1.0
AJMP INTE4
INTE3: CLR BIAOZHI
;未檢測(cè)到DS18B20,標(biāo)志位清零
AJMP INTE5
INTE4: MOV R0,#120
;延時(shí)240μs,確定回應(yīng)信號(hào)已發(fā)完
KK:
DJNZ R0,KK
INTE5: SETB P2.0
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;寫(xiě)DS18B20子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
XIE: MOV R2,#8
;寫(xiě)計(jì)數(shù)寄存器,一共有8位數(shù)據(jù)
CLR C
LP: CLR P2.0
MOV R3,#6
;設(shè)一個(gè)延時(shí)
LL1: DJNZ R3,LL1
RRC A
;右循環(huán),先輸出低位
MOV P2.0,C
MOV R3,#23
;設(shè)延時(shí)
LL: DJNZ R3,LL
SETB P2.0
NOP
NOP
DJNZ R2,LP
;判斷是否完成數(shù)據(jù)傳送
SETB P2.0
;完成傳送,拉高數(shù)據(jù)位
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;從DS18B20中讀出溫度數(shù)據(jù)子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
DUSHU: MOV R4,#2
;設(shè)讀回?cái)?shù)據(jù)個(gè)數(shù)指針
MOV R1,#WENDU_L
;把溫度數(shù)據(jù)低位存入29H
RE: MOV R2,#8
;設(shè)數(shù)據(jù)長(zhǎng)度指針
RE1:
CLR
C
SETB P2.0
NOP
NOP
CLR P2.0
NOP
NOP
NOP
SETB P2.0
MOV R3,#9
DJNZ R3,$
MOV C,P2.0
MOV R3,#23
NN:
DJNZ R3,NN
RRC
A
DJNZ R2,RE1
MOV @R1,A
DEC R1
;高位存入28H
DJNZ R4,RE
RET
;-----------------------------------------------------------------------
------------------------------------------------------------------------
;數(shù)據(jù)整合子程序
;溫度源數(shù)據(jù)的整合,讀出數(shù)據(jù)的高字節(jié)的低四位決定溫度的整數(shù)部分
;低字節(jié)的低四位決定小數(shù)部分
;------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
ZHENGHE:
MOV A,#0FH
ANL A,WENDU_L
;低字節(jié)的低四位就是小數(shù)部分
MOV XIAOSHU,A
;獲得小數(shù)部分
MOV A,WENDU_L
;將高字節(jié)的低四位移入低字節(jié)的高四位
MOV C,40H
;獲得的新字節(jié)就是整數(shù)部分的數(shù)據(jù)
RRC A
MOV C,41H
RRC A
MOV C,42H
RRC A
MOV C,43H
RRC A
MOV ZHENGSHU,A
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;顯示數(shù)據(jù)拆解程序、顯示程序、延時(shí)程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;數(shù)據(jù)拆解程序
BCD:
MOV A,ZHENGSHU
MOV B,#10
DIV AB
MOV 50H,A
MOV 51H,B
MOV A,XIAOSHU
MOV R0,#52H
MOV R2,#4
D0: MOV B,#10
MUL AB
MOV B,#16
DIV AB
MOV @R0,A
INC R0
MOV A,B
DJNZ R2,D0
RET
;-----------------------------------
;顯示程序
;----------------------------------
DISP:
ACALL TIME
MOV R7,#6
MOV DPTR,#TAB
MOV R0,#55H
LP1: MOV A,@R0;
MOVC A,@A+DPTR
CJNE R7,#2,NE1
ANL A,#07FH
NE1: MOV SBUF,A
JNB TI,$
CLR TI
DEC R0
DJNZ R7,LP1
RET
;----------------------------------------
;延時(shí)程序
;----------------------------------------
TIME1: MOV R6,#4
LOOP2: MOV R5,#250
LOOP1: ACALL D1MS
DJNZ R5,LOOP1
DJNZ R6,LOOP2
RET
TIME: MOV R6,#200
LOOP3: ACALL D1MS
DJNZ R6,LOOP3
RET
D1MS: MOV R7,#250
LOOP0: NOP
NOP
NOP
DJNZR7,LOOP0
RET
TAB: DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
DB0FFH
END任務(wù)2出租車計(jì)費(fèi)器的設(shè)計(jì)
知識(shí)目標(biāo):了解應(yīng)用單片機(jī)的定時(shí)/計(jì)數(shù)器以及中斷。
能力目標(biāo):會(huì)使用定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)。
1.任務(wù)要求
本系統(tǒng)假設(shè)速度恒定60km/h(1km/min),單價(jià)一定1.2元/km,起步價(jià)6.0元,超過(guò)三公里開(kāi)始計(jì)費(fèi),每公里加1.2元。由于速度恒定,所以計(jì)算的核心是時(shí)間。時(shí)間單元由單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)計(jì)算,延時(shí)1ms時(shí)間的初值由程序來(lái)設(shè)定。算法公式是:
費(fèi)用?=?起步價(jià)?+?(路程-3)?×?1.2
路程?=?速度?×?時(shí)間(速度恒定,60km/h,也就是1km/min)
若路程小于等于3,則收起步價(jià)6元,否則按費(fèi)用公式計(jì)算。
2.硬件電路的設(shè)計(jì)與制作(應(yīng)用Proteus畫(huà)電路原理圖)
1)整體硬件電路圖
整體硬件電路圖如圖6-3所示。圖6-3硬件電路圖由圖6-3我們可以清楚地看到,本電路控制核心是AT89C51芯片。該方案采用動(dòng)態(tài)顯示的方法。P0口作為數(shù)據(jù)總線口,分別把數(shù)據(jù)輸送到4個(gè)74LS273地址鎖存器中,而鎖存器的工作需要等待脈沖的到來(lái)。脈沖通過(guò)寫(xiě)地址端口P3.6和端口P2.0~P2.3并經(jīng)過(guò)或非門(mén)來(lái)產(chǎn)生。只有把數(shù)據(jù)送到外部接口時(shí),P3.6口才為低電平,P2.0~P2.3用來(lái)控制到底是把數(shù)據(jù)送往哪一個(gè)鎖存器。
3.應(yīng)用程序設(shè)計(jì)
1)程序流程圖的設(shè)計(jì)
該計(jì)費(fèi)器系統(tǒng)的軟件設(shè)計(jì)分為主程序模塊和顯示子程序模塊。
(1)主程序模塊。在主程序模塊中,需要完成對(duì)各接口芯片的初始化、出租車起步價(jià)和單價(jià)、中斷向量的設(shè)計(jì)以及開(kāi)中斷、循環(huán)等待等工作。另外,在主程序模塊中,還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作。其流程圖如圖6-4所示。圖6-4軟件設(shè)計(jì)流程圖當(dāng)按下輕觸開(kāi)關(guān)時(shí),開(kāi)始對(duì)系統(tǒng)初始化,價(jià)格和時(shí)間都顯示0,再次按下開(kāi)關(guān)后,時(shí)間單元開(kāi)始計(jì)時(shí),并計(jì)算時(shí)間是否超過(guò)3分鐘,超過(guò)3分鐘,則從第4分鐘開(kāi)始計(jì)費(fèi)。價(jià)格單元從起步價(jià)6.0元開(kāi)始計(jì)費(fèi),每多一分鐘,價(jià)格單元多加1.2元。
(2)顯示子程序模塊。顯示子程序由顯示時(shí)間子程序DIS1和顯示價(jià)格子程序DIS組成。時(shí)間由小時(shí)、分、秒三個(gè)單元組成,共六個(gè)數(shù)碼管。價(jià)格由元和角兩個(gè)單元組成,最大可顯示999.9元。
2)程序清單及分析
ORG 0000H ;初始化段地址
LJMP MAIN ;長(zhǎng)跳轉(zhuǎn)到主函數(shù)MAIN處
ORG 000BH ;TT0開(kāi)始地址
LJMP TT0 ;長(zhǎng)跳轉(zhuǎn)到TT0處
ORG 0030H ;主函數(shù)開(kāi)始地址,避開(kāi)00~30敏感段
MAIN: MOV SP,#40H ;設(shè)堆棧底指針,下一個(gè)數(shù)據(jù)將放在41H單元
MOV 70H,#60 ;價(jià)格單元的起步價(jià)
MOV 71H,#00 ;價(jià)格單元的十位和百位
MOV 72H,#00 ;秒單元清零
MOV 73H,#00 ;分單元清零
MOV 74H,#00 ;時(shí)單元清零
MOV 75H,#00 ;75H單元清零備用
CLR 00H
CLR 01H ;將00H、01H單元清零
MOV 6BH,#0AH ;將0AH(即十進(jìn)制10)放入6B單元
MOV R1,#76H ;把76H放到R1中
KKK: MOV @R1,#00H ;將76H單元的內(nèi)容清零
INC R1
DJNZ 6BH,KKK ;76H~7FH單元全部清零,備用
LCALL DIS;調(diào)用價(jià)格顯示子程序
LCALL DIS1;調(diào)用時(shí)間顯示子程序
MOV TMOD,#11H ;定時(shí)/計(jì)數(shù)器工作方式設(shè)置
MOV TH0,#3CH
MOV TL0,#0B0H ;這句和上一句設(shè)置延時(shí)50ms
MOV 6EH,#20 ;將6EH單元設(shè)置為20,達(dá)到1s的延時(shí)
G2: LCALL DIS;長(zhǎng)調(diào)用價(jià)格顯示子程序
LCALL DIS1;長(zhǎng)調(diào)用時(shí)間顯示子程序
JB P1.0,G2 ;開(kāi)關(guān)未按下,等待按下,顯示初始狀態(tài),全部為零
LCALL TIME1;調(diào)用TIME1延時(shí)子程序
JB P1.0,G2;開(kāi)關(guān)未按下,跳到G2,否則轉(zhuǎn)到下一步
G1: LCALL DIS
LCALL DIS1
JNB P1.0,G1;開(kāi)關(guān)按下,繼續(xù)顯示價(jià)格和時(shí)間,并轉(zhuǎn)到中斷
SETB EA ;開(kāi)中斷
SETB ET0;定時(shí)器0中斷允許,向CPU申請(qǐng)中斷
SETB TR0 ;定時(shí)器0工作允許
SETB 01H ;01H單元置位
LLL: LCALL CHAI;調(diào)用現(xiàn)場(chǎng)保護(hù)子程序
LCALL DIS
LCALL JISUAN;調(diào)用計(jì)算子程序
LCALL DIS1
JB P1.0,G3;開(kāi)關(guān)沒(méi)按下,則返回
LCALL TIME1
JB P1.0,G3
CPL 01H;01H單元此時(shí)為零
JNB 01H,G5 ;01H單元內(nèi)容為0,跳到G5
SETB ET0;定時(shí)器0中斷允許,向CPU申請(qǐng)中斷
G6: LCALL DIS
LCALL DIS1
JNB P1.0,G6;開(kāi)關(guān)按下,顯示所走的時(shí)間及費(fèi)用
LJMP MAIN;重新等待下一個(gè)工作狀態(tài)
G5: CLR ET0
G4: LCALL DIS
LCALL DIS1
JNB P1.0,G4
G3: LJMP LLL
TT0: CLR ET0 ;定時(shí)一秒
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB ET0
DJNZ 6EH,JJJ
LCALL ADD1
MOV 6EH,#20
JJJ: RETI
DIS: MOV 6DH,#06H ;價(jià)格顯示子程序
MOV R0,#7AH
MOV 6CH,#0FEH
HHH: MOV DPTR,#0FDFFH;數(shù)據(jù)指針出口地址,低8位給P0口,高8給位P2口
MOV A,6CH
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TAB ;查表首地址
MOVC A,@A+DPTR ;查表值送A
MOV DPTR,#0FEFFH
MOVX @DPTR,A
LCALL TIME1
MOV A,6CH
RLA
MOV 6CH,A
INC R0
DJNZ 6DH,HHH
RET
DIS1: MOV 6DH,#04H ;時(shí)間顯示子程序
MOV R0,#72H
MOV 6CH,#0FEH
HHH1: MOV DPTR,#0F7FFH ;FF給P0口,F7給P1.0~P1.3口
MOV A,6CH
MOVX @DPTR,A ;將6CH的內(nèi)容放到0F7FFH中
MOV A,@R0
MOV DPTR,#TAB ;查表首地址
MOVC A,@A+DPTR ;查表值送A
MOV DPTR,#0FBFFH
MOV R1,6DH
CJNE R1,#03H,K1
ORL A,#80H
K1: MOVX @DPTR,A
LCALL TIME1
MOV A,6CH
RL A
MOV 6CH,A
INC R0
DJNZ 6DH,HHH1
RET
TIME1: MOV 6AH,#0AH /*延時(shí)子程序*/
FFF: MOV 69H,#0AH
GGG: DJNZ 69H,GGG
DJNZ 6AH,FFF
RET
JISUAN:
JB 00H,K2 /*判斷是否超過(guò)3公里及計(jì)算價(jià)格子程序*/
MOV A,78H
CLR C
SUBB A,#03H
MOV 73H,#06H
JC K3
SETB 00H
LJMP K3
K2: MOV R3,71H
MOV R4,70H
MOV R2,#00H
MOV R5,#00H
MOV R6,#03H
MOV R7,#0E8H
LCALL NDIV42
MOV 75H,R4
MOV A,R6
MOV R3,A
MOV A,R7
MOV R4,A
MOV R2,#00H
MOV R7,#100
LCALL NDIV31
MOV 74H,R4
MOV A,R7
MOV B,#10
DIV AB
MOV 73H,A
MOV 72H,B
K3: RET
CHAI: MOV 6FH,#03H /*保護(hù)現(xiàn)場(chǎng)子程序*/
MOV R0,#77H
MOV R1,#7AH
ZZZ: MOV A,@R0
ANL A,#0FH ;保存77H單元中的低4位
MOV @R1,A
MOV A,@R0
SWAP A
ANL A,#0FH
INC R1
MOV @R1,A
INC R0
INC R1
DJNZ 6FH,ZZZ ;循環(huán)三次
RET
ADD1: MOV A,77H /*加一子程序*/
CJNE A,#59H,L18
LJMP L19
L18: ADD A,#01H
DA A
MOV 77H,A
LJMP L24
L19: MOV 77H,#00H
JNB 00H,S1
CLR C
MOV A,70H
ADD A,#12
MOV 70H,A
MOV A,71H
ADDC A,#00H
MOV 71H,A
S1: MOV A,78H
CJNE A,#59H,L20
LJMP L21
L20: ADD A,#01H
DA A
MOV 78H,A
LJMP L24
L21: MOV 78H,#00H
MOV A,79H
CJNE A,#23H,L22
LJMP L23
L22: ADD A,#01H
DA A
MOV 79H,A
L23: MOV 79H,#00H
L24: RET
NDIV42: MOV A,R1 /*四除二子程序*/
PUSH ACC
MOV B,#00H
NDV421: MOV A,R2
CLR C
SUBB A,R7
MOV R1,A
MOV A,R5
SUBB A,R6
JC NDV422
MOV R5,A
MOV A,R1
MOV R2,A
INC B
SJMP NDV421
NDV422: PUSH B
MOV B,#10H
NDV423: CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
XCH A,R5
RLC A
XCH A,R5
MOV F0,C
CLR C
SUBB A,R7
MOV R1,A
MOV A,R5
SUBB A,R6
JB F0,NCV424
JC NDV425
NCV424: MOV R5,A
MOV A,R1
MOV R2,A
INC R4
NDV425: DJNZ B,NDV423
POP ACC
CLR OV
JNZ NDV426
SETB OV
NDV426: XCH A,R2
MOV R7,A
MOV A,R5
MOV R6,A
POP ACC
MOV R1,A
RET
NDIV31: MOV A,R2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人自查自糾整改報(bào)告
- 2025年貿(mào)易業(yè)務(wù)自查自糾報(bào)告
- 快餐連鎖品牌服務(wù)標(biāo)準(zhǔn)與流程手冊(cè)
- 小學(xué)英語(yǔ)綜合能力競(jìng)賽試題集
- 校企合作實(shí)踐教學(xué)實(shí)施方案
- 施工單位安全風(fēng)險(xiǎn)防范措施
- 小學(xué)數(shù)學(xué)課堂教學(xué)質(zhì)量分析
- 餐飲連鎖食品原料采購(gòu)管理流程
- 生態(tài)環(huán)保氧化塘施工技術(shù)規(guī)范
- 房地產(chǎn)中介服務(wù)管理流程
- 人教版數(shù)學(xué)四年級(jí)上冊(cè)期末測(cè)試卷及答案 (共八套)-2
- 淮安市2022-2023學(xué)年七年級(jí)上學(xué)期期末道德與法治試題【帶答案】
- 大轉(zhuǎn)爐氧槍橡膠軟管和金屬軟管性能比較
- 四川省內(nèi)江市2023-2024學(xué)年高二上學(xué)期期末檢測(cè)生物試題
- 02-廢氣收集系統(tǒng)-風(fēng)管設(shè)計(jì)課件
- 2022ABBUMC100.3智能電機(jī)控制器
- 天津東疆我工作圖0718
- GB/T 19367-2022人造板的尺寸測(cè)定
- 北京春季化學(xué)會(huì)考試卷及答案
- 數(shù)學(xué)建模插值與擬合
- GB/T 34528-2017氣瓶集束裝置充裝規(guī)定
評(píng)論
0/150
提交評(píng)論