网老四 发表于 2024-6-3 14:36:31

STC8H1K28能读到ID号,但BGV电压总是为0问题,是什么原因 | 已解决

使用的ISP软件的范例程序.根据芯片手册把代码里ID地址改为0x6ff9,串口输出正确的芯片ID码,但BGV值一直是0000,不知什么原因?

#include "stc8h.h"
#include "intrins.h"

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


bit busy;
char *ID;

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()
{
    char i;

    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    ID = (char code *)0x6ff9;                   // STC8G1K28
    UartInit();
    ES = 1;
    EA = 1;

    for (i=0; i<9; i++)
    {
      UartSend(ID);
    }

    while (1);
}



仔细研究下,原来是被手册表格误导,惯性思维寄存器表格按照地址从低到高排列,
实际手册里表格地址是由高向低排列的,{:sweat:}
BGV地址比ID地址低,BGV地址修改为0x6ff7后问题已解决,

晓飛飛 发表于 2024-6-4 20:10:30

能自己处理问题并及时更新帖子非常好,大家都应该向你学习,再接再厉!
页: [1]
查看完整版本: STC8H1K28能读到ID号,但BGV电压总是为0问题,是什么原因 | 已解决