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

📄 f34x_msd_temp_sensor.src

📁 USB读写SD卡例程
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; 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 + -