?? 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
;-----------------------
;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 + -