📄 tlc0883.lst
字号:
C51 COMPILER V8.02 TLC0883 08/21/2007 15:46:03 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TLC0883
OBJECT MODULE PLACED IN tlc0883.OBJ
COMPILER INVOKED BY: D:\SOFTWARE\uv3\C51\BIN\C51.EXE tlc0883.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////////////////////////////////////////////////////////
-//////
2 //
3
4 // TLC0838驱动程序TLC0838_II.c
5 // uchar adc_tlc0838(uchar channel);
6 // 函数说明:channel为通道的选择:0……CH0 1……CH1 2……CH2 3……CH3
7 // 当error=0时,返回的值为有效值,当error=1时,返回值无效
-
8 ///////////////////////////////////////////////////////////////////////////////////////////////
9
10 #include<reg51.h>
11 #include<intrins.h>
12 #define uchar unsigned char
13 #define uint unsigned int
14
15 sbit CS=P2^7;
16 sbit DI=P2^6;
17 sbit CLK=P2^5; //TLC0838---PIN16
18 sbit DO=P2^4; //TLC0838---PIN17
19 //TLC0838---PIN14
20 //TLC0838---PIN18
21 //SE接成低电平
22 sbit sdata=P2^2;
23 sbit sclk=P2^1;
24 sbit load=P2^0;
25
26 uint adc_tlc0838(uchar channel)
27 {
28 1 uchar t,i;
29 1 uint Temp1=0,Temp2=0;
30 1 if (channel==0) t=0;
31 1 else if(channel==1) t=1;
32 1 else if(channel==2) t=4;
33 1 else if(channel==3) t=5;
34 1 else if(channel==4) t=2;
35 1 else if(channel==5) t=3;
36 1 else if(channel==6) t=6;
37 1 else if(channel==7) t=7;
38 1
39 1 CS=1;
40 1 _nop_();_nop_();_nop_();_nop_();
41 1
42 1
43 1 CLK=0;
44 1 CS=0; //使AD通道打开
45 1 DI=1; //Start bit=1
46 1 CLK = 1;
47 1 _nop_();
48 1 _nop_();
49 1
50 1 CLK=0;
51 1 CS=0;
52 1 DI = 0;
53 1 CLK = 1;
C51 COMPILER V8.02 TLC0883 08/21/2007 15:46:03 PAGE 2
54 1 _nop_();
55 1 _nop_();
56 1
57 1
58 1 for(i=0;i<3;i++)
59 1 {
60 2 CLK = 0;
61 2 _nop_();
62 2 _nop_();
63 2 if(t&1)DI=1;
64 2 else DI=0;
65 2 t=t>>1;
66 2 CLK = 1;
67 2 _nop_();
68 2 _nop_();
69 2 }
70 1
71 1
72 1 CLK=0;
73 1 _nop_();
74 1 _nop_();
75 1 CLK=1;
76 1 _nop_();
77 1 _nop_();
78 1
79 1
80 1 for(i=0;i<=6;i++)
81 1 {
82 2 CLK = 0; //时钟为低电平
83 2 if(DO)
84 2 { //如果采集到的位为1
85 3 Temp1=Temp1+1; //给临时存储Temp1加1
86 3 Temp1=Temp1<<1;
87 3 } //临时存储器左移一位
88 2 else
89 2 Temp1=Temp1<<1; //如果采集到的数位为0,临时存储器左移一位
90 2 _nop_();
91 2 _nop_();
92 2 _nop_();
93 2 _nop_();
94 2 CLK = 1;
95 2 } //时钟为高电平,完成一个时钟周期数据采集
96 1 CLK = 0;
97 1 if(DO) Temp1=Temp1+1;
98 1 if(DO) Temp2=0x80;
99 1
100 1 CLK = 1;
101 1 //采集数据校验
102 1
103 1 for(i=0;i<=6;i++)
104 1 {
105 2 CLK=0;
106 2 if(DO){
107 3 Temp2=Temp2>>1;
108 3 Temp2=Temp2+0x80; }
109 2 else
110 2 Temp2=Temp2>>1;
111 2 CLK = 1;
112 2 }
113 1 CS = 1;
114 1
115 1 return Temp1;
C51 COMPILER V8.02 TLC0883 08/21/2007 15:46:03 PAGE 3
116 1
117 1
118 1
119 1 }
120
121
122
123 dac_tlc5620(uchar send_char)
124 {
125 1 uchar i;
126 1 load=1;
127 1 sclk=1;sdata=0;sclk=0;
128 1 sclk=1;sdata=0;sclk=0;
129 1 sclk=1;sdata=1;sclk=0;
130 1
131 1 for(i=0;i<8;i++)
132 1 {
133 2 sclk=1;
134 2 if(send_char&0x80) sdata=1;
135 2 else sdata=0;
136 2 sclk=0;
137 2 send_char=send_char<<1;
138 2 }
139 1 load=0;
140 1 _nop_();
141 1 load=1;
142 1
143 1 }
144 //////////////////////////////////////////
145 delay(int d)
146 {
147 1 while(--d);
148 1 }
149
150 main()
151 { uchar idata s[218];
152 1
153 1 uchar i;
154 1
155 1 while(1)
156 1
157 1 {
158 2
159 2
160 2 i=adc_tlc0838(0);
161 2 dac_tlc5620(i);
162 2
163 2
164 2
165 2 }
166 1
167 1 }
*** WARNING C280 IN LINE 151 OF TLC0883.C: 's': unreferenced local variable
168
169
170
171
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 290 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.02 TLC0883 08/21/2007 15:46:03 PAGE 4
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- 218
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -