打印

请问有人遇到STC8G1K08 20PIN AD采集错误的问题吗??

[复制链接]
891|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gavin87|  楼主 | 2020-4-17 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序是从STC15W408AS里面移植过来的,里面应用了TIM0,1,2 ,PCA做8位PWM输出功能,用P1.2,P1.5做AD功能进行采集,发现AD5 有问题,AD2正常, 后把AD5变为AD3和AD4,发现也正常,变为AD6就出问题,请问有人遇到过相关问题的吗? 怎么解决问题的! 谢谢!

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2020-4-17 16:59 | 只看该作者
仔细看手册

手册上有好多BUG说明

使用特权

评论回复
板凳
gavin87|  楼主 | 2020-4-20 17:02 | 只看该作者
本帖最后由 gavin87 于 2020-4-20 17:03 编辑

今天做AD测试,P1.2接3V电压,发现会偶尔输出0,其他大部分输出为A8,通过STC-ISP测试!  不知道有不有朋友也遇到过这个问题?? 怎么解决的??#include "reg51.h"
#include "intrins.h"

#define FOSC            11059200UL
#define BRT             (65536 - FOSC / 115200 / 4)

sfr     AUXR        =   0x8e;
sfr     T2H         =   0xd6;
sfr     T2L         =   0xd7;

sfr     ADC_CONTR   =   0xbc;
sfr     ADC_RES     =   0xbd;
sfr     ADC_RESL    =   0xbe;
sfr     ADCCFG      =   0xde;

sfr     P1M0        =   0x92;
sfr     P1M1        =   0x91;

bit busy;
char wptr;
char rptr;
char buffer[16];

void UartIsr() interrupt 4
{
    if (TI)
    {
        TI = 0;
        busy = 0;
    }
    if (RI)
    {
        RI = 0;
        buffer[wptr++] = SBUF;
        wptr &= 0x0f;
    }
}

void UartInit()
{
    SCON = 0x50;
    T2L = BRT;
    T2H = BRT >> 8;
    AUXR = 0x15;
    wptr = 0x00;
    rptr = 0x00;
    busy = 0;
}

void UartSend(char dat)
{
    while (busy);
    busy = 1;
    SBUF = dat;
}

void UartSendStr(char *p)
{
    while (*p)
    {
        UartSend(*p++);
    }
}

void main()
{
        unsigned char num=0;
    UartInit();
           P1M0 = 0x00;                                //设置P1.0为ADC口
    P1M1 = 0x04;
    ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16/16
    ADC_CONTR = 0x80|0x02;                           //使能ADC模块

    ES = 1;
    EA = 1;
    UartSendStr("Uart Test !\r\n");

    while (1)
    {
       ADC_CONTR |= 0x40;                      //启动AD转换
        _nop_();
        _nop_();
        while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
        ADC_CONTR &= ~0x20;                     //清完成标志
        num = ADC_RES;                           //读取ADC结果
        UartSend(num);
    }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

29

帖子

0

粉丝