add DLO,a
b0bts0 FC
incms DHI
nop
MOV a,AHI
add DHI,a
;;;;
Notadd:
rrcm DHI
rrcm DLO
rrcm EHI
rrcm ELO
decms counter
jmp Mpyloop
ret
;;==========================================
Div32: ;;;INPUT :(DIVID)AHI,ALO;(BY DIVID)DHI,DLO,EHI,ELO
;;;OUTPUT :(RESULT)BHI,BLO;(REST)CHI,CLO
;;==========================================
MOV a,#20h
b0 MOV counter,a
clr BHI
clr BLO
clr CHI
clr CLO
;;;;;;;;;;;
Divloop:
b0bclr FC
rlcm ELO
rlcm EHI
rlcm DLO
rlcm DHI
rlcm CLO
rlcm CHI
b0 MOV a,CHI
sub a,AHI
b0bts1 FZ
jmp Nochk
b0 MOV a,CLO
sub a,ALO
b0bts1 FC
jmp Nogo
jmp Nochk01
Nochk:
b0bts1 FC
jmp Nogo
b0 MOV a,CLO
sub a,ALO
b0bts1 FC
decms CHI
nop
Nochk01:
b0 MOV a,CLO
sub a,ALO
b0 MOV CLO,a
b0 MOV a,CHI
sub a,AHI
b0 MOV CHI,a
b0bset FC
Nogo:
rlcm BLO
rlcm BHI
decms counter
jmp Divloop
ret
;*********
;***************************
CalculatePower:
; CLR AHI
; MOV a,#0xdc
; b0 MOV ALO,a ;220V
; b0 MOV a,CurrentL
; b0 MOV BLO,a
; b0 MOV a,CurrentH
; b0 MOV BHI,a
; call Mpy16
b0 MOV a,CurrentH
sub a,#3
b0bts1 FC
; jmp $+5
; b0 MOV a,CurrentL
; sub a,#0xf0
; b0bts1 FC
jmp CalculatePowerError
clr errorcounter1
b0bclr CurrentError
call Multiplication
b0 MOV a,BHI
b0bts1 FZ
jmp DecTime
b0 MOV a,DHI
sub a,PowerBufferHH
b0bts1 FZ
jmp NotAdj
b0 MOV a,DLO
sub a,PowerBufferH
b0bts1 FZ
jmp NotAdj
AdjMiddle:
b0 MOV a,EHI
sub a,PowerBufferM
b0bts1 FZ
jmp NotAdj
AdjLow:
b0 MOV a,ELO
sub a,PowerBufferL
NotAdj:
b0bts1 FC
jmp IncTime
DecTime:
b0 MOV a,TimerDrvH
sub a,#0x30
b0bts1 FC
ret
decms TimerDrvH
nop
ret
IncTime:
b0 MOV a,TimerDrvH
sub a,#0xf0
b0bts0 FC
ret
incms TimerDrvH
nop
ret
CalculatePowerError:
b0 MOV a,errorcounter1
sub a,#250
b0bts0 FC
jmp $+3
incms errorcounter1
ret
b0bset CurrentError
ret
;****************************
BuzShort_10:
b0bset BuzzerShort
MOV a,#10
jmp BuzActive
BuzLong_5:
b0bclr BuzzerShort
MOV a,#5
jmp BuzActive
BuzShort_3:
MOV a,#3
jmp $+2
BuzShort_1:
MOV a,#1
b0bset BuzzerShort
BuzActive:
b0 MOV BuzNumber,a
b0bset BuzzerIsOn
clr TimerBuz
b0bclr BUZZER
b0bset BuzzerEnable
ret
;****************************
;Test temperature subroutine
;****************************
TestTemperature:
; b0bclr TestTemperatureEnable
b0bclr FADLEN
MOV a,#0x93
b0 MOV ADM,a
MOV a,#0x20
b0 MOV ADR,a
b0bset FADS
b0bts1 FEOC
jmp $-1
b0 MOV a,ADB
b0 MOV resultH,a
b0 MOV a,ADR
and a,#00001111b
b0 MOV resultL,a
swap resultH
and a,#11110000b
or resultL,a
swapm resultH
MOV a,#00001111b
and resultH,a
b0 MOV a,resultH
b0bts1 FZ
jmp $+5
b0 MOV a,resultL
sub a,#0x10
b0bts1 FC
jmp TestTemperature01
b0 MOV a,resultH
sub a,#0x0f
b0bts0 FC
jmp TestTemperature01
clr errorcounter
b0bclr TempError
ret
TestTemperature01:
b0 MOV a,errorcounter
sub a,#5
b0bts0 FC
jmp $+3
incms errorcounter
ret
b0bset TempError
ret
;****************************
;Test current subroutine
;****************************
TestCurrent:
b0bclr FADLEN
MOV a,#0x97
b0 MOV ADM,a
MOV a,#0x20
b0 MOV ADR,a
b0bset FADS
b0bts1 FEOC
jmp $-1
b0 MOV a,ADB
b0 MOV CurrentH,a
b0 MOV a,ADR
and a,#00001111b
b0 MOV CurrentL,a
swap CurrentH
and a,#11110000b
or CurrentL,a
swapm CurrentH
MOV a,#00001111b
and CurrentH,a
ret
;****************************
;Test voltage subroutine
;****************************
TestVoltage:
b0bclr FADLEN
MOV a,#0x91
b0 MOV ADM,a
MOV a,#0x20
b0 MOV ADR,a
b0bset FADS
b0bts1 FEOC
jmp $-1
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:程序 电磁炉 松翰单片机,单片机-工控设备 - 松翰单片机