中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機驅動高精度AD芯片ADS1256的C程序

        AVR單片機驅動高精度AD芯片ADS1256的C程序

        作者: 時間:2016-11-30 來源:網絡 收藏

        /*************************************************************************************/
        unsigned long int ads_sum(unsigned char data)//讀A/D數據。
        {
        unsignedlongint aa=0;
        if((data>=0)&&(data<=7))
        {
        ad_write(01,0x80+data); //第幾通道為選通
        ads_senddata(0xf0); //自校準
        aa=ad_read(); //讀24位A/D數據。
        }
        return aa;
        }

        volatile unsigned charsum=0; //定義全局的指令變量

        //設置串口的參數
        void USART_Init( unsigned int baud )
        {
        /* 設置波特率9600*/
        UBRRH = 0;
        UBRRL = 47;
        /* 接收器與發(fā)送器使能*/
        UCSRB = (1</* 設置幀格式: 8 個數據位, 2 個停止位*/
        UCSRC = (1<}

        void USART_Transmit( unsigned char data )
        {PORTD|=(1</* 等待發(fā)送緩沖器為空 */
        while ( !( UCSRA & (1<;
        /* 將數據放入緩沖器,發(fā)送數據 */
        UDR =data;
        }

        unsigned char USART_Receive( void )
        {
        /* 等待接收數據*/
        while ( !(UCSRA & (1<;
        /* 從緩沖器中獲取并返回數據*/
        return UDR;
        }

        SIGNAL (SIG_UART_RECV) //接收中斷
        {sum=UDR;}

        SIGNAL (SIG_UART_TRANS) //發(fā)送結束中斷
        {PORTD&=~(1<
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~配置SPI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        void SPI_MasterInit(void) //配置SPI為主機
        {
        /* 設置MOSI 和SCK 為輸出,其他為輸入 */
        DDRB|=(1<DDRB&=~(1<PORTB|=(1</* 使能SPI 主機模式,設置時鐘速率為fck/16 */
        SPCR = 0x52; //7e 高位首發(fā),SPI使能,主機模式,SCK空閑保持為低電平,數據在上升沿采樣,速率為1:64(FOSC/128)
        SPSR = 0x01; //使能倍速1:32
        }

        //--------------------------------------------------------------------------------------------//

        void port (void)
        {
        DDRD|=(1< PORTD&=~(1< DDRB|=(1< PORTB&=~(1<}


        //主函數
        main(void)
        {
        unsignedlongint d=0,p[12],n=0,m=0;
        unsigned char aa=0,a=0,b=0,c=0,i=0;
        port(); //端口初始化
        SPI_MasterInit(); //SPI端口初始化
        USART_Init(1); //串口初始化
        ADS1256(); //初始化ADS1256
        sei();

        while(1)
        {
        aa=sum;
        if(aa<=10)
        {sum=15;
        a=0;b=0;c=0;n=0x400000;m=0;
        for (i=0;i<12;i++)
        {
        p[i]=ads_sum(aa);//讀A/D數據。通道地址0~7 0、1、2、3、4、5、6、7
        if(n>p[i])
        n=p[i];
        if (m m=p[i];
        d=d+p[i];
        }
        d=(d-n-m)/10;
        a=d%256;
        d=d>>8;
        b=d%256;
        d=d>>8;
        c=d%256;
        USART_Transmit(c);
        USART_Transmit(b);
        USART_Transmit(a);

        }
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區(qū)

        關閉