📄 ad_da.lst
字号:
C51 COMPILER V7.50 AD_DA 03/28/2007 11:36:57 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AD_DA
OBJECT MODULE PLACED IN AD_DA.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE AD_DA.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include <intrins.h>
3 #include "Define.h"
4 #include "Set.h"
5
6 ////////////2006.11.08添加///////////////////
7 #define Wait1us _nop_();
8 #define Wait2us {_nop_();_nop_();}
9 #define Wait4us {Wait2us;Wait2us;}
10 #define Wait8us {Wait4us;Wait4us;}
11 #define Wait10us {Wait8us;Wait2us;}
12 #define Wait30us {Wait10us;Wait8us;Wait4us;Wait2us;}/
13 ///////////////////////////////
14
15 /************定义接口总线**************/
16 sbit ADClock = P1 ^ 5; //时钟口线
17 sbit ADDataOut = P1 ^ 4; //数据输出口线
18 sbit ADChipSelect = P2 ^ 7; //片选口线
19 /************接口总线定义结束**********/
20
21 ///////////////////////////////////////
22 sbit SPI_CLK = P3^5;
23 sbit SPI_DATA = P3^3;
24 sbit CS_DA = P3^4;
25 sbit CS_AD = P2^7;
26 sbit SPI_IOCLK = P1^5;
27 sbit SPI_DAOUT = P1^4;
28
29 //unsigned char code TAB[24]={0};
30
31 void Delay(UINTDATA time)
32 {
33 1 while(time--);
34 1 }
35
36 /************************DA****************************/
37 void DATrans(UINTDATA da)//TLC5615DA转换
38 {
39 1 UCHARDATA i = 0;
40 1 UINTIDATA tempa = 0;
41 1 UINTIDATA tempb = 0;
42 1 tempa = da<<2;
43 1 //da<<=6;
44 1
45 1 CS_DA = 0;
46 1 SPI_CLK=0;
47 1
48 1 for (i = 0;i < 16;i++)
49 1 {
50 2 tempb = tempa;
51 2 SPI_DATA=(bit)(tempa&0x8000);
52 2 SPI_CLK=1;
53 2 tempa = tempa<<1;
54 2 _nop_();
55 2 SPI_CLK=0;
C51 COMPILER V7.50 AD_DA 03/28/2007 11:36:57 PAGE 2
56 2 }
57 1
58 1 SPI_CLK = 1;
59 1 CS_DA=1;
60 1 //SPI_CLK=0;
61 1
62 1 for (i=20;i>0;i--)
63 1 {
64 2 ;
65 2 }
66 1 }
67 /******************************************************/
68
69 /************************AD****************************/
70 UCHAR ADTrans(void)//TLC549
71 {
72 1 UCHAR i;
73 1 UCHAR u;
74 1
75 1 CS_AD = 0;
76 1 Delay(5);
77 1
78 1 for(i=0;i<8;i++) //read data
79 1 {
80 2 SPI_IOCLK=0;
81 2 u=(u<<=1)|SPI_DAOUT;
82 2 SPI_IOCLK=1;
83 2 _nop_();
84 2 }
85 1
86 1 CS_AD=1;
87 1 Delay(20);
88 1 //u = SBUF;
89 1
90 1 return(u); //return ad data
91 1 }
92 /******************************************************/
93
94
95
96 /*********函数名称:ADCSelChannel********
97 *
98 *功能:转换指定通道的模拟量为数字量
99 *
100 *说明:
101 *
102 *位置:
103 *
104 ****************************************/
105 unsigned char ADCSelChannel(void)
106 {
107 1 UCHARIDATA ConvertValue = 0;
108 1 UCHARIDATA i;
109 1 ADChipSelect = 1; //芯片复位
110 1 ADChipSelect = 0;
111 1 ADChipSelect = 1;
112 1 ADClock = 0;
113 1 Wait4us;
114 1
115 1 ADChipSelect = 0; //芯片起始
116 1 Wait4us; //等待延时
117 1 for (i = 0; i < 8; i ++) //输入采样转换时钟
C51 COMPILER V7.50 AD_DA 03/28/2007 11:36:57 PAGE 3
118 1 {
119 2 ADClock = 1;
120 2 ADClock = 0;
121 2 }
122 1 ADChipSelect = 1; //开始转换
123 1 Wait10us; //等待转换结束
124 1
125 1 ADChipSelect = 0; //读取转换结果
126 1 Wait4us;
127 1 for (i = 0; i < 8; i ++) //
128 1 {
129 2 ADClock = 1;
130 2 //ConvertValue <<= 1;
131 2 ////////
132 2 ACC = ConvertValue;
133 2 //////////
134 2 ADDataOut = 1;
135 2 Wait10us;
136 2 if (ADDataOut)
137 2 {
138 3 ConvertValue = ConvertValue|0x01;
139 3 }
140 2 else
141 2 {
142 3 ConvertValue = ConvertValue&0xfe;
143 3 }
144 2 ADClock = 0;
145 2
146 2 ///
147 2 ConvertValue = ConvertValue<<1;
148 2 }
149 1 ADChipSelect = 1;
150 1 return (ConvertValue); //返回转换结果
151 1 }
152
153 /************ADCSelChannel函数结束**********/
154
155
156 ///////////////////main////////////////////////////
157 /*
158 void main()
159 {
160 UCHARIDATA terminal = 0;
161 UINTDATA temp=0;
162
163 //while(1)
164 {
165 //terminal = ADTrans(); ADCSelChannel(void)
166 //terminal = ADCSelChannel();
167 P1 = 4;
168 //P2 = 1;
169 P2 = ADCSelChannel();
170 terminal = ADCSelChannel();
171 //P2 = P2|terminal;
172 //P2=ADTrans();
173
174 temp=temp|terminal;
175
176 DATrans(temp);
177 //Wait10us
178 //_nop_();
179 while(1)
C51 COMPILER V7.50 AD_DA 03/28/2007 11:36:57 PAGE 4
180 {
181 P2 = ADCSelChannel();
182
183 /////////
184 terminal = ADCSelChannel();
185 temp=temp|terminal;
186
187 DATrans(0xffff);
188 Wait10us
189 _nop_();
190
191 }
192
193 //P2=ADTrans();
194 }
195 }*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 249 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- 6
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -