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

📄 dfg-a.asm

📁 采用samsung 9454做的电饭锅的小程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;***********************************************
;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 + -