106 delay();
107 dat = (dat<<1) | SDA;
108 SCL = 0;
109 delay();
110 }
111 return dat;
112 }
113
114
115 unsigned char readAdc()
116 {
117 unsigned char dat;
118 Start();
119 write_byte(0x90); //前四位地址1001 后三位根据硬件000 最后一位R/W(上划线) 写信号
120 Respons();
121 write_byte(0x40); //控制字 通道0
122 Respons();
123
124 Start();
125 write_byte(0x91); //前四位地址1001 后三位根据硬件000 最后一位R/W(上划线) 读信号
126 Respons();
127 dat = read_byte();
128 NoRespons();
129 Stop();
130 return dat;
131 }
132
133
134 void writeDAC(unsigned char dat)
135 {
136 Start();
137 write_byte(0x90); //前四位地址1001 后三位根据硬件000 最后一位R/W(上划线) 写信号
138 Respons();
139 write_byte(0x40); //控制字
140 Respons();
141 write_byte(dat);
142 Respons();
143 Stop();
144 }
145
146 void SendOneByte(unsigned char c)
147 {
148 SBUF = c;
149 while(!TI);
150 TI = 0;
151 }
152 int main()
153 {
154 unsigned char dat;
155 unsigned char tmpDA = 0;
156 Init();
157 InitUART();
158
159 while(1)
160 {
161 delayms(200);
162 dat = readAdc();
163 SendOneByte(dat);
164
165 tmpDA++;
166 if(tmpDA == 255)
167 tmpDA = 0;
168 writeDAC(tmpDA);
169 }
170 return 0;
171 }
AD直接采集DA出来的电压串口发送 验证成功
|