📄 temperature.lst
字号:
RC51 COMPILER V03.03.29, TEMPERATURE 06/30/03 11:26:50 PAGE 1
QCW(0x00002F32)
WIN32 RC51 COMPILER V03.03.29, COMPILATION OF MODULE TEMPERATURE
OBJECT MODULE PLACED IN d:\data\msc1210\ride\temperature\temperature.obj
COMPILER INVOKED BY: RC51.EXE D:\DATA\MSC1210\RIDE\TEMPERATURE\TEMPERATURE.C OBJ
-ECT(D:\DATA\MSC1210\RIDE\TEMPERATURE\TEMPERATURE.OBJ) PIN(D:\RIDE\I
-NC) PIN(D:\RIDE\INC\51\) NOAM PR(D:\DATA\MSC1210\RIDE\TEMPERATURE\T
-EMPERATURE.LST) CD SB OE(1) SM FP(IEEE,STANDARD) PW(80) NOIS UNSIGN
-EDCHAR ET(CHAR)
stmt level source
1 #include <REG1210.H>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <math.h>
5 // Vref=1.25V, bipolar results give 1.25*2/2^24
6 #define LSB (1.25/8388608)
7 #define M0 2586.67098545498
8 #define C0 -271.7529
9 #define A1 -1.08436244851484e3
10 #define B1 2.83158996601634e3
11 #define C1 -285.1293
12 #define WINDOWSIZE 16
13 signed long summer(void);
14 extern void putspace4(void);
15 extern void tx_byte(char);
16 // Print a message
17 void putstr(char code * data msg)
WARNING C179 IN LINE 17 OF temperature.c : 'msg' : mspace on parameter ignored
- 18 {
19 1 while (*msg != 0) {
20 2 tx_byte((unsigned char) *msg);
21 2 if( *msg=='\n') tx_byte('\r');
22 2 msg++;
23 2 }
24 1 }
25 // recursive digit display routine
26 void prt_digit(unsigned long int i, signed char d) reentrant
27 { unsigned long int j; char c;
28 1 j=i/10; c=i-j*10; d--;
29 1 if (j!=0 || !(d &0x80)) prt_digit(j,d);
30 1 if (d==0) tx_byte('.');
31 1 tx_byte(c+48);
32 1 }
33 // Display long integer number with sign and decimal
34 void print(signed long int i, unsigned char d)
35 {
36 1 if (i<0) { tx_byte('-'); i*=-1;}
37 1 prt_digit(i,d); putspace4();
38 1 }
39 void main(void)
40 {
41 1 signed long int data sum;
42 1 float data window[16]={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
43 1 float data adres=0, vt, tc_lin, tc_poly;
44 1 unsigned char fill_ptr=1, mod_ptr=0;
45 1 T2CON = 0x34; // T2 as baudrate generator
46 1 RCAP2 = 65535; // 57600 Baud @ 1.8432MHz
47 1 SCON = 0x52; // Async mode 1, 8-bit UART, enable rcvr, TI=1
-, RI=0
48 1 putstr("\x1b[1;33;46m\x1b[2J\x1b[12CTemperature Sensor\n");
49 1 PDCON &= 0x0f7; //turn on adc
50 1 PASEL=0xff;
51 1 ACLK=1; // ACLK = 1.8432MHz/(1+1)= 0.9216MHz
52 1 DECIMATION = 0x7ff;
53 1 ADCON0 = 0x20; // Vref on 1.25V, Buff off, BOD off, PGA 1
54 1 ADMUX=0xff;
55 1 ADCON1 = 0x01; // bipolar, auto, self calibration, offset, gai
-n
56 1 SSCON=0; // Clear SUMR0~3
57 1 SSCON=0xe4; // Set SSCON for ADC 32 summations and div by 32
- 58 1 sum=summer(); // Discard 1st summation result
59 1 SSCON=0; // Clear SUMR0~3
60 1 SSCON=0xe4; // Set SSCON for ADC 32 summations and div by 32
- 61 1 while(1){
62 2 sum=summer();
63 2 SSCON=0; // Clear SUMR0~3
64 2 SSCON=0xe4; // Set SSCON for ADC 32 summations and div by 32
- 65 2 adres=adres-window[mod_ptr]; // Moving Window of 1
-0 results
66 2 window[mod_ptr]=(float) sum;
67 2 adres=adres+ window[mod_ptr];
68 2 vt=adres/(float)fill_ptr*LSB;
69 2 print((signed long int)(vt*1000000),3);
70 2 tc_lin=M0*vt + C0;
71 2 print((signed long int)(tc_lin*1000),3);
72 2 tc_poly=A1*vt*vt + B1*vt +C1;
73 2 print((signed long int)(tc_poly*1000),3);
74 2 if (fill_ptr==WINDOWSIZE) fill_ptr=WINDOWSIZE; else fill_ptr++;
- 75 2 if (mod_ptr==(WINDOWSIZE-1)) mod_ptr=0; else mod_pt
-r++;
76 2 putstr("\n");
77 2 if (RI==1){ // Any key will pause, any key again to start
78 3 putstr("Pause....");
79 3 RI=0;
80 3 while(RI==0) {;}
81 3 putstr("Continue\n");
82 3 RI=0;
83 3 }
84 2 }
85 1 }
86
RC51 COMPILER V03.03.29, TEMPERATURE 06/30/03 11:26:51 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _putstr (BEGIN)
; SOURCE LINE # 17
0000 8E00 R MOV msg,R6
0002 8F00 R MOV msg+01H,R7
0004 ?WHILE1:
; SOURCE LINE # 19
0004 850083 R MOV DPH,msg
0007 850082 R MOV DPL,msg+01H
000A E4 CLR A
000B 93 MOVC A,@A+DPTR
000C 6020 JZ ?NXT2
; SOURCE LINE # 20
000E E4 CLR A
000F 93 MOVC A,@A+DPTR
0010 FF MOV R7,A
0011 120000 R LCALL _tx_byte
; SOURCE LINE # 21
0014 850083 R MOV DPH,msg
0017 850082 R MOV DPL,msg+01H
001A E4 CLR A
001B 93 MOVC A,@A+DPTR
001C B40A05 CJNE A,#00AH,?NXT3
001F 7F0D MOV R7,#00DH
0021 120000 R LCALL _tx_byte
0024 ?NXT3:
; SOURCE LINE # 22
0024 0500 R INC msg+01H
0026 E500 R MOV A,msg+01H
0028 70DA JNZ ?WHILE1
002A 0500 R INC msg
002C 80D6 SJMP ?WHILE1
002E ?NXT2:
002E 22 RET
; FUNCTION _putstr (END)
; FUNCTION ?prt_digit (BEGIN)
; Register-parameter i (R4_R7) is stacked
; SOURCE LINE # 26
0000 7405 MOV A,#005H
0002 2581 ADD A,SP
0004 F581 MOV SP,A
0006 120000 R LCALL MV4_RG2SK?C
; SOURCE LINE # 28
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 # 29
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 ?LAB6
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,?NXT6
0069 ?LAB6:
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 ?NXT6:
; SOURCE LINE # 30
007E 74F5 MOV A,#0F5H
0080 2581 ADD A,SP
0082 F9 MOV R1,A
0083 E7 MOV A,@R1 ; @ d
0084 7005 JNZ ?NXT7
0086 7F2E MOV R7,#02EH
0088 120000 R LCALL _tx_byte
008B ?NXT7:
; SOURCE LINE # 31
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 # 34
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 # 36
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,?NXT9
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 ?NXT9:
; SOURCE LINE # 37
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
0048 120000 R LCALL putspace4
004B 22 RET
; FUNCTION _print (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 42
0000 7D05 MOV R5,#005H
0002 7C00 R MOV R4,#HIGH(?STR?TEMPERATURE?BASE)
0004 7800 R MOV R0,#LOW(?STR?TEMPERATURE?BASE)
0006 7B01 MOV R3,#001H
0008 E4 CLR A
0009 FA MOV R2,A
000A 7900 R MOV R1,#window
000C 7E40 MOV R6,#040H
000E 120000 R LCALL ?C_CPY
; SOURCE LINE # 43
0011 E4 CLR A
0012 F500 R MOV adres,A
0014 F500 R MOV adres+01H,A
0016 F500 R MOV adres+02H,A
0018 F500 R MOV adres+03H,A
; SOURCE LINE # 44
001A 750001 R MOV fill_ptr,#001H
001D F500 R MOV mod_ptr,A
; SOURCE LINE # 45
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -