找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

请教STC8A8K64D4单片机ADC_DMA 串口1返回程序

2023-12-26 15:33 来自 jianjun 发布 @ 综合讨论

#include "stc8a8k64d4.h"
#include "STOUT.H"

/*************        本地常量声明        **************/

#define MAIN_Fosc 24000000L        //定义主时钟

#define        ADC_SPEED        15                        /* 0~15, ADC转换时间(CPU时钟数) = (n+1)*32  ADCCFG */
#define        RES_FMT                (1<<5)        /* ADC结果格式 0: 左对齐, ADC_RES: D11 D10 D9 D8 D7 D6 D5 D4, ADC_RESL: D3 D2 D1 D0 0 0 0 0 */
                          /* ADCCFG     1: 右对齐, ADC_RES: 0 0 0 0 D11 D10 D9 D8, ADC_RESL: D7 D6 D5 D4 D3 D2 D1 D0 */

#define        ADC_CH                16                        /* 1~16, ADC转换通道数, 需同步修改 BMM_ADC_CHSW 转换通道 */
#define        ADC_DATA        12                        /* 6~n, 每个通道ADC转换数据总数, 2*转换次数+4, 需同步修改 BMM_ADC_CFG2 转换次数 */
#define        BMM_ADDR        0x800                /* BMM数据存放地址 */

/*************        本地变量声明        **************/

bit        BmmFlag;

u8 xdata BmmBuffer[ADC_CH][ADC_DATA] _at_ BMM_ADDR;

/*************        本地函数声明        **************/
u16                Get_ADC12bitResult(u8 channel);
void        delay_ms(u8 ms);
void        ADC_convert(u8 chn);        //chn=0~7对应P1.0~P1.7, chn=8~14对应P0.0~P0.6, chn=15对应BandGap电压
void        BMM_Config(void);

/**********************************************/
void main(void)
{
        u8        i,n;

        P0M1 = 0x7f;   P0M0 = 0x00;   //设置要做ADC的IO做高阻输入
        P1M1 = 0xff;   P1M0 = 0x00;   //设置要做ADC的IO做高阻输入

       
        ADC_CONTR = 0x80 + 0;        //ADC on + channel
        ADCCFG = RES_FMT + ADC_SPEED;

        UartStdOutInit();
        BMM_Config();
        EA = 1;

//        while (1)
//        {
                delay_ms(200);
                if(BmmFlag)
                {
                        BmmFlag = 0;
                        for(i=0; i<ADC_CH; i++)
                        {
                                for(n=0; n<ADC_DATA; n++)
                                {
                                        printf("0x%02bx ",BmmBuffer[n]);
                                }
                                printf("\r\n");
                        }
                        printf("\r\n");
                        BMM_ADC_CR = 0xc0;                //bit7 1:Enable ADC_BMM, bit6 1:Start ADC_BMM
                }
                while (1);
//        }
}


  • 最近查阅:

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-17 02:06 , Processed in 0.074233 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部