0810调试

在进行一次标定。

C8051 允许编程修改寄存器的值。
把8个通道都进行标定。。。然后观察返回值。。。

标定前
43 14 1 0 0 0 0 15 44
41 14 80 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6B 42

43 14 8 2 2 1 1 1c 44
41 14 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 05 26 05 26 05 26 05 26 05 26 05 26 14 42

标定第0个
标定第1个
标定第2个通道
标定第3个通道
标定第4个通道
标定第5个通道
标定第6个通道

标定前和标定给 返回值没有区别。。

8051的数据存储空间

片内:
片内RAM和特殊功能寄存器(SFR).
片内RAM分为 工作寄存器区 (00H1FH)
位寻址区(20
2F)
数据缓冲区(30H~7FH)
片外

这是标定的函数,我觉得应该没问题,我也没动。。。。标定完的k、b值应该是存放在flash里面,会不会是和程序占用的flash有冲突呢??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Save_Para(void)
{
uint8 i,j;
EA=0; //????
FLSCL=0x89; //FLASH ?/????(Fosc=18.432MHz) ??FLASH?
PSCTL=0x07; //??FLASH ??FLASH ?/??
FLASH_ADDR[0]=0; //????????????????????????? ??FLASH
for(i=0;i<112;i++) //????FLASH
{
PSCTL=0x00; //????FLASH ??FLASH ?/??
j=Para[i]; //?FLASH??? ?PSWE??
PSCTL=0x05; //??FLASH ???? ???
FLASH_ADDR[i]=j;
}
FLSCL=0x4f; //??FLASH ?/??
PSCTL=0x00; //????FLASH ??FLASH ?/??
EA=1;
}

是计算的问题还是通信的问题

1 我把上行命令里的帧头修改为0x43,但是接受到的帧头还是0x41
可能原因是: keil 激活不正确 我激活是的MDK51
应该激活的是 c51