📄 9222asm.asm
字号:
BR Receive_byte_error
Receive_byte1:
CMPW AX,#zero_c_low
BNC $Receive_zero
BR Receive_byte_error
Receive_byte2:
CMPW AX,#one_c_low
BNC $Receive_one
BR Receive_byte_error
Receive_zero:
CLR1 CY
BR Bit_shift
Receive_one:
SET1 CY
Bit_shift:
MOV A,receive_buffer
RORC A,1
MOV receive_buffer,A
INC bit_c
MOV A,bit_c
CMP A,#8
BNC $Bit_shift_end
BR Receive_byte_r
Bit_shift_end:
MOV bit_c,#0
SET1 byte_end_f
BR Receive_byte_r
Receive_byte_error:
SET1 Receive_bit_error_f
Receive_byte_r:
RET
;--------------------------------
Receive_two_byte:
CALL !Receive_byte
BT byte_end_f,$Receive_two_byte0
BR Receive_two_byte_r
Receive_two_byte0:
CLR1 byte_end_f
BF low_byte_f,$Receive_two_byte1
CLR1 low_byte_f
SET1 word_end_f
BR Receive_two_byte_r
Receive_two_byte1:
SET1 low_byte_f
MOV A,receive_buffer
MOV receive_buffer1,A
Receive_two_byte_r:
RET
;--------------------------------
Send_one_data:
DBNZ display_data_bit_c,$Send_display_data1
MOV display_data_bit_c,#9
CLR1 clk
CLR1 data
CALL !Delay
BR Send_one_data_r
Send_display_data1:
ROL A,1
BC $Send_one
Send_zero:
CLR1 clk
CALL !Delay
CLR1 data
CALL !Delay
SET1 clk
CALL !Delay
CLR1 clk
BR Send_one_data
Send_one:
CLR1 clk
CALL !Delay
SET1 data
CALL !Delay
SET1 clk
CALL !Delay
CLR1 clk
BR Send_one_data
Send_one_data_r:
RET
;================================
;- interrupt program -
;================================
Unused:
RETI
;--------------------------------
Timer: ;T=2ms
PUSH_STACK
INC loop_c
BF time_h_set_f,$Timer0
BR Timer_r
Timer0:
BF time_m_set_f,$Timer1
BR Timer_r
Timer1:
MOVW AX,time_c
CMPW AX,#499
BNC $Timer_second
INCW AX
MOVW time_c,AX
BR Timer_r
Timer_second:
MOVW AX,#0
MOVW time_c,AX
INC time_s
MOV A,time_s
CMP A,#60
BNC $Timer_minute
BR Timer_r
Timer_minute:
MOV time_s,#0
INC time_m
MOV A,time_m
CMP A,#60
BNC $Timer_hour
BR Timer2
Timer_hour:
MOV time_m,#0
INC time_h
MOV A,time_h
CMP A,#24
BNC $Timer_hour0
BR Timer2
Timer_hour0:
MOV time_h,#0
Timer2:
BF run_in_night_f,$Timer3
MOV A,time_h
CMP A,#6
BNZ $Run_in_night_timer
MOV A,time_m
CMP A,#0
BZ $Run_in_night_timer00
BR Timer3
Run_in_night_timer00:
BF set_turnon_f,$Run_in_night_timer01
MOV A,settime_on_h
CMP A,#6
BNZ $Run_in_night_timer01
MOV A,settime_on_m
CMP A,#0
BNZ $Run_in_night_timer01
BR Timer3
Run_in_night_timer01:
CLR1 on_off_f
BR Timer3
Run_in_night_timer:
CMP A,#0
BZ $Run_in_night_timer0
BR Timer3
Run_in_night_timer0:
MOV A,time_m
CMP A,#0
BZ $Run_in_night_timer1
BR Timer3
Run_in_night_timer1:
SET1 on_off_f
BR Timer3
Timer3:
BT set_turnon_f,$Turnon_set
BR Timer4
Turnon_set:
MOV A,settime_on_h
CMP A,time_h
BZ $Turnon_set0
BR Timer4
Turnon_set0:
MOV A,settime_on_m
CMP A,time_m
BNZ $Timer4
SET1 on_off_f
Timer4:
BT set_turnoff_f,$Turnoff_set
BR Timer_r
Turnoff_set:
MOV A,settime_off_h
CMP A,time_h
BZ $Turnoff_set0
BR Timer_r
Turnoff_set0:
MOV A,settime_off_m
CMP A,time_m
BNZ $Timer_r
BF run_in_night_f,$Turnoff_set1
MOV A,time_h
CMP A,#0
BNZ $Turnoff_set1
MOV A,time_m
CMP A,#0
BNZ $Turnoff_set1
BR Timer_r
Turnoff_set1:
CLR1 on_off_f
Timer_r:
POP_STACK
RETI
;--------------------------------
Display_buzzer:
PUSH_STACK
BF receive_start_f,$Display
MOVW AX,receive_c
INCW AX
CMPW AX,#8000
BNC $Receive_error_pro
MOVW receive_c,AX
BR Display
Receive_error_pro:
MOVW AX,#0
MOVW receive_c,AX
MOV flag0,#0
MOV bit_c,#0
Display:
MOV A,display_c
CMP A,#40
BNC $Display0
INC display_c
BR Display_r
Display0:
MOV display_c,#0
CLR1 dig1
CLR1 dig2
CLR1 dig3
CLR1 dig4
CLR1 dig5
CLR1 dig6
CLR1 dig7
Com_select:
BT dig_1,$Com1_select
CLR1 dig1
BR Com2_select
Com1_select:
MOV A,display_buffer1
CALL !Send_one_data
SET1 dig1
BR Send_one_end
Com2_select:
BT dig_2,$Com2_select0
CLR1 dig2
BR Com3_select
Com2_select0:
MOV A,display_buffer2
CALL !Send_one_data
SET1 dig2
BR Send_one_end
Com3_select:
BT dig_3,$Com3_select0
CLR1 dig3
BR Com4_select
Com3_select0:
MOV A,display_buffer3
CALL !Send_one_data
SET1 dig3
BR Send_one_end
Com4_select:
BT dig_4,$Com4_select0
CLR1 dig4
BR Com5_select
Com4_select0:
MOV A,display_buffer4
CALL !Send_one_data
SET1 dig4
BR Send_one_end
Com5_select:
BT dig_5,$Com5_select0
CLR1 dig5
BR Com6_select
Com5_select0:
MOV A,display_buffer5
CALL !Send_one_data
SET1 dig5
BR Send_one_end
Com6_select:
BT dig_6,$Com6_select0
CLR1 dig6
BR Com7_select
Com6_select0:
MOV A,display_buffer6
CALL !Send_one_data
SET1 dig6
BR Send_one_end
Com7_select:
BT dig_7,$Com7_select0
CLR1 dig7
BR Display_r
Com7_select0:
MOV A,display_buffer7
CALL !Send_one_data
SET1 dig7
Send_one_end:
MOV A,com
ROL A,1
MOV com,A
CMP A,#10000000B
BNZ $Send_one_end0
MOV display_data_c,#0
MOV com,#1
BR Display_r
Send_one_end0:
INC display_data_c
Display_r:
POP_STACK
RETI
;--------------------------------
AD_sample:
PUSH_STACK
CLR1 ADCS
DBNZ ad_c,$AD_sample1
CLR1 ad_first_f
MOV ad_c,#6
One_channel_end:
MOVW AX,sum
XCH A,X
ADD A,ADCRH
XCH A,X
ADDC A,#0
XCH A,X
SUB A,min
XCH A,X
SUBC A,#0
XCH A,X
SUB A,max
XCH A,X
SUBC A,#0
Average:
DBNZ average_c,$Average0
MOV average_c,#3
XCH A,X
MOV B,A
MOV A,ADS
CMP A,#key_channel
BNZ $Wt_average
Key_average:
MOV A,B
MOV key_ad_new,A
MOV ADS,#wt_channel
AD_sample_start:
SET1 ADCS
BR AD_sample_r
Wt_average:
MOV A,B
MOV wt_ad_new,A
MOV ADS,#key_channel
SET1 AD_sample_end
BR AD_sample_r
Average0:
CLR1 CY
RORC A,1
MOV B,A
XCH A,X
RORC A,1
XCH A,X
MOV A,B
BR Average
AD_sample1:
BF ad_first_f,$AD_sample2
MOV A,ADCRH
MOV B,A
CMP A,max
BZ $Get_sum
BNC $Change_max
CMP A,min
BC $Change_min
Get_sum:
CLR1 CY
MOVW AX,sum
XCH A,X
ADD A,ADCRH
XCH A,X
ADDC A,#0
MOVW sum,AX
BR AD_sample_start
Change_max:
MOV A,B
XCH A,max
BR Get_sum
Change_min:
MOV A,B
XCH A,min
BR Get_sum
AD_sample2:
SET1 ad_first_f
MOV A,ADCRH
MOV max,A
MOV min,A
MOV X,#0
XCH A,X
MOVW sum,AX
BR AD_sample_start
AD_sample_r:
POP_STACK
RETI
;--------------------------------
Receive:
PUSH_STACK
BF receive_start_f,$Receive0
MOVW AX,receive_c
Receive0:
BF head_code_f,$Receive_head_code
BF custom_code_f,$Receive_custom_code
BF data_f,$Receive_data
BR Receive_inverse_data
Receive_head_code:
BF receive_start_f,$Receive_head_code0
MOVW AX,receive_c
CMPW AX,#head_c_high
BC $Receive_head_code1
BR Receive_error
Receive_head_code0:
SET1 receive_start_f
Receive_head_code00:
MOVW AX,#0
MOVW receive_c,AX
BR Receive_r
Receive_head_code1:
CMPW AX,#head_c_low
BNC $Receive_head_code2
BR Receive_error
Receive_head_code2:
SET1 head_code_f
BR Receive_head_code00
Receive_custom_code:
CALL !Receive_two_byte
BT word_end_f,$Receive_custom_code0
BT Receive_bit_error_f,$Receive_error
BR Receive_head_code00
Receive_custom_code0:
CLR1 word_end_f
MOV A,receive_buffer
XCH A,X
MOV A,receive_buffer1
XCH A,X
CMPW AX,#custom_code
BZ $Receive_custom_code1
BR Receive_error
Receive_custom_code1:
SET1 custom_code_f
BR Receive_head_code00
Receive_data:
CALL !Receive_byte
BT byte_end_f,$Receive_data0
BT Receive_bit_error_f,$Receive_error
BR Receive_head_code00
Receive_data0:
CLR1 byte_end_f
SET1 data_f
MOV A,receive_buffer
MOV data_buffer,A
BR Receive_head_code00
Receive_inverse_data:
CALL !Receive_byte
BT byte_end_f,$Receive_inverse_data0
BT Receive_bit_error_f,$Receive_error
BR Receive_head_code00
Receive_inverse_data0:
CLR1 byte_end_f
MOV A,receive_buffer
AND A,data_buffer
BZ $Receive_inverse_data1
BR Receive_error
Receive_inverse_data1:
MOV A,data_buffer
MOV key_code,A
CLR1 first_pressed_f
MOV key_pressed_c,#0
SET1 set_by_remote_f
Receive_error:
MOV flag0,#0
MOV bit_c,#0
MOVW AX,#0
MOVW receive_c,AX
Receive_r:
POP_STACK
RETI
;--------------------------------
;- DEFINE TABLE -
;--------------------------------
WT_TABLE: ;from 68 to 233(0-99)
DB 0,0,1
DB 1,2,2,3,3,3,4,4,5,5
DB 6,6,6,7,7,8,8,9,9,9
DB 10,10,11,11,11,12,12,13,13,13
DB 14,14,15,15,15,16,16,17,17,17
DB 18,18,19,19,19,20,20,21,21,21
DB 22,22,23,23,23,24,24,25,25,26
DB 26,26,27,27,28,28,28,29,29,30
DB 30,31,31,31,32,32,33,33,34,34
DB 34,35,35,36,36,37,37,38,38,39
DB 39,40,40,41,41,42,42,43,43,44
DB 44,45,45,46,46,47,47,48,49,49
DB 50,50,51,51,52,53,53,54,55,55
DB 56,56,57,58,58,59,60,61,61,62
DB 63,64,64,65,66,67,68,68,69,70
DB 71,72,73,74,75,76,77,78,79,80
DB 81,83,84,85,86,88,89,91,92,93
DB 95,97,99
DISPLAY_TABLE:
DB 3FH ;0
DB 6H ;1
DB 5BH ;2
DB 4FH ;3
DB 66H ;4
DB 6DH ;5
DB 7DH ;6
DB 7H ;7
DB 7FH ;8
DB 6FH ;9
DB 79H ;E
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -