📄 fireplace.l
字号:
996 052E 7B 1A jr ult,counter_check1
997 0530 E6 01 64 ld key_press_time1,#100
998
999 0533 20 02 inc key_press_time2
1000 0535 A6 02 FA cp key_press_time2,#250
1001 0538 7B 10 jr ult,counter_check1
1002 053A E6 02 FA ld key_press_time2,#250
1003
1004 053D 20 03 inc key_press_time
1005 053F A6 03 FF cp key_press_time,#255 ;255 #150
1006 0542 7B 06 jr ult,counter_check1
1007 0544 E6 03 64 ld key_press_time,#100 ;#0
1008
1009 0547 E6 04 01 ld key_hold_flag,#01h
1010
1011 054A counter_check1:
1012 054A 76 10 01 tm fire_status,#01H ;motor counter 120us*10*30=32ms
1013 054D 6B 15 jr z,counter_check2
1014
1015 054F 20 27 inc motor_delay_time
1016 0551 A4 20 27 cp motor_delay_time,motor_value
1017 0554 7B 0E jr ult,counter_check2
1018
1019 0556 46 E2 40 or p2,#01000000B
1020 0559 A6 27 32 cp motor_delay_time,#50 ;30
1021 055C 7B 06 jr ult,counter_check2
1022 055E 56 E2 BF and p2,#10111111B ;motor=p2.6
1023 0561 E6 27 00 ld motor_delay_time,#0
1024
1025
1026
1027 0564 counter_check2:
1028 0564 76 24 01 tm beep_flag,#01h ;beep counter 10*80=800
1029 0567 6B 10 jr z,counter_check3
1030 0569 20 28 inc beep_counter
1031 056B A6 28 49 cp beep_counter,#73 ;14
1032 056E 7B 09 jr ult,counter_check3
1033 0570 E6 24 00 ld beep_flag,#00h ;int 800 disenble beep
1034 0573 E6 28 00 ld beep_counter,#0
1035 ;or p0,#01000000B ;set p0.6
1036 0576 56 E0 BF and p0,#10111111B ;clear p0.6
1037
1038 0579 counter_check3:
1039 0579 76 10 01 tm fire_status,#01h
1040 057C EB 05 jr nz,counter_check3_1
1041 057E 76 11 01 tm temp_status,#01h
1042 0581 6B 1C jr z,counter_check4
1043
1044 0583 counter_check3_1:
1045 0583 76 1B 01 tm led_display_flag,#01H ;if time=14.4s led off, else led on
1046 0586 6B 17 jr z,counter_check4 ;120us*10*120*100=14.4s
1047 0588 20 1C inc led_15s_time1
1048 058A A6 1C 78 cp led_15s_time1,#120
1049 058D 7B 10 jr ult,counter_check4
1050 058F E6 1C 00 ld led_15s_time1,#0
1051 0592 20 1D inc led_15s_time2
1052 0594 A6 1D 64 cp led_15s_time2,#100 ;21
1053 0597 7B 06 jr ult,counter_check4
1054 0599 E6 1D 00 ld led_15s_time2,#0
1055 059C E6 1B 00 ld led_display_flag,#00H
1056
1057 059F counter_check4:
1058 059F 76 55 01 tm temp_sensor,#01H
1059 05A2 EB 17 jr nz,remote_repeat_program
1060 05A4 20 56 inc not_sensor_counter1
1061 05A6 A6 56 64 cp not_sensor_counter1,#100
1062 05A9 7B 10 jr ult,remote_repeat_program
1063 05AB E6 56 00 ld not_sensor_counter1,#0
1064 05AE 20 57 inc not_sensor_counter2
1065 05B0 A6 57 0F cp not_sensor_counter2,#15
1066 05B3 7B 06 jr ult,remote_repeat_program
1067 05B5 E6 57 00 ld not_sensor_counter2,#0
1068 05B8 E6 24 01 ld beep_flag,#01h
1069
1070 05BB remote_repeat_program:
1071 05BB 76 50 01 tm remote_repeat_start,#01h
1072 05BE 6B 10 jr z,cleat_common_flag
1073 05C0 20 51 inc remote_repeat_time
1074 05C2 A6 51 78 cp remote_repeat_time,#120 ;120
1075 05C5 7B 09 jr ult,cleat_common_flag
1076
1077 05C7 E6 52 00 ld remote_again,#00h
1078
1079 05CA E6 51 00 ld remote_repeat_time,#0
1080 05CD E6 50 00 ld remote_repeat_start,#00h
1081
1082 05D0 cleat_common_flag:
1083 05D0 E6 26 00 ld common_flag,#00h
1084 05D3 counter_check_end:
1085 05D3 AF ret
1086 ;***********************led scan************************************
1087 ;********************************************************************
1088 05D4 led_scan:
1089 05D4 76 1B 01 tm led_display_flag,#01H ;if time=15s led off, else led on
1090 05D7 6D 06 5C jp z,led_scan_end
1091
1092 05DA led_temp:
1093 05DA 76 11 01 tm temp_status,#01H
1094 05DD 6B 08 jr z,led_temp1
1095
1096 05DF 2C 0F ld r2,#0fh
1097 05E1 38 15 ld r3,temp_value
1098 05E3 C3 02 ldc r0,@rr2 ;of00h
1099 05E5 8B 02 jr led_temp2
1100
1101 05E7 led_temp1:
1102 05E7 0C FF ld r0,#0ffh
1103 05E9 led_temp2:
1104
1105 05E9 46 E1 02 or p1,#02H
1106 05EC 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1107 05EF 09 00 ld serial_data,r0 ;temp on
1108 05F1 F6 06 63 call serial_out
1109 05F4 56 E1 FD and p1,#11111101B ;Q2 on p1.1
1110 05F7 F6 08 DB call delay20ms
1111
1112
1113 05FA 76 11 01 tm temp_status,#01H
1114 05FD 6B 09 jr z,led_temp3
1115
1116 05FF 2C 0F ld r2,#0fh
1117 0601 38 15 ld r3,temp_value
1118 0603 E7 02 10 ldc r0,#10h[rr2] ;0f10h
1119 0606 8B 02 jr led_temp4
1120
1121 0608 led_temp3:
1122 0608 0C FF ld r0,#0ffh
1123 060A led_temp4:
1124
1125 060A 46 E1 02 or p1,#02H
1126 060D 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1127 0610 09 00 ld serial_data,r0 ;temp on
1128 0612 F6 06 63 call serial_out
1129 0615 56 E2 FE and p2,#11111110B ;Q3 on p2.0
1130 0618 F6 08 DB call delay20ms
1131
1132
1133 061B led_fire:
1134 061B 76 10 01 tm fire_status,#01H
1135 061E 6B 08 jr z,led_fire1
1136
1137 0620 2C 0F ld r2,#0fh
1138 0622 38 14 ld r3,fire_value
1139 0624 C3 02 ldc r0,@rr2 ;of00h
1140 0626 8B 02 jr led_fire2
1141
1142 0628 led_fire1:
1143 0628 0C FF ld r0,#0ffh
1144
1145 062A led_fire2:
1146 062A 46 E1 02 or p1,#02H
1147 062D 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1148 0630 09 00 ld serial_data,r0 ;temp on
1149 0632 F6 06 63 call serial_out
1150 0635 56 E2 FD and p2,#11111101B ;Q1 on p2.1
1151 0638 F6 08 DB call delay20ms
1152
1153 063B 76 10 01 tm fire_status,#01H
1154 063E 6B 09 jr z,led_fire3
1155
1156 0640 2C 0F ld r2,#0fh
1157 0642 38 14 ld r3,fire_value
1158 0644 E7 02 20 ldc r0,#20h[rr2] ;0f20h
1159 0647 8B 02 jr led_fire4
1160
1161 0649 led_fire3:
1162 0649 0C FF ld r0,#0ffh
1163
1164 064B led_fire4:
1165 064B 46 E1 02 or p1,#02H
1166 064E 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1167 0651 09 00 ld serial_data,r0 ;temp on
1168 0653 F6 06 63 call serial_out
1169 0656 56 E2 FE and p2,#11111110B ;Q3 on p2.0
1170 0659 F6 08 DB call delay20ms
1171
1172
1173 065C led_scan_end:
1174
1175 065C 46 E1 02 or p1,#02H
1176 065F 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1177 0662 AF ret
1178
1179
1180 ;*******************************************************************
1181 ;******************serial out subroutine****************************
1182 0663 serial_out:
1183
1184 0663 5C 08 ld r5,#08 ;n=8
1185 0665 48 00 ld r4,serial_data
1186
1187 0667 serial_out_loop:
1188 0667 56 E2 F7 and p2,#11110111B ;clk=0
1189 066A C0 C4 rrc r4
1190 066C 7B 06 jr c,set_data_1
1191 ;and p1,#0feh ;p1.0->data in
1192 066E 56 E2 FB and p2,#11111011B ;p2.2->data in
1193 0671 8D 06 77 jp judge_164_end
1194 0674 set_data_1:
1195 ;or p1,#01h
1196 0674 46 E2 04 or p2,#00000100B
1197 0677 judge_164_end:
1198 0677 FF nop
1199 0678 46 E2 08 or p2,#00001000B ;clk=1
1200 067B FF nop
1201 067C 00 C5 dec r5 ;serial_number-1=0?
1202 067E ED 06 67 jp nz,serial_out_loop ;if serial_number=0 end, else again
1203 0681 AF ret
1204 ;***************************************************************************
1205 ;**************************scan_key subroutine******************************
1206
1207 0682 key_scan:
1208
1209 ; ld serial_clk_0,#0f7H ;74ls164 clk=P2.3 clk=0
1210 ; ld serial_clk_1,#08H ;clk=1
1211 0682 46 E1 02 or p1,#02H
1212 0685 46 E2 03 or p2,#03H ;Q1 Q2 Q3 off
1213
1214 0688 key_first_scan:
1215
1216
1217 0688 E6 00 00 ld serial_data,#00H
1218 068B F6 06 63 call serial_out ;serial out 00
1219
1220 068E 76 E0 01 tm p0,#01H ;test P0.0=0 ?
1221 0691 6B 19 jr z, key_operation1 ;if P0.0=0 to key_operation
1222 0693 E6 04 00 ld key_hold_flag,#00H ;no key clear key_first_flag
1223 0696 E6 03 00 ld key_press_time,#00H ;no key clear key_press_time
1224
1225 0699 E6 01 00 ld key_press_time1,#00H
1226 069C E6 02 00 ld key_press_time2,#00H
1227
1228 069F E6 0A 00 ld key_press_down,#00H ;no key press down
1229 06A2 E6 05 00 ld key_hold_down,#00H ; already press
1230
1231 06A5 E6 0C 00 ld key_release,#00H ;key realease
1232
1233 06A8 E6 04 01 ld key_hold_flag,#01h
1234
1235
1236 ;ld key_first_delay,00h
1237
1238 06AB key_scan_end:
1239 06AB AF ret
1240
1241
1242 06AC key_operation1:
1243 06AC F6 08 DB call delay20ms
1244 ;tm key_first_delay,01h
1245 ;jr z,key_operation1_end
1246
1247 06AF E6 00 00 ld serial_data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -