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

📄 temperature.lst

📁 msc1201 编程5
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -