📄 com.lst
字号:
C51 COMPILER V7.50 COM 10/03/2007 21:56:30 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE COM
OBJECT MODULE PLACED IN .\com.obj
COMPILER INVOKED BY: F:\Program Files\keil c51\C51\BIN\C51.EXE ..\com.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\com.obj)
line level source
1 #pragma REGPARMS
2
3 #include <math.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7
8 #include <absacc.h>
9 #include <c8051f020.h>
10 #include <intrins.h>
11 #define SDA 0x20//BIT0
12 #define SCL 0x10//BIT1
13 #define _NOP() _nop_()
14 #define DIN P4
15 #define uchar unsigned char
16 #define uint unsigned int
17 #define S_SDA P4|=SDA//DDIR|=SDA,DOUT|=SDA
18 #define C_SDA P4&=~SDA//DDIR|=SDA,DOUT&=~SDA
19 #define S_SCL P4|=SCL//DDIR|=SCL,DOUT|=SCL
20 #define C_SCL P4&=~SCL//DDIR|=SCL,DOUT&=~SCL
21 //#define SDA_IN _NOP//DDIR&=~SDA
22 #define READ_SDA _nop_()//(DIN&SDA)
23 //#define delay() _nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(
-),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(
-)
24 /***************************************************/
25 unsigned char ack=0;
26 /********************************************/
27
28 #include "com.h"
29
30 sfr16 DP = 0x82; // data pointer
31 sfr16 TMR3RL = 0x92; // Timer3 reload value
32 sfr16 TMR3 = 0x94; // Timer3 counter
33 sfr16 ADC0 = 0xbe; // ADC0 data
34 sfr16 ADC0GT = 0xc4; // ADC0 greater than window
35 sfr16 ADC0LT = 0xc6; // ADC0 less than window
36 sfr16 RCAP2 = 0xca; // Timer2 capture/reload
37 sfr16 T2 = 0xcc; // Timer2
38 sfr16 RCAP4 = 0xe4; // Timer4 capture/reload
39 sfr16 T4 = 0xf4; // Timer4
40 sfr16 DAC0 = 0xd2; // DAC0 data
41 sfr16 DAC1 = 0xd5; // DAC1 data
42
43 //-----------------------------------------------------------------------------
44 // Global CONSTANTS
45 //-----------------------------------------------------------------------------
46
47 #define BAUDRATE 9600 // Baud rate of UART in bps
48 #define SYSCLK 11059200 // SYSCLK frequency in Hz
49 #define SAMPLE_RATE 50000 // Sample frequency in Hz
50 #define INT_DEC 256 // integrate and decimate ratio
51
52
53 unsigned int ii,j;
C51 COMPILER V7.50 COM 10/03/2007 21:56:30 PAGE 2
54 unsigned int xdata chii;
55 float f;
56 unsigned int VCH0,VCH1,VCH2,VCH3,VCH4,VCH5,VCH6,VCH7;
57 unsigned int xdata BB[1024];
58 unsigned char bufer[8];
59 //**************----------------------------------------
60 /*void chad(int buffer[],int n) //invert the array BB
61 {
62 int i,j,temp,m=(n-1)/2;
63 for(i=0;i<=m;i++)
64 {j=n-1-i;
65 temp=buffer[i];buffer[i]=buffer[j];buffer[j]=temp;}
66 return;
67
68 }
69 /**************------------------------------------------
70 */
71
72 void delay()
73 {
74 1 uchar i,j;
75 1 for(i=0;i<=100;i++)
76 1 {
77 2 for(j=0;j<=100;j++)
78 2 ;
79 2 }
80 1 }
81
82 //***********************************************************************************
83 void SYSCLK_Init (void)
84 {
85 1 int i; // delay counter
86 1
87 1 OSCXCN = 0x67; // start external oscillator with
88 1 // 22.1184MHz crystal
89 1
90 1 for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
91 1
92 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
93 1
94 1 OSCICN = 0x88; // select external oscillator as SYSCLK
95 1 // source and enable missing clock
96 1 // detector
97 1 }
98
99 //-----------------------------------------------------------------------------
100 // PORT_Init use cpumodel.pcb
101 //-----------------------------------------------------------------------------
102
103 void PORT_Init (void)
104 {
105 1 XBR0 = 0x06; //Enable UART0 P0.0=TXD0 P0.1=RXD0
106 1 //Enable SPI P0.2=SCK P0.3=MISO
107 1 // P0.4=MOSI P0.5=NSS
108 1
109 1 XBR1 = 0x00; //
110 1
111 1
112 1
113 1 XBR2 = 0x42; //Enable pin on
114 1
115 1 //Enable UART1 P0.4=TXD1 P0.5=RXD1
C51 COMPILER V7.50 COM 10/03/2007 21:56:30 PAGE 3
116 1
117 1
118 1
119 1 P1MDOUT |= 0x40; // Enable P1.6 output
120 1
121 1 // EMI0CF=0x37;
122 1 EMI0CF=0x3B; //RAM set: D5=1 外部Ram on p4-p7
123 1 // d4=1 不复用
124 1 // d3d2=10 <4k use in chip , >4k:use outside
125 1 // EMI0CF=0x3F; // d3d2=11 only use outside To:NP441 2006.8.8
126 1
127 1 }
128
129 //-----------------------------------------------------------------------------
130 // UART0_Init
131 //-----------------------------------------------------------------------------
132 // Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
133
134 void UART0_Init (void)
135 {
136 1 SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RXD
137 1 TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload
138 1 TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate
139 1 TR1 = 1; // start Timer1
140 1 CKCON |= 0x10; // Timer1 uses SYSCLK as time base
141 1 PCON |= 0x80; // SMOD00 = 1
142 1 TI0 = 1; // Indicate TX0 ready
143 1 }
144
145
146 //-------------------------------------------------------
147 // ADC0初始化
148 //-------------------------------------------------------
149
150 void ADC0_init (void)
151 {
152 1 ADC0CN=0x81; // ADC0 d7=1:开, d6=0:跟踪方试,
153 1 // d5:AD0 INT标志,d4:AD0BUSY
154 1 // d3d2=00:AD)BUSY=1起动,
155 1 // d0=1:数据左对齐
156 1
157 1 ADC0CF=0x48; //ADC0时钟为系统时钟 5分频 放大器=1
158 1 AMX0CF=0x00; //Ain0-Ain7 单端输入0-3.3v
159 1
160 1 AMX0SL=0x07; //转换CH7
161 1 for(ii=0;ii<40;ii++){;}
162 1 AD0BUSY=1;
163 1 for(ii=0;ii<400;ii++){;}
164 1 ADC0CN =0x81;
165 1 VCH7=ADC0>>4;
166 1
167 1 AMX0SL=0x06; //转换CH6
168 1 for(ii=0;ii<40;ii++){;}
169 1 AD0BUSY=1;
170 1 for(ii=0;ii<400;ii++){;}
171 1 ADC0CN =0x81;
172 1 VCH6=ADC0>>4;
173 1
174 1
175 1 }
176
177 //-----------------------------------------------------
C51 COMPILER V7.50 COM 10/03/2007 21:56:30 PAGE 4
178 //DAC_init
179 //-----------------------------------------------------
180 void DAC_init(void)
181 {
182 1 DAC0CN=0x80;//DAC0 enable 更新数据在写DAC0 高字节时,高4位在DAC0H中,低8位在DAC0L中
183 1 DAC1CN=0x80;//有问题,在C中高位在前,低位在后,而SFR中低位在前,
184 1 REF0CN=0x0b;//
185 1 }
186
187
188 /******************************************
189 启动总线函数
190 **************************************/
191 void start()
192 {
193 1 S_SDA;
194 1 _NOP();
195 1 S_SCL;
196 1 delay();
197 1 C_SDA;
198 1 delay();
199 1 C_SCL;
200 1 _NOP();
201 1 _NOP();
202 1 }
203 /************************************
204 停止总线函数
205 **************************************/
206 void stop()
207 {
208 1 C_SDA;
209 1 _NOP();
210 1 S_SCL;
211 1 _NOP();
212 1
213 1 // C_SCL;
214 1 _NOP();
215 1 //C_SDA;
216 1 delay();
217 1 // S_SCL;
218 1 delay();
219 1 S_SDA;
220 1 _NOP();
221 1 _NOP();
222 1 _NOP();
223 1 _NOP();
224 1 }
225 /************************************
226 发送一个字节函数
227 **************************************/
228 void SendByte(uchar c)
229 {
230 1 uchar i;
231 1 for(i=0;i<8;i++)
232 1 {
233 2 if((c<<i)&0x80)
234 2 S_SDA;
235 2 else
236 2 C_SDA;
237 2 delay();
238 2 S_SCL;
239 2 delay();
C51 COMPILER V7.50 COM 10/03/2007 21:56:30 PAGE 5
240 2 C_SCL;
241 2 delay();
242 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -