?? fireplace.src
字號:
;*******************************************************
;Project: fireplace
;Designer:
;Subject:
;File name: fireplace.src
;MCU name: S3C9454
;MCU Clock: 3.2MHz
;Original Date:
;last ver date:
;Finished Date:
;*******************************************************
.include "define.mac"
vector 0000H,int_vec ;interrupt vector
.org 003cH
db 00H
db 00H
;db 00110000B ;DISABLE LVR=3.9V
db 10110000B
db 03H ;3.2M RC
.org 0100H
reset:
DI
init_clock_sp
init_timer
disable_base_time
init_port
;*************************************
clear_ram:
LD R0,#0BFH
clear_ram1:
DEC R0
LD @R0,#00H
JR NZ,clear_ram1
;************************************
;EI
;enable_base_time
;**************************************
;initial_ram:
ld fire_status,#00h
ld temp_status,#00h
ld led_display_flag,#01H
and p2,#10111111B ;motor=p2.6 disenble motor
;or p0,#00001000B ;set p0.3 disenble spker
and p0,#11110111B
ld beep_flag,#01h
ld AD_convert_time,#01h
CALL wait_1S
call restore
EI
enable_base_time
;*************************************************
main:
OR BTCON,#02h ;clear watchdog
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL key_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
call motor_change
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
call AD_judge
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
CALL led_scan
call remote_deal_program
jp main
;*******************************************************************
wait_1S:
LD R0,#0FFH
LD R1,#0FFH
LD R2,#05H
wait_1:
DEC R0
JP NZ,wait_1
DEC R1
JP NZ,wait_1
DEC R2
JP NZ,wait_1
RET
;*************************Interrupt Vector***************************
int_vec:
TM T0CON,#01H
JP NZ,time0_program
TM P0PND,#04H
JP nz,remote_program
int_vec_end:
IRET
;******************************************************************
;********************************************
time0_program:
push flags
tm beep_flag,#01h
jr z,counter_program
beep_program:
tm p0,#01000000B ;beep=p0.6
jr z,beep_set
and p0,#10111111B
jr counter_program
beep_set:
or p0,#01000000B
counter_program:
inc common_counter
cp common_counter,#10
jr ult,time0_program1
ld common_counter,#0
ld common_flag,#01h
call counter_check
time0_program1:
inc remote_pulse_time
cp remote_pulse_time,#143 ;90
;cp remote_pulse_time,#220 ;90
jr ne,time_program_end
ld remote_pulse_time,#0
ld remote_flag,#0
time_program_end:
pop flags
AND T0CON,#0feh
IRET
;**********************************************
;**********************************************
remote_program:
push r0
push r1
call remote_receive_program
remote_int_program_end:
pop r1
pop r0
AND p0pnd,#0fbh
IRET
;*******************************************************************
;*************************************
remote_receive_program:
ld r0,remote_pulse_time
ld remote_pulse_time,#0
tm remote_repeat_start,#01h
jr nz,remote_head_code
tm remote_flag,#01h ;judge head_byte
jr nz,remote_data_program
remote_head_code:
cp r0,#143
;cp r0,#220
jr ult,remote_head_data0 ;less 90
ld remote_bit_num,#0
ld remote_byte_num,#0
ld remote_data,#0
and remote_flag,#0feh
ret
remote_head_data0:
cp r0,#70
;cp r0,#190
jr ugt,remote_head_data1 ;more 90
ld remote_bit_num,#0
ld remote_byte_num,#0
ld remote_data,#0
and remote_flag,#0feh
ret
remote_head_data1:
or remote_flag,#01h
ld remote_bit_num,#0
ld remote_byte_num,#0
ld remote_data,#0
cp remote_repeat_time,#40 ;20
jr ult,remote_head_data1_end
inc remote_again
ld remote_repeat_time,#0
cp remote_again,#8 ; #2
jp ult,remote_head_data1_end
ld remote_again,#6 ;#00h
cp remote_value,#01h
jp eq,remote_fire_inc
cp remote_value,#02h
jp eq,remote_fire_dec
cp remote_value,#03h
jp eq,remote_temp_inc
cp remote_value,#04h
jp eq,remote_temp_dec
;ld remote_again,#48 ;#00h
remote_head_data1_end:
ret
;****************************************
;****************************************
remote_data_program:
cp r0,#6
;cp r0,#20
jr ugt,remote_data_start
ld remote_bit_num,#0
ld remote_byte_num,#0
ld remote_data,#0
and remote_flag,#0feh
ret
remote_data_start:
cp r0,#11
;cp r0,#40
jr ugt,remote_data_1
and remote_flag,#11111101b
jr remote_store_data
remote_data_1:
cp r0,#23
;cp r0,#68
jr ugt,remote_head_code
or remote_flag,#00000010b
;********************************
remote_store_data:
inc remote_bit_num
rcf
tm remote_flag,#02h
jr nz,remote_receive_1
jr remote_store_data0
remote_receive_1:
scf
remote_store_data0:
rrc remote_data
cp remote_bit_num,#8
jr eq,remote_store_byte
ret
;**********************************
remote_store_byte:
ld r1,remote_data
ld remote_bit_num,#0
inc remote_byte_num
cp remote_byte_num,#1
jr eq,store_byte1
cp remote_byte_num,#2
jr eq,store_byte2
cp remote_byte_num,#3
jr eq,store_byte3
cp remote_byte_num,#4
jr eq,store_byte4
RET
;**********************************
store_byte1:
ld remote_byte_buf0,r1
ret
store_byte2:
ld remote_byte_buf1,r1
ret
store_byte3:
ld remote_byte_buf2,r1
ret
store_byte4:
ld remote_byte_buf3,r1
ld receive_end_flag,#01h
ld remote_repeat_start,#01h
ret
;**********************************************
;******************************************************************
remote_deal_program:
push r3
tm receive_end_flag,#01h
jp z,remote_deal_end
ld receive_end_flag,#00h
cp remote_byte_buf0,#00h
jp ne,remote_deal_end
cp remote_byte_buf1,#6fh
jp ne,remote_deal_end
tm led_display_flag,#01H
jr nz,remote_deal_1
ld beep_flag,#01h
ld led_display_flag,#01H
jp remote_deal_end
remote_deal_1:
ld led_display_flag,#01H
ld led_15s_time1,#0
ld led_15s_time2,#0
fire_on_off:
ld r3,remote_byte_buf2
cp r3,#09h
jr ne,fire_inc
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,fire_inc
call remote_fire_control
fire_inc:
ld r3,remote_byte_buf2
cp r3,#06h
jr ne,fire_dec
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,fire_dec
call remote_fire_inc
fire_dec:
ld r3,remote_byte_buf2
cp r3,#08h
jr ne,temp_on_off
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,temp_on_off
call remote_fire_dec
temp_on_off:
ld r3,remote_byte_buf2
cp r3,#05h
jr ne,temp_inc
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,temp_inc
call remote_temp_control
temp_inc:
ld r3,remote_byte_buf2
cp r3,#00h
jr ne,temp_dec
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,temp_dec
call remote_temp_inc
temp_dec:
ld r3,remote_byte_buf2
cp r3,#0ah
jr ne,sound_control
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,sound_control
call remote_temp_dec
sound_control:
ld r3,remote_byte_buf2
cp r3,#01h
jr ne,lamp_control
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,lamp_control
call remote_sound_control
lamp_control:
ld r3,remote_byte_buf2
cp r3,#0ch
jr ne,remote_deal_end
add r3,remote_byte_buf3
cp r3,#0ffh
jr ne,remote_deal_end
call remote_lamp_control
remote_deal_end:
pop r3
ret
;*******************************************************************
remote_fire_control:
tm fire_status,#01H
jr z,remote_fire_on
remote_fire_off:
ld fire_status,#00H ;if fire_status=0=off jump to fire on
and p2,#10111111B ;motor=p2.6
and p0,#01111111B ;clear p0.7 disenble LIGHTS
call sound_close
call lamp_close
jp remote_fire_control_end
remote_fire_on: ;if fire_status=1=on to fire off
ld fire_status,#01H
tm temp_sensor,#01h
jr z,remote_sound_judge
or p0,#10000000B ;set p0.7 enble LIGHTS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -