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

📄 fireplace.l

📁 使用三星芯片的控制程序,可供三星8位MCU初学者参考!
💻 L
📖 第 1 页 / 共 5 页
字号:
  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 + -