📄 dfg-a.asm
字号:
;***********************************************
;Coffee pot program.
;MCU=s3f9454,f=3.2MHz.
;TRANSFORMER=220V,50HZ/60HZ
;Start data: 2008.2.27 .
;F=32+T*1.8
;++++++++++++++++++++++++修改履历+++++++++++++++++++++++++
;2007.09.20
;1,定时器中断 ld T0CON,#10001010b---#10000010b
;2,HOLD 显示状态; 显示wenduad test
;3.缩时cuttime
;4.温度ad-20 test
;2007.10.13
;改为3个数码管显示华氏度
;2007.10.30
;三位数码管如果是个位数,前面显示0
;2007-10-31 改保温时不能显示设定温度
;2007-11-1 保温时改加热温度,继续加热
;2007-12-2 改成保温时用温度控制
;2008-1-9 改显示温度155--〉158。。。初始保温时间改为12小时
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;===============================================
;全功率加热到设定温度后停15分钟,开始半功率加热
;如果温度超过设定温度5?度,停止加热,否则一直半功率加热
;***********************************************
title MAIN PROGRAM
.public main
.public start
.extern resave
include "S3C9454.reg"
; include "equ_tbl.src"
;
;************************************************
;==========================
;温度点调节。如果实际温度比设定温度偏低,则需要减小该数值,否则增加。
tj_ad equ 20
;保温输出功率调节
t_h equ 19 ;21--50Hz 18---60Hz(1?调24为21?)
t_m equ 23 ;51 ;40 ;减小输出功率,则增大该数值,否则减小。(最小20或25,最大40或者50)(2?调23为17?)
;==========================
;--ram -- 00h-bfh
flag equ 01h
f_flash equ 00000001b ;0
fn_flash equ 11111110b
f_wen equ 00000010b ;1
fn_wen equ 11111101b
f_100ms equ 00000100b ;2
fn_100ms equ 11111011b
f_start equ 00001000b ;3
fn_start equ 11110111b
f_wendu_f equ 00010000b ;4
fn_wendu_f equ 11101111b
f_heat equ 00100000b ;5
fn_heat equ 11011111b
f_hold equ 01000000b ;6
fn_hold equ 10111111b
flag2 equ 02h
f_setw equ 00000001b
fn_setw equ 11111110b
f_setd equ 00000010b
fn_setd equ 11111101b
f_seth equ 00000100b
fn_seth equ 11111011b
f_heat2 equ 00001000b
fn_heat2 equ 11110111b
f_hs equ 00010000b
fn_hs equ 11101111b
status equ 03h
f_stop equ 00000001b ;0
f_delay equ 00000010b ;1
fn_delay equ 11111101
f_heats equ 00000100b ;2
fn_heats equ 11111011b
f_holds equ 00001000b ;3
fn_holds equ 11110111b
f_run equ 00010000b
fn_run equ 11101111b
keyflag EQU 04H
f_key equ 00000001b
fn_key equ 11111110b
;f_key2 equ 00000010b
;fn_key2 equ 11111101b
f_power equ 00000100b
fn_power equ 11111011b
f_int equ 00001000b
fn_int equ 11110111b
f_keyl equ 00010000b
fn_keyl equ 11101111b
t_400us equ 05h
t_2ms EQU 06H
t_100ms EQU 07H
sec EQU 08H
min EQU 09H
hour EQU 0aH
disp equ 10h ;0-3
dis1 equ 11h ;led
dis2 equ 12h ;bai wei
dis3 equ 13h ;shi
dis4 equ 14h ;ge
wendu equ 18h
wenduset equ 19h
delayset equ 1ah
holdset equ 1bh
pausetime equ 1ch
settime equ 20h
keynum equ 21h
keytemp equ 22h
key3min equ 23h
key2s equ 24h
tzero equ 25h
keytime equ 26h
t1s equ 27h
t10min equ 28h
t_w equ 29h
t_all equ 2ah
buzztime equ 2bh
ledflag equ 2ch
f_led2 equ 00000001b
fn_led2 equ 11111110b
f_buz equ 00000010b
fn_buz equ 11111101b
f_lock equ 00000100b
fn_lock equ 11111011b
f_ledf equ 00001000b
fn_ledf equ 11110111b
f_water equ 00010000b
fn_water equ 11101111b
key3s equ 2dh
key20ms equ 2eh
dispt equ 2fh
t600ms equ 30h
prwendu equ 31h
prtime equ 32h
prtwendu equ 33h
;===========================================
;===========================================
;
length_total equ 20
length_load equ 8
w60 equ 190
w150 equ 160 ;
w175 equ 140 ;
w200 equ 120 ;
w220 equ 115
w250 equ 100 ;
w300 equ 80 ;
w350 equ 70 ;
w400 equ 60 ;
;--port--
;p0
;zero equ 00000001b ;0 ;ex int
;b_gate equ 00000010b ;1 ;
;bn_gate equ 11111101b ;1 ;
;b_wendu equ 00000100b ;2 ;ad
;b_led2 equ 10000000b ;7 led2
;bn_led2 equ 01111111b
;p2
;led num
;-----------------------
;p0
;b_zero equ 00000001b ;ex INT
;b_wendu equ 00000010b ;ad
b_gate equ 00000100b
bn_gate equ 11111011b
;b_ct equ 00001000b ;ad
;bn_ct equ 11110111b
b_com1 equ 00010000b ;DIG1
b_seg0 equ 00100000b ;B LED2
;b_buz equ 01000000b ;PWM
b_seg1 equ 10000000b ;F
;p1
b_seg3 equ 00000001b ;E SW3 holdkey
;p2
b_seg4 equ 00000001b ;D SW1 tempkey
b_seg5 equ 00000010b ;DP SW2 ;powerkey
b_seg6 equ 00000100b ;C
b_seg7 equ 00001000b ;G
b_com3 equ 00010000b ;DIG3
b_com2 equ 00100000b ;DIG2
b_seg2 equ 01000000b ;A LED1
;************************************************
;* Interrupt Vector Table *
;* *
;* VSYNC_IRQ, IR_IRQ and TA_IRQ *
;************************************************
org 0000h
vector 00h,T0_INT ;
org 003ch
DB 00H
DB 00H
; DB 033H ;LVR DISABLE
DB 0E7H ;LVR
DB 03H ;Internal 01H ;外部RC
org 0100h
jp start
;a/d (184--120)+tj_ad(20)=204---140
;wendu 155--205
adnum: db 150,150,150,150,150,150,150,150,150,150,150
db 150,150,150,150,150,150,150,151,152,153,154,155
db 156,157,158,160,161,163,165
db 168,172,175 ;181
db 177,179,181,183,185 ;177
db 186,187,188,190,191,193,195 ;173
db 200,200,200,200,200,200,200,210,205 ;162
db 210
db 255,255,255,255,255
;adnum: db 143,144,145,146,147,148
db 149,150,151,152,153,154
db 155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,174
db 175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193
db 194,195,196,197,199,200,201,202,203,204,205,206,207,209,210,210,210,210
db 255
;adnum:
db 65,66,66,67,67,68,69
db 70,70,71,71,72,73,73,74,74,75,75,76,76,77,78,78,79,79
db 80,80,81,81,82,83,83,84,85,85,86,86,87,87,88,89,89
db 90,90,91,91,92,93,93,94,95,95,96,96,97,98,98,99
db 100,100,101,101,102,103,104,104
db 255
; db 184 177,168,159,151 142,134,126
;C 65 70 75 80 85 90 95 100
;add=185-adnum
;; 0 D E C G F A B
; 0 E D C G A F B
; 7 6 5 4 3 2 1 0
; F A B E G C Dp D
;
numc: db 11110101b ;f5 ;01110111b f5 ;0 77H
db 00100100b ;24 ;00010001b ;1
db 01111001b ;79 ;01101101b ;2 6dh
db 01101101b ;6d ;00111101b ;3 3dh
db 10101100b ;ac ;00011011b ;4
db 11001101b ;cd ;00111110b ;5 3eh
db 11011101b ;01111110b ;6
db 01100100b ;64 ;00010101b ;7
db 11111101b ;01111111b ;8
db 11101101b ;00111111b ;9
db 11011001b ;01101110b d9 ;E 6EH
db 11011000b ;01001110b d8 ;F 4EH
;LED1 db 00010000B
;LED2 db 00001000B
;SW1 db 00000001B WENDU
;SW2 db 00000010B YUYUO
;SW3 db 00000100B BAOWEN
;************************************************************************
mcuint:
ld P2CONH,#01001010b ;all out
ld P2CONL,#10101010b
ld P0CONH,#10011010b ;
ld P0CONL,#11101101b ;
ret
;************************************************************************
start: di
ld P2CONH,#01001010b ;all out
ld P2CONL,#10101010b ;bit3,2,1,0 ---10:out; 00:in
ld P0CONH,#10011010b ;
ld P0CONL,#11101101b
; -- Port 2 setting --
;ld P2CONH,#01001010b ;all out
;ld P2CONL,#10101010b
ld P2,#30h ;0ffh
; -- Port 0 setting --
ld p0pnd,#00000010b ;int0 enable
ld P0,#10h ;
;
; -- Port 1 setting --
ld P1CON,#10001110b ;p1.0--out11001010b ;use ext osc p1.0,p1.1:onput
;ld P1CON,#11001101b ;p1.1--in
ld P1,#00h ;00h ;
; --ad setting--
ld adcon,#00010100b ;adc1(p0.1) 00110100:adc3(p0.3)
; -- Basic Timer --
ld BTCON,#00000010b ; WATCHDOG enABLE fosc/4096
ld CLKCON,#10011000b ; NON DIVIDED CLOCK
ld t0data,#160 ;200 ;4M osc 400us int 400*4M/8=200 400*3.2/8=160
ld T0CON,#10001010b ;T0 int enable
ld flags,#00000000b ; flags=0
ld SP,#0C0h ; Stack pointer high <-- 00
; -- Interrupt Setting --
ld sym,#08h
; -- PWM
ld PWMCON,#00h ;disable 11001100b:eable
ld pwmdata,#10000000b
; -- stop --
ld stopcon,#00h ;disable
;---------------< ram clear >-------------------;
ld r0,#0bfh ;clear all data RAM 00-0FFh
ramclr: clr @r0
dec r0
jr nz,ramclr
start2:
ld BTCON,#00000010b ; WATCHDOG enABLE fosc/4096
ld wenduset,#w400 ;400-150
;ld delayset,#0
ld holdset,#0 ;0-1-5-10-15-20-30-60-90-120-0 min 0:一直保温
ld settime,#5 ;5s
ld key3min,#180
or flag,#f_start
or keyflag,#f_power
clr flag2
call buzz ;test
jp main
;+++++++++++++++++++++++++++++++++++++++++++++++++
test:
ei
ld BTCON,#10100010b ; WATCHDOG enABLE fosc/4096
; call mcuint
ld p2,#11111111b
or p0,#01000000b
call timer
jr test
;++++++++++++++++++++++++++++++++++++++++++++++++++
;***********************************************;
; Main ;
;***********************************************;
main:
ei
ld BTCON,#00100010b ; WATCHDOG enABLE fosc/4096
; call mcuint
call timer
call buzzcon
call prcon
call control
call statuscon
call discon
call ledset
call key_jug
call wendu_jug
jp main
;***********************************************;
;************************************************
; <Timer 0 interrupt> *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -