📄 f34x_msd_temp_sensor.src
字号:
; void Calibrate(int temp_value)
RSEG ?PR?_Calibrate?F34X_MSD_TEMP_SENSOR
_Calibrate:
USING 0
; SOURCE LINE # 79
MOV DPTR,#temp_value?140
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; {
; SOURCE LINE # 80
; unsigned int xdata tmpv = Get_Temp_Value();
; SOURCE LINE # 81
LCALL Get_Temp_Value
;---- Variable 'tmpv?141' assigned to Register 'R6/R7' ----
; tmpv = (((tmpv * 322L) - 79700)/ 286) ;
; SOURCE LINE # 82
CLR A
MOV R4,A
MOV R5,A
LCALL L?0020
LCALL ?C?SLDIV
; Adc_Offset = tmpv - temp_value;
; SOURCE LINE # 83
MOV DPTR,#temp_value?140
LCALL L?0021
MOV DPTR,#Adc_Offset
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; }
; SOURCE LINE # 84
RET
; END OF _Calibrate
;
; //----------------------------------------------------------------------------
; // Get_Temp_Value
; //----------------------------------------------------------------------------
; //
; // Function returns value from AD converter. This value represents the
; // temperature.
; //
; // Parameters :
; // Return Value : result from AD converter
; //----------------------------------------------------------------------------
;
; unsigned int Get_Temp_Value()
RSEG ?PR?Get_Temp_Value?F34X_MSD_TEMP_SENSOR
Get_Temp_Value:
USING 0
; SOURCE LINE # 97
; {
; SOURCE LINE # 98
; unsigned int xdata retV = 0;
; SOURCE LINE # 99
;---- Variable 'retV?242' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
; AD0BUSY = 1;
; SOURCE LINE # 100
SETB AD0BUSY
?C0003:
; while(!AD0INT);
; SOURCE LINE # 101
JNB AD0INT,?C0003
?C0004:
; retV = (ADC0H << 8) | (ADC0L);
; SOURCE LINE # 102
MOV R7,ADC0H
MOV A,R7
MOV R6,A
MOV R5,ADC0L
MOV A,R5
MOV R7,A
; AD0INT = 0;
; SOURCE LINE # 103
CLR AD0INT
; return retV;
; SOURCE LINE # 104
; }
; SOURCE LINE # 105
?C0005:
RET
; END OF Get_Temp_Value
;
; //----------------------------------------------------------------------------
; // Get_Temp
; //----------------------------------------------------------------------------
; //
; // Function returns temperature returned by temperature sensor
; //
; // Parameters :
; // Return Value : ambient temperature in celcius [C] decimal values second
; // byte means digits after colon
; //----------------------------------------------------------------------------
;
; int Get_Temp()
RSEG ?PR?Get_Temp?F34X_MSD_TEMP_SENSOR
Get_Temp:
USING 0
; SOURCE LINE # 118
; {
; SOURCE LINE # 119
; int xdata ret = Get_Temp_Value();
; SOURCE LINE # 120
LCALL Get_Temp_Value
;---- Variable 'ret?343' assigned to Register 'R6/R7' ----
; ret = (((ret * 322L) - 79700)/ 286) ;
; SOURCE LINE # 121
MOV A,R6
RLC A
SUBB A,ACC
MOV R5,A
MOV R4,A
CLR A
LCALL L?0020
LCALL ?C?SLDIV
; ret -= Adc_Offset;
; SOURCE LINE # 122
MOV DPTR,#Adc_Offset
LCALL L?0021
MOV R6,A
; return ret;
; SOURCE LINE # 123
; }
; SOURCE LINE # 124
?C0006:
RET
; END OF Get_Temp
;
; //----------------------------------------------------------------------------
; // Temp_Sensor_Stop_Logging
; //----------------------------------------------------------------------------
; //
; // This function close temperature Log File
; //
; // Parameters :
; // Return Value :
; //----------------------------------------------------------------------------
;
; void Temp_Sensor_Stop_Logging()
RSEG ?PR?Temp_Sensor_Stop_Logging?F34X_MSD_TEMP_SENSOR
Temp_Sensor_Stop_Logging:
USING 0
; SOURCE LINE # 136
; {
; SOURCE LINE # 137
; if(Logging) {
; SOURCE LINE # 138
MOV DPTR,#Logging
MOVX A,@DPTR
JZ ?C0008
; printf("Logging temperature done."ENDLINE);
; SOURCE LINE # 139
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL _printf
; fclose(&Log_File);
; SOURCE LINE # 140
LCALL L?0023
LCALL _fclose
; Logging=0;
; SOURCE LINE # 141
CLR A
MOV DPTR,#Logging
MOVX @DPTR,A
; }
; SOURCE LINE # 142
; }
; SOURCE LINE # 143
?C0008:
RET
; END OF Temp_Sensor_Stop_Logging
;
; //----------------------------------------------------------------------------
; // Temp_Log
; //----------------------------------------------------------------------------
; //
; // Function creates temperature Log File
; //
; // Parameters : filename - name of Log file
; // Return Value :
; //----------------------------------------------------------------------------
;
; void Temp_Log(char* filename)
RSEG ?PR?_Temp_Log?F34X_MSD_TEMP_SENSOR
_Temp_Log:
USING 0
; SOURCE LINE # 155
MOV DPTR,#filename?544
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; {
; SOURCE LINE # 156
; if(Logging) {
; SOURCE LINE # 157
MOV DPTR,#Logging
MOVX A,@DPTR
JZ ?C0009
; Temp_Sensor_Stop_Logging();
; SOURCE LINE # 158
LJMP Temp_Sensor_Stop_Logging
; } else {
; SOURCE LINE # 159
?C0009:
; //"file without name" fix (masw):
; if (filename == 0 ) {
; SOURCE LINE # 161
MOV DPTR,#filename?544
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ORL A,R2
JNZ ?C0011
; printf("No file name."ENDLINE);
; SOURCE LINE # 162
MOV R3,#0FFH
MOV R2,#HIGH (?SC_28)
MOV R1,#LOW (?SC_28)
SJMP ?C0018
; return;
; }
; SOURCE LINE # 164
?C0011:
; //===============================
; if(fopen(&Log_File,filename,"a")) { // Append mode
; SOURCE LINE # 166
MOV DPTR,#filename?544
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#?_fopen?BYTE+03H
XCH A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (?SC_44)
MOVX @DPTR,A
MOV A,#LOW (?SC_44)
LCALL L?0022
LCALL _fopen
MOV A,R7
ORL A,R6
MOV R3,#0FFH
JZ ?C0013
; printf("Logging temperature. Type 'templog' again to stop."ENDLINE);
; SOURCE LINE # 167
MOV R2,#HIGH (?SC_46)
MOV R1,#LOW (?SC_46)
LCALL _printf
; Logging=1;
; SOURCE LINE # 168
MOV DPTR,#Logging
MOV A,#01H
MOVX @DPTR,A
; tickcount=0;
; SOURCE LINE # 169
MOV DPTR,#tickcount
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 00H
; } else {
; SOURCE LINE # 170
RET
?C0013:
; printf("Cannot write."ENDLINE);
; SOURCE LINE # 171
MOV R2,#HIGH (?SC_99)
MOV R1,#LOW (?SC_99)
?C0018:
LCALL _printf
; }
; SOURCE LINE # 172
; }
; SOURCE LINE # 173
; }
; SOURCE LINE # 174
?C0012:
RET
; END OF _Temp_Log
;
; //----------------------------------------------------------------------------
; // Temp_Log_Step
; //----------------------------------------------------------------------------
; //
; // Function writes another line to Log File
; //
; // Parameters :
; // Return Value :
; //----------------------------------------------------------------------------
;
; void Temp_Log_Step(void) {
RSEG ?PR?Temp_Log_Step?F34X_MSD_TEMP_SENSOR
Temp_Log_Step:
USING 0
; SOURCE LINE # 186
; xdata char buf[18];
; int xdata retV ;
; if(Logging) {
; SOURCE LINE # 189
MOV DPTR,#Logging
MOVX A,@DPTR
JNZ $ + 5H
LJMP ?C0017
; if(tickcount >=1000) {
; SOURCE LINE # 190
CLR A
MOV R7,#0E8H
MOV R6,#03H
MOV R5,A
MOV R4,A
MOV DPTR,#tickcount
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
CLR C
LCALL ?C?ULCMP
JC ?C0017
; retV = Get_Temp();
; SOURCE LINE # 191
LCALL Get_Temp
MOV DPTR,#retV?646
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; sprintf(buf,"%02d.%02d after 1sec" /*ENDLINE*/ "\r\n",(retV - (retV/100)*100),(retV / 100 ));
; SOURCE LINE # 192
MOV DPTR,#?_sprintf?BYTE+03H
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (?SC_115)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (?SC_115)
MOVX @DPTR,A
MOV DPTR,#retV?646
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV R4,#00H
MOV R5,#064H
LCALL ?C?SIDIV
XCH A,R2
MOV A,R6
XCH A,R2
XCH A,R3
MOV A,R7
XCH A,R3
MOV R4,#00H
MOV R5,#064H
LCALL ?C?IMUL
CLR C
MOVX A,@DPTR
SUBB A,R7
MOV R7,A
MOV DPTR,#retV?646
MOVX A,@DPTR
SUBB A,R6
MOV DPTR,#?_sprintf?BYTE+06H
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (buf?645)
MOV R1,#LOW (buf?645)
LCALL _sprintf
; tickcount=0;
; SOURCE LINE # 193
MOV DPTR,#tickcount
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 00H
; fwrite(&Log_File,buf,18);
; SOURCE LINE # 194
MOV DPTR,#?_fwrite?BYTE+03H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (buf?645)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (buf?645)
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
MOV A,#012H
LCALL L?0022
LCALL _fwrite
; }
; SOURCE LINE # 195
; }
; SOURCE LINE # 196
; }
; SOURCE LINE # 197
?C0017:
RET
; END OF Temp_Log_Step
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -