jwd 发表于 2023-3-27 20:39:52

请问STC8A8K64D4的内部1.19V的地址是多少?

本帖最后由 jwd 于 2023-3-27 20:42 编辑

如题,我看手册上面有2个不同的地址,最新的手册


file:///C:\Users\jwd\AppData\Roaming\Tencent\Users\315915734\TIM\WinTemp\RichOle\L%Y72UY(BP(DCN4BIH5OIGE.pngfile:///C:\Users\jwd\AppData\Roaming\Tencent\Users\315915734\TIM\WinTemp\RichOle\C{ROO]LQ{%`A~L22GU{9__L.png

神农鼎 发表于 2023-3-27 21:50:15










jwd 发表于 2023-3-28 09:23:41

神农鼎 发表于 2023-3-27 21:50


我实际测试是0xfdf7才对,测试代码
//----------------------------------------------
//需要使能“在程序区的结束处添加重要测试参数”选项
//----------------------------------------------

#include "reg51.h"
#include "intrins.h"

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

sfr        AUXR        =        0x8e;
sfr        P_SW2        =        0xba;

bit        busy;
int        *BGV;

void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 180;
        j = 73;
        do
        {
                while (--j);
        } while (--i);
}

void UartIsr() interrupt 4
{
        if (TI)
        {
                TI = 0;
                busy = 0;
        }
        if (RI)
        {
                RI = 0;
        }
}

void UartInit()
{
        SCON = 0x50;
        TMOD = 0x00;
        TL1 = BRT;
        TH1 = BRT >> 8;
        TR1 = 1;
        AUXR = 0x40;
        busy = 0;
}

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

void main()
{
        BGV = (int code *)0xfdf7;        // STC8A8K64S4A10
//        BGV = (int code *)0xeff7;        // STC8A8K60S4A10
//        BGV = (int code *)0x7ff7;        // STC8A8K32S4A10
//        BGV = (int code *)0x3ff7;        // STC8A8K16S4A10
        UartInit();
        ES = 1;
        EA = 1;
        P_SW2=0x80;
       
        while (1)
        {
                Delay100ms();
                UartSend(*BGV >> 8);        //读取Bandgap电压的高字节
                UartSend(*BGV);        //读取Bandgap电压的低字节
                       
        }





}




32位8051 发表于 2023-3-28 10:23:21

本帖最后由 STC32位8051芯片 于 2023-3-28 10:27 编辑

可以用STC-ISP软件里面的范例程序试试呢


jwd 发表于 2023-3-28 10:55:25

STC32位8051芯片 发表于 2023-3-28 10:23
可以用STC-ISP软件里面的范例程序试试呢

我就是用那个测试的

神农鼎 发表于 2023-3-28 11:21:13

用我的建议 CHIPID读,后续有 CHIPID的会过渡到只能从CHIPID读
===大家尽量以我回答的为第一优先测试

jwd 发表于 2023-3-29 11:02:01

本帖最后由 jwd 于 2023-3-29 11:03 编辑

神农鼎 发表于 2023-3-28 11:21
用我的建议 CHIPID读,后续有 CHIPID的会过渡到只能从CHIPID读
===大家尽量以我回答的为第一优先测试 ...我使用CHIPID地址读出来的不对,我用打狗棒的CHIPID地址读出来的对
#include "STC8A8K64D4.h"
#include "intrins.h"
#include "stdio.h"



#define        FOSC        24000000UL
#define        BRT        (65536 - FOSC / 57600 / 4)

#define VREFH_ADDRCHIPID7
#define VREFL_ADDRCHIPID8
int        BGV;

void ADCInit()
{
        P_SW2 |=0x80;
        ADCTIM=0x3f;
        P_SW2 &=0x7f;

        ADCCFG=0x2f;
        ADC_CONTR=0x8f;
}

int ADCRead()
{
        int res;
        ADC_CONTR |= 0x40;                      //启动AD转换
        _nop_();
        _nop_();
        while (!(ADC_CONTR & 0x20));            //查询ADC完成标志               
        ADC_CONTR &= ~0x20;                     //清完成标志   
           res=(ADC_RES<<8) | ADC_RESL;
           return res;

}

void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 180;
        j = 73;
        do
        {
                while (--j);
        } while (--i);
}

void UartIsr() interrupt 4
{
        if (TI)
        {
                TI = 0;
//                busy = 0;
        }
        if (RI)
        {
                RI = 0;
        }
}

void UartInit()
{
        SCON = 0x50;
        TMOD = 0x00;
        TL1 = BRT;
        TH1 = BRT >> 8;
        TR1 = 1;
        AUXR = 0x40;
//        busy = 0;
}



char putchar(char c)
{
    SBUF = c;
    while (TI == 0);
    TI = 0;
    return c;
}

int res,i,vcc;
void main()
{
        BGV = (VREFH_ADDR<<8)+VREFL_ADDR;
//        BGV = (int idata *)0xef;
//        BGV = (int code *)0xfdf7;        // STC8A8K64S4A10
//        BGV = (int code *)0xeff7;        // STC8A8K60S4A10
//        BGV = (int code *)0x7ff7;        // STC8A8K32S4A10
//        BGV = (int code *)0x3ff7;        // STC8A8K16S4A10
        UartInit();
        ADCInit();
        ES = 1;
        EA = 1;
//        P_SW2=0x80;
       
        while (1)
        {

                Delay100ms();
               ADCRead();
                ADCRead();
                res=0;
                for(i=0;i<8;i++)
                {
                        res+=ADCRead();
       
                }
                res>>=3;
                vcc=(int)(4096L*BGV/res);
                printf("基准电压是:%d    ",BGV);
          printf("电源电压是:%d\n",vcc);        //读取vcc电压的高字节                       
                               
        }
}

jwd 发表于 2023-3-29 11:06:38

另外,请问,是不是所有stc的BGV都对应CHIPID7,8

32位8051 发表于 2023-3-29 11:39:59

jwd 发表于 2023-3-29 11:06
另外,请问,是不是所有stc的BGV都对应CHIPID7,8

目前有CHIPID的型号的BGV都对应CHIPID7,8

jwd 发表于 2023-3-29 13:40:17

本帖最后由 jwd 于 2023-3-29 14:23 编辑

STC32位8051芯片 发表于 2023-3-29 11:39
目前有CHIPID的型号的BGV都对应CHIPID7,8
请问,我上面用chipid读的程序有什么问题吗?
页: [1] 2
查看完整版本: 请问STC8A8K64D4的内部1.19V的地址是多少?