📄 temperature.lst
字号:
RC51 COMPILER V03.03.28, TEMPERATURE 02/25/03 16:16:36 PAGE 1
QCW(0x00002F32)
WIN32 RC51 COMPILER V03.03.28, COMPILATION OF MODULE TEMPERATURE
OBJECT MODULE PLACED IN c:\ride\rai-code\temperature\temperature.obj
COMPILER INVOKED BY: RC51.EXE C:\RIDE\RAI-CODE\TEMPERATURE\TEMPERATURE.C OBJECT(
-C:\RIDE\RAI-CODE\TEMPERATURE\TEMPERATURE.OBJ) PIN(C:\RIDE\INC;C:\RI
-DE\INC\51) PIN(C:\RIDE\INC\51\TI\) NOAM PR(C:\RIDE\RAI-CODE\TEMPERA
-TURE\TEMPERATURE.LST) CD SB OE(1) SM FP(NOFLOAT) PW(80) NOIS UNSIGN
-EDCHAR ET(CHAR)
stmt level source
1 #include "REG1210.H"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <math.h>
5 #define LSB (1.25/8388608/375e-6)
6 #define WINDOWSIZE 16
7 extern void put_string(char code *string);
8 data char ROM_temp0 _at_ 0x000a; // For put_string function
9 data char ROM_temp1 _at_ 0x000b;
10 signed long summer(void);
11 extern void putspace4(void);
12 extern void autobaud(void);
13 extern void tx_byte(char);
14 sbit P14 = P1^4;
15 sbit P15 = P1^5;
16 // recursive digit display routine
17 void prt_digit(unsigned long int i, signed char d) reentrant
18 { unsigned long int j; char c;
19 1 j=i/10; c=i-j*10; d--;
20 1 if (j!=0 || !(d &0x80)) prt_digit(j,d);
21 1 if (d==0) tx_byte('.');
22 1 tx_byte(c+48);
23 1 }
24 // Display long integer number with sign and decimal
25 void print(signed long int i, unsigned char d)
26 {
27 1 if (i<0) { tx_byte('-'); i*=-1;}
28 1 prt_digit(i,d); putspace4();
29 1 }
30 void main(void)
31 {
32 1 signed long int data sum;
33 1 float data window[16]={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
WARNING C215 IN LINE 33 OF temperature.c : 'float' found with NOFLOAT option, I
-EEE std assumed
34 1 float data adres=0, temperature;
35 1 unsigned char j,k,i, fill_ptr=1, mod_ptr=0;
36 1 // char WINDOWSIZE=32;
37 1 // T2CON = 0x34; // T2 as baudrate generator
38 1 // RCAP2 = 65535; // 57600 Baud @ 1.8432MHz
39 1 // SCON = 0x52; // Async mode 1, 8-bit UART, enable rcvr, TI
-=1, RI=0
40 1 autobaud();
41 1 put_string("\x1b[1;33;46m\x1b[2J\x1b[12CTemperature Sensor\n");
42 1 PDCON &= 0x0f7; //turn on adc
43 1 ACLK = 1; // ACLK = 1.8432MHz/(1+1)= 0.9216MHz
44 1 DECIMATION = 0x7ff;
45 1 ODAC=0;
46 1 ADCON0 = 0x20; // Vref on 1.25V, Buff off, BOD off, PGA 1
47 1 ADMUX=0xff;
48 1 ADCON1 = 0x01; // bipolar, auto, self calibration, offset, gai
-n
49 1 SSCON=0; // Clear SUMR0~3
50 1 SSCON=228; // Set SSCON for ADC 32 summations and div by 32
51 1 sum=summer();
52 1 SSCON=0; // Clear SUMR0~3
53 1 SSCON=228; // Set SSCON for ADC 32 summations and div by 32
54 1 while(1){
55 2 P15=!P15;
56 2 sum=summer();
57 2 P15=!P15;
58 2 SSCON=0; // Clear SUMR0~3
59 2 SSCON=228; // Set SSCON for ADC 32 summations and div by 32
60 2 adres=adres-window[mod_ptr]; // moving window of 10 results
61 2 window[mod_ptr]=(float)sum*LSB-281.667;
62 2 adres=adres+ window[mod_ptr];
63 2 temperature=adres/(float)fill_ptr;
64 2 if (fill_ptr==WINDOWSIZE) fill_ptr=WINDOWSIZE; else fill_ptr++;
- 65 2 if (mod_ptr==(WINDOWSIZE-1)) mod_ptr=0; else mod_pt
-r++;
66 2 print((signed long int)(temperature*1000),3);
67 2 put_string("degC ");
68 2 put_string("\n");
69 2 }
70 1 }
WARNING C092 IN LINE 35 OF temperature.c : 'j' is declared but not used
WARNING C092 IN LINE 35 OF temperature.c : 'k' is declared but not used
WARNING C092 IN LINE 35 OF temperature.c : 'i' is declared but not used
71
RC51 COMPILER V03.03.28, TEMPERATURE 02/25/03 16:16:36 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION ?prt_digit (BEGIN)
; Register-parameter i (R4_R7) is stacked
; SOURCE LINE # 17
0000 7405 MOV A,#005H
0002 2581 ADD A,SP
0004 F581 MOV SP,A
0006 120000 R LCALL MV4_RG2SK?C
; SOURCE LINE # 19
0009 74FD MOV A,#0FDH
000B 2581 ADD A,SP
000D F9 MOV R1,A
000E E7 MOV A,@R1 ; @ i
000F C0E0 PUSH ACC
0011 09 INC R1
0012 E7 MOV A,@R1 ; @ i
0013 C0E0 PUSH ACC
0015 09 INC R1
0016 E7 MOV A,@R1 ; @ i
0017 C0E0 PUSH ACC
0019 09 INC R1
001A E7 MOV A,@R1 ; @ i
001B C0E0 PUSH ACC
001D E4 CLR A
001E FE MOV R6,A
001F FC MOV R4,A
0020 FD MOV R5,A
0021 7F0A MOV R7,#00AH
0023 120000 R LCALL ?C_ULDIV_SP
0026 74FB MOV A,#0FBH
0028 2581 ADD A,SP
002A F8 MOV R0,A
002B 18 DEC R0
002C 18 DEC R0
002D 18 DEC R0
002E 120000 R LCALL MV4_RG2I0?C
0031 A981 MOV R1,SP
0033 74FB MOV A,#0FBH
0035 2581 ADD A,SP
0037 F8 MOV R0,A
0038 E6 MOV A,@R0 ; @ j
0039 75F00A MOV B,#00AH
003C A4 MUL AB
003D FA MOV R2,A
003E E7 MOV A,@R1 ; @ i
003F C3 CLR C
0040 9A SUBB A,R2
0041 FA MOV R2,A
0042 74FC MOV A,#0FCH
0044 2581 ADD A,SP
0046 F9 MOV R1,A
0047 A702 MOV @R1,AR2 ; @ c
0049 74F5 MOV A,#0F5H
004B 2581 ADD A,SP
004D F9 MOV R1,A
004E 17 DEC @R1 ; @ d
; SOURCE LINE # 20
004F 74F8 MOV A,#0F8H
0051 2581 ADD A,SP
0053 F9 MOV R1,A
0054 E7 MOV A,@R1 ; @ j
0055 09 INC R1
0056 47 ORL A,@R1 ; @ j
0057 09 INC R1
0058 47 ORL A,@R1 ; @ j
0059 09 INC R1
005A 47 ORL A,@R1 ; @ j
005B 700C JNZ ?LAB2
005D 74F5 MOV A,#0F5H
005F 2581 ADD A,SP
0061 F9 MOV R1,A
0062 E7 MOV A,@R1 ; @ d
0063 FB MOV R3,A
0064 33 RLC A
0065 EB MOV A,R3
0066 20E715 JB ACC.7,?NXT2
0069 ?LAB2:
0069 74F5 MOV A,#0F5H
006B 2581 ADD A,SP
006D F9 MOV R1,A
006E E7 MOV A,@R1 ; @ d
006F C0E0 PUSH ACC
0071 74F7 MOV A,#0F7H
0073 2581 ADD A,SP
0075 F9 MOV R1,A
0076 120000 R LCALL MV4_I12RG?C
0079 120000 R LCALL ?prt_digit
007C 1581 DEC SP
007E ?NXT2:
; SOURCE LINE # 21
007E 74F5 MOV A,#0F5H
0080 2581 ADD A,SP
0082 F9 MOV R1,A
0083 E7 MOV A,@R1 ; @ d
0084 7005 JNZ ?NXT3
0086 7F2E MOV R7,#02EH
0088 120000 R LCALL _tx_byte
008B ?NXT3:
; SOURCE LINE # 22
008B 74FC MOV A,#0FCH
008D 2581 ADD A,SP
008F F9 MOV R1,A
0090 E7 MOV A,@R1 ; @ c
0091 2430 ADD A,#030H
0093 FF MOV R7,A
0094 120000 R LCALL _tx_byte
0097 74F7 MOV A,#0F7H
0099 2581 ADD A,SP
009B F581 MOV SP,A
009D 22 RET
; FUNCTION ?prt_digit (END)
; FUNCTION _print (BEGIN)
; SOURCE LINE # 25
0000 8C00 R MOV i,R4
0002 8D00 R MOV i+01H,R5
0004 8E00 R MOV i+02H,R6
0006 8F00 R MOV i+03H,R7
; SOURCE LINE # 27
0008 C000 R PUSH i
000A C000 R PUSH i+01H
000C C000 R PUSH i+02H
000E C000 R PUSH i+03H
0010 E4 CLR A
0011 FF MOV R7,A
0012 FE MOV R6,A
0013 FC MOV R4,A
0014 FD MOV R5,A
0015 120000 R LCALL ?C_CMPLS
0018 BFFF1E CJNE R7,#0FFH,?NXT5
001B 7F2D MOV R7,#02DH
001D 120000 R LCALL _tx_byte
0020 C000 R PUSH i
0022 C000 R PUSH i+01H
0024 C000 R PUSH i+02H
0026 C000 R PUSH i+03H
0028 74FF MOV A,#0FFH
002A FF MOV R7,A
002B FE MOV R6,A
002C FC MOV R4,A
002D FD MOV R5,A
002E 120000 R LCALL ?C_LMUL
0031 8C00 R MOV i,R4
0033 8D00 R MOV i+01H,R5
0035 8E00 R MOV i+02H,R6
0037 8F00 R MOV i+03H,R7
0039 ?NXT5:
; SOURCE LINE # 28
0039 C000 R PUSH d
003B AC00 R MOV R4,i
003D AD00 R MOV R5,i+01H
003F AE00 R MOV R6,i+02H
0041 AF00 R MOV R7,i+03H
0043 120000 R LCALL ?prt_digit
0046 1581 DEC SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -