⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcl1.c

📁 基于SN8P1706芯片的电磁炉(源程序)
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -