📄 a2d.lst
字号:
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 + -