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后问题已解决,
能自己处理问题并及时更新帖子非常好,大家都应该向你学习,再接再厉!
页:
[1]