论坛风格切换切换到宽版
  • 4395阅读
  • 38回复

STC15F104W的怪事 [复制链接]

上一主题 下一主题
在线BG1TRP
 
发帖
18195
只看楼主 倒序阅读 0楼 发表于: 2020-01-17
按手册从程序区读出ID号,应该是7个十六进制数,奇怪的是用循环读要读10次才行,
即 for (i = 0; i < 7; i++) 不行,要 for (i = 0; i < 10; i++) 才行。
山寨版的?晕菜中。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 1楼 发表于: 2020-01-17
他是个7字节的ID,你读10次那就成了10字节的ID。所以一定是你的程序错了。
别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 2楼 发表于: 2020-01-18
回 BG4FQD 的帖子
BG4FQD:他是个7字节的ID,你读10次那就成了10字节的ID。所以一定是你的程序错了。
 (2020-01-17 23:41) 

读7次只得到6位ID。然后逐步增加到读10次才得到14位ID.
同样的程序在STC12系列芯片上就没问题,从手册上看两个系列在ID上没啥区别,所以觉得奇怪。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
在线BG1TRP
发帖
18195
只看该作者 3楼 发表于: 2020-01-18
问题出在编译上?用的是Keil 4,C51代码优化一项用不同的设置结果就不同,同样的代码必须选9才能在读10次后获得正确的ID.
RAM中的ID就没读出来过。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 4楼 发表于: 2020-01-18
keil 是个比较成熟的商业软件,出问题的可能性不大。
7byte的ID,你读10次,逻辑就不对,要看看代码。
有些时候错误是别的行引起的。
如果你能看懂,可以看一下编译出来的汇编是什么样子的。



别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 5楼 发表于: 2020-01-18
读10次确实不对,代码就是手册上的,在STC12系列上完全正常——读7次。
EEPROM的读写也不正常,也是STC12上正常使用的。
换了个芯片还是这样。
汇编看不懂,一直就没学会。
现在除了程序问题外,能怀疑的就是头文件用的是否正确了。
逐步检查+头晕中。。。。。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 6楼 发表于: 2020-01-19
回 BG1TRP 的帖子
BG1TRP:读10次确实不对,代码就是手册上的,在STC12系列上完全正常——读7次。
EEPROM的读写也不正常,也是STC12上正常使用的。
换了个芯片还是这样。
汇编看不懂,一直就没学会。[表情]
现在除了程序问 .. (2020-01-18 22:40) 

考虑一下时序问题。
别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 7楼 发表于: 2020-01-19
for(i = 0; i < 7; i++)
{
    rom_h = *ROM_Addr >> 4;
    rom_l = *ROM_Addr & 0x0F;
    ROM_Addr++;
}
这样也不行,数组rom_h、rom_l里放的不是ID


英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
在线BG1TRP
发帖
18195
只看该作者 8楼 发表于: 2020-01-20
发现第一个问题:STC15F104W这个芯片没有xdata,而程序里设置了一个xdata数组。

改过来后问题还是没有解决,看来还是有不对的地方。

不过这也算看见亮了,北京人讲话:死人放屁——有缓儿。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 9楼 发表于: 2020-01-20
回 BG1TRP 的帖子
BG1TRP:for(i = 0; i < 7; i++)
{
    rom_h = *ROM_Addr >> 4;
    rom_l = *ROM_Addr & 0x0F;
    ROM_Addr++;
....... (2020-01-19 20:08) 

你这个程序是要达到什么需求,为什么要把高低四位拆开?
你这个循环里面的代码是完整的吗?
rom_h,rom_l 反复赋值,逻辑不对。
别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 10楼 发表于: 2020-01-20
回 BG4FQD 的帖子
BG4FQD:你这个程序是要达到什么需求,为什么要把高低四位拆开?
你这个循环里面的代码是完整的吗?
rom_h,rom_l 反复赋值,逻辑不对。 (2020-01-20 12:06)

这是完整的读取ROM区ID的程序,7位16进制的ID显示成14个字符,以对应显示芯片ID。
rom_h、rom_l应为rom_h【i】、rom_l【i】, 不知为啥,论坛把下标给清除了。
正在对比两个系列的特殊寄存器,12的程序直接移植过来不行。网上也有说移植后有问题的。
这15系列的说明和头文件做得不如12系列的详细清楚。或者说是完全给专业人士看的,业余人士看的晕晕乎乎的。




[ 此帖被BG1TRP在2020-01-20 14:08重新编辑 ]
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4UVR
发帖
11207
只看该作者 11楼 发表于: 2020-01-20
rom_h、rom_l、ROM_addr的数据类型对么?
在线BG1TRP
发帖
18195
只看该作者 12楼 发表于: 2020-01-20
回 BG4UVR 的帖子
BG4UVR:rom_h、rom_l、ROM_addr的数据类型对么? (2020-01-20 14:20)

uchar code *ROM_addr
uchar rom_h, rom_l
现在不光是读ID有问题,EEPROM的读写也有问题。这程序在STC12芯片上运行完全正常。
[ 此帖被BG1TRP在2020-01-20 16:40重新编辑 ]
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 13楼 发表于: 2020-01-20
回 BG1TRP 的帖子
BG1TRP:
这是完整的读取ROM区ID的程序,7位16进制的ID显示成14个字符,以对应显示芯片ID。
rom_h、rom_l应为rom_h【i】、rom_l【i】, 不知为啥,论坛把下标给清除了。[表情]
正在对比两个系列的特殊寄存器,12的程序直接移植过来不行。网上也有说移植后有问题的。
这15系列的说明和头文件做得不如12系列的详细清楚。或者说是完全给专业人士看的,业余人士看的晕晕乎乎的。
.......

论坛支持ubb代码,ubb是用中括号标识的。
  1. for(i = 0; i < 7; i++)
  2. {
  3.      rom_h[i] = *ROM_Addr >> 4;
  4.      rom_l[i] = *ROM_Addr & 0x0F;
  5.      ROM_Addr++;
  6. }
代码看着没问题,你看一下rom_addr 对不,记得rom的id 每个型号都不同
别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 14楼 发表于: 2020-01-20
看手册4K的芯片ROM_Addr = 0x0FF9,没写错,要错就是STC错了。

头文件是从STC烧录软件里拷贝出来的。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4FQD
发帖
3406
只看该作者 15楼 发表于: 2020-01-20
头文件可以在 www.stcmcu.com 下载,id在ram里面也有,读读ram的看一下。
别人吃饭我看着,别人睡觉我站着。
在线BG1TRP
发帖
18195
只看该作者 16楼 发表于: 2020-01-20
回 BG4FQD 的帖子
BG4FQD:头文件可以在 www.stcmcu.com 下载,id在ram里面也有,读读ram的看一下。 (2020-01-20 18:34) 

RAM读出来全是0
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
离线BG4UVR
发帖
11207
只看该作者 17楼 发表于: 2020-01-20
rom_h = (uchar)*ROM_Addr >> 4;

这样试试,如果不行我就没办法了
在线BG1TRP
发帖
18195
只看该作者 18楼 发表于: 2020-01-20
回 BG4UVR 的帖子
BG4UVR:rom_h = (uchar)*ROM_Addr >> 4;
这样试试,如果不行我就没办法了[表情] (2020-01-20 19:11)

谢谢,还是不行。
现在循环7次得到8个ID码,也就是说只读出了4个16进制数。如果只读高4位则只有第1个码,只读低4位则有第2、4、6、8位这4个码。高低全读则得到1-8位的码。
[ 此帖被BG1TRP在2020-01-20 19:21重新编辑 ]
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件
在线BG1TRP
发帖
18195
只看该作者 19楼 发表于: 2020-01-20
反复检查,发现EEPROM没有问题,是写入的数据起始值错了,所以读不出来。

继续攻ROM ID的问题。
英文版CW工具箱 TRP-BOX V6 (新版):https://www.hellocq.net/forum/read.php?tid=365349
三合一台咪套件
天线切换器套件