📄 x3208_1.c
字号:
/* Filename x3208_1.c
Description test chip mcp3208 a/d (port1 display)
Hardware START-C51 v3.0
Clock 11.0592 Mhz (Speed x 2)
Compiler Keil CA51 v5.0
Engineer Teerawat Prakobphon
Company Sila Research Co.,Ltd.
*/
#include <reg52.h>
/* Test MCP3208 */
sbit ADCS = P3^2;
sbit DIN = P3^5;
sbit DOUT = P3^4;
sbit CLK = P3^3;
void dmsec(unsigned int count);
void Output_Control(char TempChar);
int Input_Data(void);
void Output_Control(char TempChar)
{
unsigned char Mask = 0x10;
unsigned char Count;
for(Count = 0x00;Count<0x05;Count++)
{
DIN = 0;
if(TempChar&Mask)
{
DIN = 1;
}
CLK = 1;
Mask >>= 0x01;
CLK = 0;
}
}
int Input_Data(void)
{
unsigned char Count;
unsigned int Mask = 0x8000;
unsigned int Result = 0x0000;
CLK = 1;
CLK = 0;
for(Count = 0x00;Count < 0x0D;Count++)
{
if(DOUT)
{
Result |= Mask;
}
CLK = 1;
Mask >>= 0x01;
CLK = 0;
}
Result >>= 0x03;
Result &= 0x0FFF;
return(Result);
}
void main(void)
{
union DualAccess
{
unsigned int By_16;
struct Bytewise
{
unsigned char Lo;
unsigned char Hi;
}By_8;
}ADresult;
ADCS = 1;
P1 = 0x00;
dmsec(1000);
P1 = 0x0FF;
while(1)
{
ADCS = 0;
Output_Control((char)0x18);
ADresult.By_16 = Input_Data();
ADCS = 1;
P1 = ADresult.By_8.Hi;
dmsec(1000);
P1 = ADresult.By_8.Lo;
dmsec(1000);
}
}
void dmsec(unsigned int count)
{
unsigned char i;
while(count)
{
for(i=1;i<=113;i++);
count--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -