⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x3208_1.c

📁 this is source file mcs51 interface with mcp3208 use keil
💻 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 + -