📄 lu.asm
字号:
; clr keyactivebuffer
DisplayScan01:
b0mov a,commbuffer
cmprs a,#1
jmp $+2
jmp DisplayScan03
cmprs a,#2
jmp $+2
jmp DisplayScan04
cmprs a,#3
jmp $+2
jmp DisplayScan05
cmprs a,#4
jmp $+2
jmp DisplayScan06
DisplayScan02:
b0bset COM0
b0mov a,data0
jmp DisplayScanEnd
DisplayScan03:
b0bset COM1
b0mov a,data1
jmp DisplayScanEnd
DisplayScan04:
b0bset COM2
b0mov a,data2
jmp DisplayScanEnd
DisplayScan05:
b0bset COM3
b0mov a,data3
jmp DisplayScanEnd
DisplayScan06:
b0bset COM4
b0bts0 On
jmp DisplayScan07
b0bclr DisplayOnOff
b0bts0 Flash
b0bset DisplayOnOff
DisplayScan07:
b0mov a,data4
DisplayScanEnd:
xor a,#0xff
b0mov displaybuffer,a
mov a,#10001111b
and P4,a
mov a,displaybuffer
and a,#01110000b
or P4,a
b0bclr P5.0
b0bts0 displaybuffer.0
b0bset P5.0
ret
;***************************
;interrput subroutine
;*********************
Interrupt:
b0bset FWDRST
push
b0mov accbuf,a
b0bclr FGIE
b0bts0 FT0IRQ
jmp SystemTimer
b0bts0 FP02IRQ
jmp IntZero
b0bts0 FP01IRQ
jmp IntTest
clr INTRQ
jmp InterruptEnd
;*********************
SystemTimer:
b0bclr FT0IRQ
mov a,#192 ;156 ;50uS
b0mov T0C,a
incms Timer200uS
nop
b0mov a,Timer200uS
sub a,#125 ;64
b0bts1 FC
jmp SystemTimer01
clr Timer200uS
b0bset F4mS
SystemTimer01:
b0mov a,TimerDrv
b0bts0 FZ
jmp SystemTimer02
decms TimerDrv
nop
jmp InterruptEnd
SystemTimer02:
b0bts1 Fdrv
jmp SystemTimer03
b0bclr Fdrv
b0mov a,TimerDrvH
b0mov TimerDrv,a
b0bset DRV
jmp InterruptEnd
SystemTimer03:
b0bclr DRV
InterruptEnd:
b0mov a,accbuf
pop
reti
;**********************************
IntTest:
b0bclr FP01IRQ
clr TestTime
jmp InterruptEnd
;**********************************
IntZero:
b0bclr FP02IRQ
b0bclr DRV
b0bset Fdrv
mov a,#0xff
sub a,TimerDrvH
b0mov TimerDrv,a
jmp InterruptEnd
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;***************
KeyScan:
b0mov a,P1
xor a,#0xff
b0mov buffer,a
rrcm buffer
rrcm buffer
b0mov a,buffer
and a,#00001111b
b0mov keybuffer,a
b0mov buffer,a
clr keycounter2
mov a,#4
b0mov keycounter1,a
KeyScan01:
rrcm buffer
b0bts0 FC
incms keycounter2
decms keycounter1
jmp KeyScan01
b0bclr KeyActive
mov a,keycounter2
b0bts0 FZ
jmp KeyScan02
cmprs a,#1
ret
b0mov a,keybuffer
cmprs a,keyactivebuffer
jmp $+2
ret
b0bset KeyActive
b0mov a,keybuffer
b0mov keyactivebuffer,a
ret
KeyScan02:
clr keyactivebuffer
clr keybuffer
ret
;*****************
DataVerify:
clr Y
b0mov Z,#0x0e
mov a,#0x00
DataVerify01:
add a,@YZ
decms Z
jmp DataVerify01
add a,@YZ
ret
;******************
TimeDisplay:
clr data0
clr data1
b0mov a,Minute
b0bts0 FZ
ret
sub a,#11
b0bts1 FC
jmp D10
b0mov a,Minute
sub a,#21
b0bts1 FC
jmp D20
b0mov a,Minute
sub a,#31
b0bts1 FC
jmp D30
b0mov a,Minute
sub a,#41
b0bts1 FC
jmp D40
b0mov a,Minute
sub a,#51
b0bts1 FC
jmp D50
D60:
b0bset DisplayTime60
ret
D50:
b0bset DisplayTime50
ret
D40:
b0bset DisplayTime40
ret
D30:
b0bset DisplayTime30
ret
D20:
b0bset DisplayTime20
ret
D10:
b0bset DisplayTime10
ret
;***************
;Main program
;****************
Reset:
b0bclr FGIE
InitPort
call DataVerify
cmprs a,sumbuffer
jmp Init02
b0mov Z,#0eh
Init01:
b0mov a,@YZ
b0bts1 FZ
jmp Init06
decms Z
jmp Init01
Init02:
ClearRam
clr flag0
b0bset BUZZER
b0bclr DRV
call BuzShort_3
;******
;******
Init06:
b0mov a,port1copy
b0mov P1,a
b0mov a,port2copy
b0mov P2,a
b0mov a,port4copy
b0mov P4,a
b0mov a,port5copy
b0mov P5,a
b0bset FGIE
clr INTRQ
Main:
b0bset FWDRST
call DataVerify
b0mov sumbuffer,a
b0mov a,P1
b0mov port1copy,a
b0mov a,P2
b0mov port2copy,a
b0mov a,P4
b0mov port4copy,a
b0mov a,P5
b0mov port5copy,a
BuzzerActive
b0bts0 F4mS
call SystemTimerEnd
b0bts0 CurrentError
jmp $+10
b0bts0 TempError
jmp $+8
b0bts1 Timering
jmp $+8
b0mov a,Minute
b0bts1 FZ
jmp $+5
call BuzLong_5
jmp $+2
call BuzShort_10
jmp OnOff01
b0bts1 KeyScanEnable
jmp NotKeyScan
b0bclr KeyScanEnable
call KeyScan
NotKeyScan:
b0bts0 KeyActive
jmp ReadKey
b0bts1 On
jmp Main
b0bts1 TestTemperatureEnable
jmp NotTestTemperature
call TestTemperature
b0bclr TestTemperatureEnable
b0mov a,resultH
sub a,TemperatureH
b0bts1 FZ
jmp $+3
b0mov a,resultL
sub a,TemperatureL
b0bts1 FC
jmp $+6
b0bclr DRV
b0bset Off
b0bclr FP02IEN
b0bclr FP02IRQ
jmp Main
b0bts1 Off
jmp NotTestTemperature
b0bclr Off
b0bset FP02IEN
mov a,#0x40
b0mov TimerDrvH,a
jmp Main
NotTestTemperature:
; b0bts1 On
; jmp Main
b0bts1 TestCurrentEnable
jmp Main
call TestCurrent
b0bclr TestCurrentEnable
call TestVoltage
call CalculatePower
NotTestCurrent:
jmp Main
;************
ReadKey:
b0bclr KeyActive
b0bts0 Konoff
jmp OnOff
b0bts1 On
jmp Main
call BuzShort_1
b0bts0 Kmode
jmp Mode
b0bts0 Kpower
jmp Power
;*******************
Time:
incms TimeBuffer
nop
b0mov a,TimeBuffer
sub a,#7
b0bts1 FC
jmp Time01
clr TimeBuffer
Time01:
mov a,TimeBuffer
b0mov Y,#TimeTable$m
b0mov Z,#TimeTable$l
add Z,a
movc
b0mov Minute,a
clr Second
b0bset Timering
b0mov a,TimeBuffer
b0bts0 FZ
b0bclr Timering
jmp Main
;****************************
OnOff:
call BuzShort_1
b0bts1 On
jmp OnOff02
OnOff01:
b0bclr On
b0bclr Timering
call Close
clr data0
clr data1
clr data2
clr data3
clr data4
clr ModeBuffer
clr PowerBuffer
clr TimeBuffer
clr Minute
clr errorcounter
b0bclr TempError
b0bclr CurrentError
clr errorcounter1
b0bclr FP02IEN
b0bclr FP01IEN
jmp Main
OnOff02:
b0bset On
call Open
b0bset DisplayOnOff
b0bset DisplayMode1
b0bset DisplayPower3
mov a,#3
b0mov ModeBuffer,a
b0mov PowerBuffer,a
clr TimeBuffer
b0bset FP02IEN
b0bset FP01IEN
mov a,#0x80
b0mov TimerDrvH,a
; mov a,#100
; b0mov TimerDrv,a
jmp Mode01
;****************************
Mode:
incms ModeBuffer
nop
b0mov a,ModeBuffer
sub a,#6
b0bts1 FC
jmp Mode01
mov a,#1
b0mov ModeBuffer,a
Mode01:
b0bclr DisplayMode1
b0bclr DisplayMode2
b0bclr DisplayMode3
b0bclr DisplayMode4
b0bclr DisplayMode5
mov a,ModeBuffer
cmprs a,#1
jmp $+2
jmp Mode1
cmprs a,#2
jmp $+2
jmp Mode2
cmprs a,#3
jmp $+2
jmp Mode3
cmprs a,#4
jmp $+2
jmp Mode4
Mode5:
b0bset DisplayMode5
mov a,#5
jmp ModeEnd
Mode1:
b0bset DisplayMode1
mov a,#3
jmp ModeEnd
Mode2:
b0bset DisplayMode2
mov a,#3
jmp ModeEnd
Mode3:
b0bset DisplayMode3
mov a,#3
jmp ModeEnd
Mode4:
b0bset DisplayMode4
mov a,#4
ModeEnd:
b0mov PowerBuffer,a
jmp Power01
;****************************
Power:
incms PowerBuffer
nop
b0mov a,PowerBuffer
sub a,#7
b0bts1 FC
jmp Power01
mov a,#1
b0mov PowerBuffer,a
Power01:
clr data2
b0bclr DisplayPower6
b0bclr DisplayPower5
mov a,PowerBuffer
cmprs a,#1
jmp $+2
jmp Power1
cmprs a,#2
jmp $+2
jmp Power2
cmprs a,#3
jmp $+2
jmp Power3
cmprs a,#4
jmp $+2
jmp Power4
cmprs a,#5
jmp $+2
jmp Power5
Power6:
b0bset DisplayPower6
Power5:
b0bset DisplayPower5
Power4:
b0bset DisplayPower4
Power3:
b0bset DisplayPower3
Power2:
b0bset DisplayPower2
Power1:
b0bset DisplayPower1
b0mov a,PowerBuffer
b0mov Y,#PowerTable$m
b0mov Z,#PowerTable$l
add Z,a
movc
b0mov PowerBufferL,a
b0mov a,R
b0mov PowerBufferM,a
b0mov a,PowerBuffer
b0mov Y,#PowerTableH$m
b0mov Z,#PowerTableH$l
add Z,a
movc
b0mov PowerBufferH,a
b0mov a,R
b0mov PowerBufferHH,a
b0mov a,PowerBuffer
b0mov Y,#TemperatureTable$m
b0mov Z,#TemperatureTable$l
add Z,a
movc
b0mov TemperatureL,a
b0mov a,R
b0mov TemperatureH,a
jmp Main
;**************
Close:
b0bset FanActive
mov a,#120
b0mov FanTime,a
ret
;**************
Open: b0bset FAN
b0bclr FanActive
ret
PowerTable:
; dw 0x0000,0x45d1,0x8342,0xc0b2,0xfe23,0x3b94,0x7904
dw 0x0000,0x0ed6,0x8601,0xfd2c,0x7457,0xeb85,0x62ad
PowerTableH:
; dw 0x00,0x17,0x21,0x2b,0x35,0x40,0x4a
dw 0x0000,0x4a6b,0x6b29,0x8be7,0xaca6,0xcd64,0xee23
TimeTable:
dw 0x00,10,20,30,40,50,60
TemperatureTable:
; dw 0x0000,0x013e,0x03a2,0x0674,0x0940,0x0b5c,0x0c4b
dw 0x0000,0x00e7,0x02e3,0x0578,0x085c,0x0ad0,0x0bdb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -