Title induction cooker controller
;OSC:16.000MHz
Chip SN8P1706
//{{SONIX_CODE_OPTION
.Code_Option OSG Enable
.Code_Option High_Clk 12M_X’tal
.Code_Option High_Clk/2 DISAble
.Code_Option Security Enable
.Code_Option LVD Enable
.Code_Option Watch_Dog Enable
//}}SONIX_CODE_OPTION
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
InitPort macro
MOV a,#01110000b ;p4.7,p4.3 as A/D input
b0 MOV P4M,a
MOV a,#00111111b
b0 MOV P5M,a
MOV a,#0xff
b0 MOV P2M,a
MOV a,#11000000b
b0 MOV P1M,a
@set_pur 0x23
clr P1
clr P2
clr P4
clr P5
MOV a,#0x44
b0 MOV TC1M,a
MOV a,#225 ;225
b0 MOV TC1R,a
b0bset FTC1OUT ;buzzer on
b0bset FTC1ENB
MOV a,#11110101b ;1:16 16uS
b0 MOV TC0M,a
MOV a,#0xff
b0 MOV TC0R,a
MOV a,#11110000b ;1:2 1uS
b0 MOV T0M,a
MOV a,#00010000b
b0 MOV INTEN,a
clr INTRQ
endm
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;*****************************
;clear ram (00h-->7fh)
;*****************************
ClearRam macro
clr Y
b0 MOV Z,#0x7f
Clear_Ram01:
clr @YZ
decms Z
jmp Clear_Ram01
endm
;\\\\\\\\\\\\\\\\\\\\\\
BuzzerActive macro
b0bts1 BuzzerEnable
jmp BuzzerStop
b0 MOV a,BuzNumber
b0bts0 FZ
jmp BuzzerStop
b0bts1 BuzzerShort
jmp BuzNormal01
MOV a,#50
jmp BuzNormal02
BuzNormal01:
MOV a,#100
BuzNormal02:
sub a,TimerBuz
b0bts0 FC
jmp BuzzerRet
;else buzzer time over
BuzzerTimeOver:
clr TimerBuz
b0bts1 BuzzerIsOn
jmp BuzzerTimeOver01
b0bclr BuzzerIsOn ;buzzer on
b0bset BUZZER
jmp BuzzerTimeOver02
BuzzerTimeOver01:
b0bclr BUZZER ;buzzer off
b0bset BuzzerIsOn
BuzzerTimeOver02:
b0bts0 BuzzerIsOn
jmp BuzzerRet
decms BuzNumber
jmp BuzzerRet
BuzzerStop:
b0bclr BuzzerEnable
b0bclr BuzzerIsOn
BuzzerRet:
endm
;*****************************
include define.asm
.CODE
org 0x00
jmp Reset
org 0x08
jmp Interrupt
org 0x10
;*******************
MultiplICation:
; b0 MOV a,CurrentL
b0 MOV a,VoltageL
mul a,VoltageL
b0 MOV ELO,a
b0 MOV a,R
b0 MOV ALO,a
; b0 MOV a,CurrentH
b0 MOV a,VoltageH
mul a,VoltageL
add a,ALO
b0 MOV EHI,a
b0 MOV a,R
b0 MOV DLO,a
b0bts0 FC
incms DLO
nop
clr DHI
; b0 MOV a,CurrentL
b0 MOV a,VoltageL
mul a,VoltageH
b0 MOV CLO,a
b0 MOV a,R
b0 MOV ALO,a
; b0 MOV a,CurrentH
b0 MOV a,VoltageH
mul a,VoltageH
add a,ALO
b0 MOV CHI,a
b0 MOV a,R
b0 MOV BLO,a
b0bts0 FC
incms BLO
nop
b0bclr FC
b0 MOV a,CLO
adc EHI,a
b0 MOV a,CHI
adc DLO,a
b0 MOV a,BLO
adc DHI,a
b0 MOV a,ELO
mul a,CurrentH
b0 MOV CLO,a
b0 MOV a,R
b0 MOV ALO,a
b0 MOV a,EHI
mul a,CurrentH
add a,ALO
b0 MOV CHI,a
b0 MOV a,R
b0 MOV ALO,a
b0 MOV a,DLO
mul a,CurrentH
add a,ALO
b0 MOV BLO,a
b0 MOV a,R
b0 MOV BHI,a
b0 MOV a,ELO
mul a,CurrentL
b0 MOV ELO,a
b0 MOV a,R
b0 MOV ALO,a
b0 MOV a,EHI
mul a,CurrentL
add a,ALO
b0 MOV EHI,a
b0 MOV a,R
b0 MOV ALO,a
b0 MOV a,DLO
mul a,CurrentL
add a,ALO
b0 MOV DLO,a
b0 MOV a,R
b0 MOV DHI,a
b0bclr FC
b0 MOV a,CLO
adc EHI,a
b0 MOV a,CHI
adc DLO,a
b0 MOV a,BLO
adc DHI,a
b0bts0 FC
incms BHI
nop
ret
;;;;;====================================
Mpy16: ;;;INPUT (BY MULTIPLIER)AHI,ALO;(MULTIPLIER)BHI,BLO
;;;OUT DHI,DLO,EHI,ELO
;;;======================================
MOV a,#10h
b0 MOV counter,a
clr DHI
clr DLO
b0bclr FC
;;;;;
Mpyloop:
rrcm BHI
rrcm BLO
b0bts1 FC
jmp Notadd
;;;;
MOV a,ALO
[1] [2] [3] [4] [5] 下一页
本文关键字:程序 电磁炉 松翰单片机,单片机-工控设备 - 松翰单片机