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

📄 a2d.lst

📁 TI 集成高性能24位A/D转换器的8052 核心单片机MSC1210 A/D转换代码。
💻 LST
📖 第 1 页 / 共 2 页
字号:
RC51 COMPILER V03.03.28,  A2D                     02/20/03  10:27:10  PAGE  1

QCW(0x00002F32)

WIN32 RC51 COMPILER V03.03.28, COMPILATION OF MODULE A2D       
OBJECT MODULE PLACED IN c:\ride\rai-code\a2d\a2d.obj
COMPILER INVOKED BY: RC51.EXE C:\RIDE\RAI-CODE\A2D\A2D.C OBJECT(C:\RIDE\RAI-CODE
            -\A2D\A2D.OBJ) PIN(C:\RIDE\INC;C:\RIDE\INC\51) NOAM PR(C:\RIDE\RAI-C
            -ODE\A2D\A2D.LST) CD SB OE(1) SM FP(NOFLOAT) PW(80) NOIS UNSIGNEDCHA
            -R ET(CHAR) 

stmt level    source
   1          //
   2          // Copyright 2003 Texas Instruments
   3          // author: Russell Anderson
   4          //
   5          // A/D Conversion
   6          // Integer test of A/D Converter
   7          //
   8          #include <REG1210.H>
   9          #include <stdio.h>
  10          #define SET    1
  11          #define RESET  0
  12          #define CLEAR  0
  13          
  14          extern void autobaud(void);
  15          extern long bipolar(void);
  16          
  17          sbit Sync = P1^4; 
  18          void dacout (unsigned int val)
  19          {
  20   1      	Sync = SET;			// Sync pulse
  21   1      	Sync = CLEAR;
  22   1      	// Note: To avoid SPI overflow, sufficient delay between 
  23   1      	//		every 3 SPIDATA write is needed.
  24   1      	SPIDATA = 0; 		// Normal DAC Mode
  25   1      	SPIDATA = (char)(val>>8 & 0x00ff);
  26   1      	SPIDATA = (char)(val & 0x00ff);;		
  27   1      }
  28          
  29          void main(void)
  30          {
  31   1      	signed long int data result, dummy, average, max, min;
  32   1      	int k, samples, decimation, pga, gain, j;
  33   1      
  34   1      	CKCON = 0; 						// 0 MOVX cycle stretch
  35   1      	PDCON = 0x14;					// turn on ADC-Vref, SPI and Systimers
  36   1      /* SPI setup */
  37   1      	SPICON = 0x06;					// SCLK=tclk/2, Double-Buf Mode, Order=MSB, Ma
            -ster, CPHA=1, CPOL=0
  38   1      	SPITCON = 0x28;				// Enable SCLK, Enable MOSI	
  39   1      
  40   1      	autobaud();
  41   1      	printf("\nMSC1210 ADC Conversion Test\n\n");
  42   1      	printf("Gain    Dec.   rate      Ave Value       Max-Min     Max 
            -      Min\n");
  43   1      
  44   1      /* Setup ADC */
  45   1      	ADMUX = 0x08;					//(AIN+ = AIN0),  (AIN- = AINCOM) Voltage from 
            -DAC
  46   1      	ACLK = 9;						// ACLK = 11,0592,000/10 = 1,105,920 Hz
  47   1      										// modclock = 1,105,920/64 = 17,280 Hz
  48   1      	samples=15;
  49   1      	gain = 0;
  50   1      	for (pga=0; pga<8 ; pga++)	// PGA Loop
  51   1      	{	
  52   2      		dacout(0x4000>>pga);		// Set DAC to 1/4 full-scale
  53   2      		gain = gain*2;
  54   2      		gain = gain ? gain : 1;
  55   2      		ADCON0 = 0x30 | pga;		// Vref On, Vref Hi, Buff off, BOD off, pg
            -a
  56   2      		for (decimation=90; decimation<=2070; decimation+=90)	// decimat
            -ion loop
  57   2      		{
  58   3      			ADCON2 = decimation & 0xFF;		// LSB of decimation
  59   3      			ADCON3 =(decimation>>8) & 0x07;	// MSB of decimation
  60   3      			ADCON1 = 0x01;							// bipolar, auto, self calibration (offset
            -, gain)
  61   3      			for (k=0; k<4; k++) {				// Wait for Four conversions for filte
            -r to settle after calibration
  62   4      				while (!(AIE & 0x20))	
  63   4      					;									// Wait for data ready
  64   4      				dummy = bipolar();				// Dummy read to clear ADCIRQ
  65   4      			}
  66   3      			max = 0; min = 0x7FFFFFFF;
  67   3      			average = 0;
  68   3      			for (j = 0; j < samples; j++){
  69   4      				while (!(AIE & 0x20))
  70   4      					{} 								// Wait for next result
  71   4      				result = bipolar(); 
  72   4      				average += result;
  73   4      				max = (max > result) ? max : result;
  74   4      				min = (min < result) ? min : result;
  75   4      			}
  76   3      			average = average/samples;			// Divide by 8
  77   3      			printf ("%3d,%7d,%6dHz,", gain,decimation,17280/decimation);		/
            -/ 17280 = ACLK/64
  78   3      			printf ("%12ld,  %10ld, %8ld,", average, max-min, max);
  79   3      			printf ("  %8ld\n",min);			// One printf() can't handle all of 
            -these variables.
  80   3      		}// for decimation loop
  81   2      	} // PGA loop
  82   1      	printf("\n FINISHED \n-----------\n");
  83   1      	while(1)
  84   1      		;
  85   1      } //main
  86          				
  87          
  88          
  89          
  90          
RC51 COMPILER V03.03.28,  A2D                     02/20/03  10:27:10  PAGE  2

ASSEMBLY LISTING OF GENERATED OBJECT CODE

            ; FUNCTION _dacout (BEGIN)
              ; Register R6R7 is assigned to parameter val
                                           ; SOURCE LINE # 20 
0000 D294           SETB   Sync
                                           ; SOURCE LINE # 21 
0002 C294           CLR    Sync
                                           ; SOURCE LINE # 24 
0004 759B00         MOV    SPIDATA,#000H
                                           ; SOURCE LINE # 25 
0007 8E9B           MOV    SPIDATA,R6
                                           ; SOURCE LINE # 26 
0009 8F9B           MOV    SPIDATA,R7
000B 22             RET    

            ; FUNCTION _dacout (END)

            ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 34 
0000 758E00         MOV    CKCON,#000H
                                           ; SOURCE LINE # 35 
0003 75F114         MOV    PDCON,#014H
                                           ; SOURCE LINE # 37 
0006 759A06         MOV    SPICON,#006H
                                           ; SOURCE LINE # 38 
0009 759D28         MOV    SPITCON,#028H
                                           ; SOURCE LINE # 40 
000C 120000  R      LCALL  autobaud
                                           ; SOURCE LINE # 41 
000F 7B05           MOV    R3,#005H
0011 7A00    R      MOV    R2,#HIGH(?STR?A2D?BASE)
0013 7900    R      MOV    R1,#LOW(?STR?A2D?BASE)
0015 120000  R      LCALL  ?printf
                                           ; SOURCE LINE # 42 
0018 7B05           MOV    R3,#005H
001A 7A00    R      MOV    R2,#HIGH(?STR?A2D?BASE + 01FH)
001C 7900    R      MOV    R1,#LOW(?STR?A2D?BASE + 01FH)
001E 120000  R      LCALL  ?printf
                                           ; SOURCE LINE # 45 
0021 75D708         MOV    ADMUX,#008H
                                           ; SOURCE LINE # 46 
0024 75F609         MOV    ACLK,#009H
                                           ; SOURCE LINE # 49 
0027 E4             CLR    A
0028 F500    R      MOV    gain,A
002A F500    R      MOV    gain+01H,A
                                           ; SOURCE LINE # 50 
002C F500    R      MOV    pga,A
002E F500    R      MOV    pga+01H,A
0030         ?FOR4:
                                           ; SOURCE LINE # 52 
0030 7E40           MOV    R6,#040H
0032 E4             CLR    A
0033 FF             MOV    R7,A
0034 A800    R      MOV    R0,pga+01H
0036 08             INC    R0
0037 EE             MOV    A,R6
0038 8006           SJMP   ?LAB15
003A         ?LAB16:
003A A2E7           MOV    C,ACC.7
003C 13             RRC    A
003D CF             XCH    A,R7
003E 13             RRC    A
003F CF             XCH    A,R7
0040         ?LAB15:
0040 D8F8           DJNZ   R0,?LAB16
0042 FE             MOV    R6,A
0043 120000  R      LCALL  _dacout
                                           ; SOURCE LINE # 53 
0046 E500    R      MOV    A,gain+01H
0048 AA00    R      MOV    R2,gain
004A C3             CLR    C
004B 33             RLC    A
004C CA             XCH    A,R2
004D 33             RLC    A
004E CA             XCH    A,R2
004F 8A00    R      MOV    gain,R2
0051 F500    R      MOV    gain+01H,A
                                           ; SOURCE LINE # 54 
0053 E500    R      MOV    A,gain
0055 4500    R      ORL    A,gain+01H
0057 6002           JZ     ?ELSE3
0059 8006           SJMP   ?NXT15
005B         ?ELSE3:
005B E4             CLR    A
005C F500    R      MOV    gain,A
005E 750001  R      MOV    gain+01H,#001H
0061         ?NXT15:
                                           ; SOURCE LINE # 55 
0061 E500    R      MOV    A,pga+01H
0063 4430           ORL    A,#030H
0065 F5DC           MOV    ADCON0,A
                                           ; SOURCE LINE # 56 
0067 E4             CLR    A
0068 F500    R      MOV    decimation,A
006A 75005A  R      MOV    decimation+01H,#05AH
006D         ?FOR5:
006D E500    R      MOV    A,decimation
006F 6480           XRL    A,#080H
0071 B48806         CJNE   A,#088H,?LAB18
0074 E500    R      MOV    A,decimation+01H
0076 B41601         CJNE   A,#016H,?LAB18
0079 D3             SETB   C
007A         ?LAB18:
007A 4003           JC     $ + 5
007C 020000  R      LJMP   ?NXT14
                                           ; SOURCE LINE # 58 
007F 8500DE  R      MOV    ADCON2,decimation+01H
                                           ; SOURCE LINE # 59 
0082 E500    R      MOV    A,decimation
0084 A2E7           MOV    C,ACC.7
0086 5407           ANL    A,#007H
0088 F5DF           MOV    ADCON3,A
                                           ; SOURCE LINE # 60 
008A 75DD01         MOV    ADCON1,#001H
                                           ; SOURCE LINE # 61 
008D E4             CLR    A
008E F500    R      MOV    k,A
0090 F500    R      MOV    k+01H,A
0092         ?WHILE3:
                                           ; SOURCE LINE # 62 
0092 E5A6           MOV    A,AIE
0094 30E5FB         JNB    ACC.5,?WHILE3
                                           ; SOURCE LINE # 64 
0097 120000  R      LCALL  bipolar
009A 8C00    R      MOV    dummy,R4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -