?? text.lst
字號:
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TEXT
OBJECT MODULE PLACED IN Text.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <REG1210.H> /* special function register 1210 */
3 #include <stdio.h> /* standard I/O .h-file */
4 #include <rtx51tny.h> /* RTX-51 tiny functions & defines */
5 #include <stdlib.h>
6 #include <string.h>
7 #include <16b.h>
8
9 #define uint unsigned int
10 #define uchar unsigned char
11
12
13 sbit DAC8532=P1^4; /*dac8532 */
14 char data strx[6];
15 unsigned char data ccnun=4,chanl_n=0;
16 uint daval;
17 int data_buf[10];
18 int testad=0;
19 //void Uart0Send(char card_add,char f,int a,int DATA[],uchar len1 ,uchar len);
20 /*write dac8532 */
21 void write_8532(unsigned int val,unsigned char port)
22 {
23 1 uchar i;
24 1 SPICON = SPICON_8532;
25 1 DAC8532 =0;
26 1 for(i=0;i<5;i++)
27 1 {;}
28 1 if(port==1)
29 1 {
30 2 while((AIE&0X08)!=0X08){}SPIDATA=Dac8532A;
31 2 while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
32 2 while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
33 2 }
34 1 if(port==2)
35 1 {
36 2 while((AIE&0X08)!=0X08){}SPIDATA=Dac8532B;
37 2 while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
38 2 while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
39 2 }
40 1 for(i=0;i<5;i++)
41 1 {;}
42 1 DAC8532 =1;
43 1 }
44
45 /****int to char ******/
46 char* itoa(int argc)
47 {
48 1 char data s[6];
49 1 sprintf(s,"%d",argc);
50 1 return s;
51 1 }
52
53
54 /****串口0發送子程序 ******/
55 void Uart0Send(char card_add,char f,int a,int DATA[],uchar len1 ,uchar len)
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 2
56 {
57 1 uchar xdata i=0,j=0;
58 1 uchar data dd[6];
59 1 TI_0=0;
60 1 SBUF0='F';
61 1 while(!TI_0);
62 1 TI_0=0;
63 1 SBUF0='F';
64 1 while(!TI_0);
65 1 TI_0=0;
66 1 SBUF0=ADDRESS;
67 1 while(!TI_0);
68 1 TI_0=0;
69 1 SBUF0=card_add;
70 1 while(!TI_0);
71 1 TI_0=0;
72 1 SBUF0=f;
73 1 while(!TI_0);
74 1 TI_0=0;
75 1 j=0;
76 1 strcpy(dd,itoa(a));
77 1 while(dd[j])
78 1 {
79 2 SBUF0=dd[j++];
80 2 while(!TI_0);
81 2 TI_0=0;
82 2 }
83 1 if(len!=0)
84 1 {
85 2 SBUF0=',';
86 2 while(!TI_0);
87 2 TI_0=0;
88 2 for(i=len1;i<(len+len1);i++)
89 2 {
90 3 j=0;
91 3 strcpy(dd,itoa(DATA[i]));
92 3 while(dd[j])
93 3 {
94 4 SBUF0=dd[j++];
95 4 while(!TI_0);
96 4 TI_0=0;
97 4 }
98 3 if (i != (len+len1-1))
99 3 {
100 4 SBUF0=',';
101 4 while(!TI_0);
102 4 TI_0=0;
103 4 }
104 3 }
105 2 }
106 1 SBUF0='E';
107 1 while(!TI_0);
108 1 TI_0=0;
109 1 SBUF0='E';
110 1 while(!TI_0);
111 1 TI_0=0;
112 1 SBUF0='\n';
113 1 while(!TI_0);
114 1 TI_0=0;
115 1 }
116
117 /*串口0數據處理子程序*/
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 3
118 void read_cmd(char i_cmd_buf, char* rebuf)
119 {
120 1 char i=0,j=0,k=0, *p1,*p2,*p3;
121 1 p1=&h_cmd.buf[i_cmd_buf];
*** WARNING C182 IN LINE 121 OF TEXT.C: pointer to different objects
122 1 p2=rebuf;
123 1
124 1 while (i<5) //數字前面字符的個數5
125 1 {
126 2 *p1++=*p2++;
127 2 i++;
128 2 }
129 1 p3=&strx[0];
130 1 for (i=0;i<=6;i++)strx[i]=0; //整型最多6個字符
131 1 while (1)
132 1 {
133 2 if (*p2==69) // If ASCII 'E'
134 2 {
135 3 h_cmd.buf[i_cmd_buf].da[j++]=atoi(strx);
136 3 break;
137 3 }
138 2 if (*p2==0x2c) // If ASCII ','
139 2 {
140 3 h_cmd.buf[i_cmd_buf].da[j++]=atoi(strx);
141 3 for (i=0;i<=6;i++)strx[i]=0;
142 3 p2++;
143 3 p3=&strx[0];
144 3 }
145 2 else *p3++=*p2++;
146 2 }
147 1 Serial0_Receive.buf_present_pos = 0; //Now location of buffer,initial value is buf_start
148 1 Serial0_Receive.pre_char = 0; //Prechar of present position,initial value is 0
149 1 Serial0_Receive.cmd_finish = 0; //This is 1 command end has been accepted ,initial value i
-s 0
150 1 }
151 /* initial spi ,SPICON在各自的子程序中設置*/
152 void init_spi(void)
153 {
154 1 P1DDRH=0x75; /* SPI port setup */
155 1 SPITCON=SCLK_EN|DRV_EN;
156 1 PDCON &= ~(PDSPI); /* turn on SPI */
157 1 }
158
159 /* initial ADC */
160 void init_adc(void)
161 {
162 1 int decimation=720; /* factor of extractive */
163 1 EAI = CLEAR;
164 1 ACLK = 4; /* ACLK = 11.0592 MHz/(9+1) = 1.10592 MHz */
165 1 ADCON0 &= (~(BOD|EVREF|VREFH|EBUF)|PGA_1); /* Vref Off,Extenal Verf,Buff off,BOD off, PGA=1 */
166 1 ADCON1 = (POL|SM_3|CAL_1); /* Unipolar, sinc3, self calibration, offset, gain */
167 1 ADCON2 = decimation & 0xff; /* LSB of decimation */
168 1 ADCON3 = (decimation >>8)&0x07; /* MSB of decimation */
169 1 SSCON = CLEAR;
170 1 ADMUX = INP_0|INN_COM; /* Select AIN0+/Acom- */
171 1 adcsum.ps = CLEAR; /* buffer sp clear */
172 1 AIE = AD_EN; /* Enable Aux Interrupt */
173 1 EAI=SET ;
174 1 AI=CLEAR;
175 1 }
176
177
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 4
178 /*initial serial port0*/
179 void serial0_init (void) //串口0的初始化
180 {
181 1 PCON |=0x80;
182 1 SCON0 = 0x50; /* mode 1: 8-bit UART, enable receiver */
183 1 TMOD |= 0x20; /* timer 1 mode 2: 8-Bit reload */
184 1 TH1 = 0xfa; /* reload value 9600 baud */
185 1 TR1 = 1; /* timer 1 run */
186 1 IE=0x80;
187 1 ES0 = 1; /* enable serial port interrupt */
188 1 }
189
190 /* serial processing */
191 serial () interrupt 4 using 2
192 {
193 1 unsigned char data c;
194 1 if (RI)
195 1 {
196 2 c = SBUF;
197 2 RI = 0;
198 2
199 2 switch (c) {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -