📄 ads8505.lst
字号:
C51 COMPILER V8.02 ADS8505 12/12/2005 22:20:37 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ADS8505
OBJECT MODULE PLACED IN ADS8505.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADS8505.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f020.h>
2 #include <absacc.h>
3 #include <intrins.h>
4 #include "Def.h"
5
6 #define Read_AD P3
7
8 #define Test_Cs
9 //#define Test_Count_8
10 //#define Test_Count_16
11 //#define Test_Count_32
12 //#define Test_Count_64
13
14
15
16 volatile U8 xdata AD8505_Data1[100];
17 volatile U8 xdata AD8505_Data[3200];
18 volatile U8 AD_High=0,AD_Low=0;
19 #define BAUDRATE 115200
20 #define SYSCLK 22118400
21 sbit BUSY_IO = P2^1; //忙状态判断端口,输入
22 sbit CS_IO = P2^2; //片选端口,输出
23 sbit Read_IO = P2^3; //数据读状态端口,输出
24 sbit BYTE_HL = P2^4; //转换数据的高低输出端口选择,输出
25
26
27 void SYSCLK_Init (void)
28 {
29 1 U16 i;
30 1 CKCON = 0x00;
31 1 OSCXCN = 0x67;
32 1 for (i=0; i < 256; i++) ;
33 1 while (!(OSCXCN & 0x80));
34 1 OSCICN = 0x88;
35 1 TCON |=0x01;
36 1 }
37 void PORT_Init (void)
38 {
39 1 XBR0 = 0x05;
40 1 XBR1 = 0x24;
41 1 XBR2 = 0x40;
42 1 P0MDOUT = 0x1D;
43 1 P1MDOUT = 0x0E;
44 1 P1MDIN = 0xFF;
45 1 P2MDOUT = 0x1C;
46 1 EMI0CF = 0x20;
47 1 }
48 void Delay(U8 Count)
49 {
50 1 U8 i;
51 1 for(i=Count;i>0;i--)
52 1 {
53 2 _nop_();
54 2 _nop_();
55 2 // _nop_();
C51 COMPILER V8.02 ADS8505 12/12/2005 22:20:37 PAGE 2
56 2 // _nop_();
57 2 }
58 1 }
59 void Read_AD_Data(void)
60 {
61 1 BYTE_HL = 0; /*准备读数据*/
62 1 Read_AD = 0xFF;
63 1 BUSY_IO = 1;
64 1
65 1 CS_IO = 1; /*R/C脚为底,CS为高*/
66 1 Read_IO = 0;
67 1 __nop_();
68 1 __nop_();
69 1 __nop_();
70 1 __nop_();
71 1 // Read_IO = 1;// __nop_();
72 1 CS_IO = 0; /*R/C脚为底,CS出现负跳沿,AD开始转换*/
73 1 __nop_();
74 1 Read_IO = 1;
75 1 while(BUSY_IO==0); /*等待AD转化出结果*/
76 1 CS_IO = 1; /*R/C脚为高,CS为高*/
77 1 __nop_();
78 1 __nop_();
79 1 CS_IO = 0;
80 1 __nop_();
81 1 __nop_();
82 1 //Read_IO = 1;
83 1 //BYTE_HL = 0; /*准备读数据*/
84 1 AD_Low = Read_AD; /*读低八为数*/
85 1
86 1 BYTE_HL = 1;
87 1 Read_AD = 0xFF;
88 1 // Delay(20);
89 1 AD_High = Read_AD; /*读高八为数*/
90 1 CS_IO = 1;
91 1 // Read_IO = 0;
92 1 // Delay(40);
93 1 }
94
95 void Read_AD_Data1(void)
96 {
97 1 BYTE_HL = 0; /*准备读数据*/
98 1 Read_AD = 0xFF; /*读数据前先输出1*/
99 1 // Read_IO = 1;
100 1 BUSY_IO = 1; /*读数据前先输出1*/
101 1 Read_IO = 0; /*下降沿触发AD转换*/
102 1 __nop_(); /*1/22.1184M=45.2ns*/
103 1 __nop_();
104 1 Read_IO = 1; /*下降沿中部至上升沿中部所需时间至少40ns,最大1750ns*/
105 1 while(BUSY_IO==0); /*等待AD转化出结果*/
106 1 AD_Low = Read_AD; /*读低八为数*/
107 1 BYTE_HL = 1; /*准备读数据*/
108 1 Read_AD = 0xFF;
109 1 AD_High = Read_AD; /*读高八为数*/
110 1 //Read_IO = 0;
111 1 Delay(5); /*保证转换之间间隔4us*/
112 1 }
113
114 void Init_Data(void)
115 {
116 1 U16 i=0;
117 1 for(i=3200;i>0;i--)
C51 COMPILER V8.02 ADS8505 12/12/2005 22:20:37 PAGE 3
118 1 {
119 2 AD8505_Data[i]=0;
120 2 }
121 1 }
122 void UART0_Init (void)
123 {
124 1 SCON0 = 0x50;
125 1
126 1 TMOD = 0x21;
127 1
128 1 T2CON &= 0x0cf;
129 1 TH1 = -(SYSCLK/BAUDRATE/16);
130 1 TR1 = 1;
131 1 CKCON |= 0x10;
132 1 PCON |= 0x80;
133 1 }
134 void main(void)
135 {
136 1 U16 i=0;
137 1 U32 Temp=0;
138 1 WDTCN = 0xde;
139 1 WDTCN = 0xad; //关看门狗
140 1 SYSCLK_Init();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -