phuilee 发表于 2024-1-12 15:29:29

有没有能兼容STC8H8K64U和STC89C58RD的DS18B20的程序?

有没有能兼容STC8H8K64U和STC89C58RD的DS18B20的程序?

我遇到一问题,我的DS18B20温度传感器的程序,在STC8H8K64U上都能正常运行,在STC89C58RD+上不能运行,采集不到数据!你这边有什么解决方法或能用的测试程序?

乘风飞扬 发表于 2024-1-12 17:40:06

STC8H的指令执行速度比STC89系列快很多。
在STC89上需要修改延时时间。

梁工 发表于 2024-1-12 22:39:17

两个MCU速度差太多了,STC89C58RD+要减小延时,示波器看看时序,只要时序准确,什么MCU都可以读。

xxkj2010 发表于 2024-1-13 19:58:41

本帖最后由 xxkj2010 于 2024-1-13 20:01 编辑

我觉得只能从预编译上去处理兼容问题,类似我以前写的毫秒级延时
不知道行不行
#define XINGHAO12//12--STC12C5A60S2;52--STC89C52;89--AT89S52
void delay_ms(unsigned int t)
{
    unsigned char i, j;
    while(t--)
      {
               
                #if XINGHAO==12
               
                _nop_();//STC12C5A60S2
                i = 11;
                j = 190;
                do
                {
                        while (--j);
                } while (--i);      
               
               
                #elif XINGHAO==52      
               
                _nop_();//STC89C52
                i = 2;
                j = 199;
                do
                {
                        while (--j);
                } while (--i);
               
                #elif XINGHAO==89               
               
                for(i=4;i>0;i--)//AT89S52
                        for(j=113;j>0;j--);

                #endif
      }
                  
}

xxkj2010 发表于 2024-1-13 19:59:55

让单片机自己识别,估计有一定的难度。

phuilee 发表于 2024-1-18 16:09:34

谢谢各位,我觉得在STC8H8K64U的DS18B20的延时程序乘以12,做个判断,就可以兼容STC89C58RD+。要是DS18B20芯片可以做到自适应就更好了,这个温度传感器有改进的余地!!!

phuilee 发表于 2024-1-18 16:12:53

希望各位参与讨论!我的TM1637驱动LED数码管程序,不需要更改,STC8H8K64U和STC89C58RD+都能用。这种芯片很好!兼容性很好!!!!

hadv 发表于 2024-1-20 09:10:26

梁工 发表于 2024-1-12 22:39
两个MCU速度差太多了,STC89C58RD+要减小延时,示波器看看时序,只要时序准确,什么MCU都可以读。 ...

我也想知道怎么使用示波器来看时序,有这方面的实际操作视频吗?

梁工 发表于 2024-1-20 13:03:55

hadv 发表于 2024-1-20 09:10
我也想知道怎么使用示波器来看时序,有这方面的实际操作视频吗?

示波器有扫描速度,有时间刻度,看时间参数即可。

hadv 发表于 2024-1-20 14:37:09

梁工 发表于 2024-1-20 13:03
示波器有扫描速度,有时间刻度,看时间参数即可。

好的 谢谢 梁工
页: [1] 2
查看完整版本: 有没有能兼容STC8H8K64U和STC89C58RD的DS18B20的程序?