执念Richard 发表于 2019-10-20 20:14 stc89c52rc在12M时钟时这个延时是6us,不是4us。 void Delay_hx711_us(void) { _nop_(); _nop_(); } |
|
STC8A是单时钟指令,STC89C52是12时钟,原则是如果主频都是11.0592Mhz,都会快了12倍。重新写STC8A的delay函数。HX711对时钟要求不算严格,可以搞定。 此贴再次说明,MCU不是越快越好,合适的才是对的。MSP430F1xx最高时钟8MHz,TI难道没有能力设计高频的MCU吗?就算时8Mhz还经常处于关闭状态,待机或常规运行常常用在32768hz (ACLK)。 |
|
stc8a8k64s4a12默认内部时钟24M,一个_nop_()不是2us,是0.043us。楼主可以根据原程序的延时时间利用STC-ISP软件的软件延时计算器功能重新写延时函数。下面是本坛连接,有我给坛友的回复,实物验证一次成功。 http://www.51hei.com/bbs/forum.p ... 9330&highlight= |
|
换了STC8之后,所有的延时都会变短,而且并不是单纯的加快了几倍,乱得很 有的指令快了6倍,有的指令快了4.8倍, 89C52大多的指令是6个系统时钟 STC8A大多的指令是1个系统时钟 所以,在很多情况下,STC8A是比89C52快6倍的 但也只是大多情况下是这样而已,有的时候是要快12倍的,所以,这就很让人头痛的 跟外部器件有严格时序要求的,要么你全部增加延时12倍,要么是看编译后的汇编代码慢慢算 最简单的是看别人的代码来改 |
| 阅读HX711资料,对时序要求的部分在新的单片机上改正即可 |