打印
[STC单片机]

请问STC, 这官方示范程序, 你们测试过吗???

[复制链接]
楼主: laoxu
手机看帖
扫描二维码
随时随地手机跟帖
21
laoxu|  楼主 | 2023-3-4 05:33 | 只看该作者 回帖奖励 |倒序浏览
大秦正声 发表于 2023-3-3 20:15
80196没有设计好,是不足之处!

这是英特尔设计的第一款 16位单片机, 肯定有点不足之处, 之后的 8098就设计的非常完善了, 功能强劲. 个人认为, 比后期设计的 8x251都要强大一点.

8x251在功能上, 是 8098的 掩割版, 估计当时英特尔准备将 51做成系列化, 51, 251, 451 ......

只是后来侧重和 IBM , 微软 合作, 主打 PC用的 8086系列, 放弃了 51系列. 由于免费(或许版权低), 引起全世界的仿制热潮~~~

如同现在的 RISC-V 一样火热~~~

使用特权

评论回复
22
laoxu|  楼主 | 2023-3-5 06:27 | 只看该作者
在学习改写 Keil 字符串操作函数库(原型在 STRING.H 中)过程中, 发现原库 memmove 程序, 有一个 bug, 在将 code (或 xdata) 中内容 拷贝到 xdata中, 正向移动没问题, 反向移动时, 没有保护 指针返回的高位地址, 引起返回指针错误.

另外, 在将 code 中内容 拷贝到 xdata中, 程序中对移动地址作了判断, 决定采用正向移动还是反向移动, Keil 这段程序是多余的, 完全没必要, 因为51的CODE 和 XDATA 地址空间, 永远不会重叠, 这判断及反向移动, 我给优化了, 以精简代码提升执行速度.  


MOVE_CODE_XDATA:
/*                      SETB     C                        // Keil 这段程序是多余的, 因为C51的CODE和XDATA地址空间, 永远不会重叠
                      MOV      A,R1
                     SUBB     A,R0
                      MOV      A,R2
                      SUBB     A,R4
                    JNC      MOVE_013  
                      MOV      A,R1
                     ADD      A,R7
                     MOV      DPL,A
                     MOV      A,R2
                     ADDC     A,R3
                     MOV      DPH,A
                      MOV      A,R0
                ADD      A,R7
                      MOV      R0,A
                      MOV      A,R4
                      ADDC     A,R3
                      XCH      A,R4                        // Keil的BUG, 反向传送时, s1指针高位地址未保护, 现已修正
                      MOV      R2,A                        // R4 -->R2
MOVE_010:        INC      DPL
                     DJNZ     DPL,MOVE_011
                     DEC      DPH
MOVE_011:        DEC      DPL
                      CLR      A
                MOVC     A,@A+DPTR
                      XCH      A,R0
                     XCH      A,DPL
                      XCH      A,R0
                      XCH      A,R4
                     XCH      A,DPH
                      XCH      A,R4
                     INC      DPL
                     DJNZ     DPL,MOVE_012
                    DEC      DPH
MOVE_012:        DEC      DPL
                      MOVX     @DPTR,A
                      XCH      A,R0
                     XCH      A,DPL
                      XCH      A,R0
                      XCH      A,R4
                     XCH      A,DPH
                      XCH      A,R4
                     DJNZ     R7,MOVE_010
                     DJNZ     R6,MOVE_010
                     SJMP     MOVE_END3                    */
MOVE_013:        MOV      DPL,R1
                     MOV      DPH,R2
                      MOV      A,R4
                      MOV      R2,A
MOVE_014:          CLR      A
                     MOVC     A,@A+DPTR



下面为修正后的 memmove 程序, 可挂在 c51项目中编译, 以替代有错误的 memmove 库程序.

MEMMOVE.rar (1.5 KB)


使用特权

评论回复
23
autopccopy| | 2023-3-5 18:54 | 只看该作者
laoxu 发表于 2023-3-3 12:56
本例中, 从ROM中 拷贝数据 到 XRAM中, 都拷贝成全 FF 了, 还正常???

你问酷哥就问对人了。另记得多年前LZ还推荐LS2051, 可惜已经倒闭了。:)

使用特权

评论回复
24
laoxu|  楼主 | 2023-3-5 20:56 | 只看该作者
从编程使用角度上讲, 我认为 摩托罗拉的 68000, 强于 英特尔的 8086,

8位机 6800(6502), 强于 8080(8051) ,

而现实, 你也看到, 英特尔的 8086, 完胜 摩托罗拉的 68000,(得益于 英特尔, IBM, 微软三方联手主推 PC机 )

而 68000系, 原先高端服务器市场还拥有一席之地, 现在搞不清楚了.

连 英特尔 抛弃 的 8051, 曾经 主宰 8位机市场, 至今仍有市场,  而 6800(6502)系, 摩托罗拉精简到HC05(08), 市场却越来越少.

最后摩托罗拉ic事业部破产了? 还是怎么啦, 未作深究, 反正是划出去了(现飞思卡尔), 6800(6502)系, 继承最好的, 就是 STM8了.

曾经, AVR 风靡全球, 现在公司都卖了

其他: 8080(z80), 基本上日产的都是该系, 比如 H8系
      PIC系 就比较多了, 主要集中在台系 和 大陆.

使用特权

评论回复
25
laoxu|  楼主 | 2023-3-5 21:21 | 只看该作者
51系, 曾经 主宰 8位机市场, 被 PIC系, STM8 瓜分, 现在, 又被 M0,  RISC-V 瓜分, 随着技术的进步, 工艺的改进, 芯片制造成本越来越低, 很多8位机, 被 16位机, 低挡 32位机所取代.

随着 RISC-V强势切入, 据说 APT32F1023B 24MHz 12位ADC  0.85元/PCS (使用 RV32I指令集), 相信当 RV16I指令集规范成熟后, 使用 RV16I指令集的 MPU成本更低, 售价更吸引眼球, 未来,  RISC-V , MO 替代 51系 中高端市场, 可能性极大.

使用特权

评论回复
26
henangongda123| | 2023-3-8 12:40 | 只看该作者
STC反正我现在不敢用,复杂一点的案子,上次被坑死了,耽误事,我很奇怪,为什么他们芯片有问题有好多人不让说?草 这什么强盗逻辑?!

使用特权

评论回复
27
大秦正声| | 2023-3-8 18:52 | 只看该作者
51依然存在的!

使用特权

评论回复
28
大秦正声| | 2023-3-8 18:56 | 只看该作者
stc 51发现的问题 是串口发送需要中断里清除ti等状态。

使用特权

评论回复
29
大秦正声| | 2023-3-8 18:59 | 只看该作者
去年才接触stc芯片,可以仿真大部分硬件。

使用特权

评论回复
30
大秦正声| | 2023-3-8 19:00 | 只看该作者
就是没有c8051f工具强悍。

使用特权

评论回复
31
大秦正声| | 2023-3-8 19:02 | 只看该作者
数据处理速度比不上m3

使用特权

评论回复
32
zhxzhxzzhhxx| | 2023-3-9 20:53 | 只看该作者
henangongda123 发表于 2023-3-8 12:40
STC反正我现在不敢用,复杂一点的案子,上次被坑死了,耽误事,我很奇怪,为什么他们芯片有问题有好多人不 ...

不是不让说,是很多都是使用者自己的问题,用好51要有一定功底的,靠库培养起来的工程师没这个能力.

使用特权

评论回复
评论
gx_huang 2023-3-10 15:49 回复TA
说得好! 
33
zhxzhxzzhhxx| | 2023-3-9 20:53 | 只看该作者
大秦正声 发表于 2023-3-8 18:56
stc 51发现的问题 是串口发送需要中断里清除ti等状态。

不用,你没有玩明白

使用特权

评论回复
34
laoxu|  楼主 | 2023-3-10 09:27 | 只看该作者
言归正传!!!

  经过多次更改程序(使用 DPTR0 和 DPTR1 的不同排列组合 及 前后次序) 测试, 得出以下结论.

1, STC的双 DPTR指针, 支持 XRAM 读入/写入, 完全正确, 工作正常.

2, STC的双 DPTR指针, 第一指针 DPTR0 支持 CODE 读入, 完全正确, 工作正常.
    第二指针 DPTR1 完全不支持 CODE 读入, 一执行就玩蛋, 用 STC8H USB口仿真的直接死机(或数十秒才能退出),
    用 STC8H 232口仿真的能退出, 但执行结果错误.

3, 最终结论是 STC的双 DPTR指针, 第二指针 DPTR1 完全不支持 CODE,

4, STC8H USB口仿真, 性能比 用 232口仿真的 差很多, 直观上看, 下载程序, 执行单步等, 用USB口仿真 比 用 232口 速度慢 2-3倍(估算),

   执行到非法操作(比如前面提到的, 用 DPTR1读 ROM) , 可能死机退不出, 但用 232口仿真的, 能够正常退出.  

使用特权

评论回复
35
资深技术| | 2023-3-10 09:44 | 只看该作者
看完这个帖子后感觉STC应该对提出的问题从技术角度给予负责任的回复。一个新产品是否出现了问题需要经过测试得出结论,假如真有问题后续改进工作要跟上,这样的企业才能发展强大。

使用特权

评论回复
36
ys8081| | 2023-3-10 15:33 | 只看该作者
资深技术 发表于 2023-3-10 09:44
看完这个帖子后感觉STC应该对提出的问题从技术角度给予负责任的回复。一个新产品是否出现了问题需要经过测 ...

有技术问题STC肯定会协助解决,电话解决不了的他们可以建群一对一服务

使用特权

评论回复
37
大秦正声| | 2023-3-11 15:31 | 只看该作者
laoxu 发表于 2023-3-5 21:21
51系, 曾经 主宰 8位机市场, 被 PIC系, STM8 瓜分, 现在, 又被 M0,  RISC-V 瓜分, 随着技术的进步, 工艺的 ...

avr,pic,stm8这些用的越来越少。这其中就是法国香水半导体的开发工具好!m0,m3现在用的多,不过51市场还是不少的!

使用特权

评论回复
38
大秦正声| | 2023-3-11 15:34 | 只看该作者
RISC和arm技术应该一样?没有专利授权费用。

使用特权

评论回复
39
luoleiba| | 2023-3-12 10:15 | 只看该作者
zhxzhxzzhhxx 发表于 2023-3-9 20:53
不是不让说,是很多都是使用者自己的问题,用好51要有一定功底的,靠库培养起来的工程师没这个能力. ...

说得好

使用特权

评论回复
40
STCMCUNT018| | 2023-3-13 16:19 | 只看该作者
STC8H8K64U的双数据指针用汇编语言操作,可以将功能全部发挥出来
===C语言暂时KEIL C51支持不了,就不要管了,
===STC8H同频的速度是普通8051的13.2倍以上,还有DMA、MDU16来减轻CPU压力,估计快20倍以上
===主频能到45MHz, 不是传统的12MHz/24MHz

一,STC8H8K64U不用仿真功能,直接裸机运行时
1, 对 XRAM 读出/写入, STC8H8K64U的 双DPTR指针[DPTR0,DPTR1], 完全正确, 工作正常.
2, 对程序区的 CODE 读出, STC8H8K64U的 双DPTR指针[DPTR0,DPTR1], 完全正确, 工作正常.

二,STC8H8K64U用仿真功能时
1, 对 XRAM 读出/写入, STC8H8K64U的 双DPTR指针[DPTR0,DPTR1], 完全正确, 工作正常.

2, 对程序区的 CODE 读出, STC8H8K64U的双 DPTR指针[DPTR0,DPTR1], 访问code程序区
===第一指针 DPTR0 支持对 CODE 读出, 完全正确, 工作正常.
===第二指针 DPTR1 不支持对 CODE 读出,仿真系统没考量到这,请仿真时注意,后续会改进

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则