a20084666 发表于 2013-9-4 23:12:11

牛逼的 奇怪的STC12C单片机

本帖最后由 a20084666 于 2013-9-5 16:26 编辑

用过stc12c5620AD系列单片机的来说说看,这个单片机速度还是蛮快的,曾经我把vcc和gnd接错了,片子烧的那叫一个热,后来我试着下载程序,ok没问题,运行居然也没问题my god太不可思议了。   

下面的图是关于IO口的说明,我在读取IO口数据时发现要延时400微妙才能读到正确的数字(不是说只有延时1到2个空操作的么,为啥要那么多才行),很是纠结,很是纳闷,上面说,不是说可以加上啦电阻么,,为啥我用了10K还是不行,




a20084666 发表于 2013-9-4 23:12:37

自己顶起   哈哈

hhxb 发表于 2013-9-4 23:18:03

我在读取IO口数据时发现要延时400微妙才能读到正确的数字(不是说只有延时1到2个空操作的么,为啥要那么多才行)

我觉得不可能,STC不至于两个电平都读不对

xou822 发表于 2013-9-5 08:42:55

额看来我可以试试我的STC12C2052AD是不是还能用哦。。。上次把IO口接电了
也是烧得非烫

a20084666 发表于 2013-9-5 09:07:49

xou822 发表于 2013-9-5 08:42 static/image/common/back.gif
额看来我可以试试我的STC12C2052AD是不是还能用哦。。。上次把IO口接电了
也是烧得非烫 ...

赶紧去试试吧    估计能用哦

a20084666 发表于 2013-9-5 09:09:02

hhxb 发表于 2013-9-4 23:18 static/image/common/back.gif
我在读取IO口数据时发现要延时400微妙才能读到正确的数字(不是说只有延时1到2个空操作的么,为啥要那么多 ...

也不知道是IO设置的原因,还是啥反正延时后就能读正确的数字

rantingting 发表于 2013-9-5 09:14:30

很有可能是烧坏了,局部功能随坏,经常遇到类似情况,你可以看看总电流是不是偏大

noneno 发表于 2013-9-5 10:57:37

读IO之前没有将管脚置1吧,不可能要这么长时间的。要不就是管脚没配置好

zbn2010 发表于 2013-9-5 13:15:10

用万用表二极管档测一下,vcc之外的其它引脚都对vcc有一个保护二极管。也就是说反接的话电源会通过内部二极管导通起到反接保护作用,当然如果电源比较强劲这个二极管也会抗不住了。

a20084666 发表于 2013-9-5 15:54:16

noneno 发表于 2013-9-5 10:57 static/image/common/back.gif
读IO之前没有将管脚置1吧,不可能要这么长时间的。要不就是管脚没配置好

真的是没有给管脚置1的原因 谢谢

gzhmcu 发表于 2013-9-5 16:19:28

说句公道话,STC挺好滴{:lol:}

a20084666 发表于 2013-9-5 16:27:33

gzhmcu 发表于 2013-9-5 16:19 static/image/common/back.gif
说句公道话,STC挺好滴

你可知道原因,为啥,纠结了

wgui 发表于 2013-9-5 23:21:17

gzhmcu 发表于 2013-9-5 16:19 static/image/common/back.gif
说句公道话,STC挺好滴

支持、、

catwill 发表于 2013-9-6 09:22:25

如果VCC GND 接反过,还是更换一片再试试吧,也许会有“内伤”

catwill 发表于 2013-9-6 09:23:29

a20084666 发表于 2013-9-5 15:54 static/image/common/back.gif
真的是没有给管脚置1的原因 谢谢

51的准双向 IO 可以理解为: 读取前要准备一下:IO口置1,然后延时一小下。

a20084666 发表于 2013-9-6 09:31:55

catwill 发表于 2013-9-6 09:23 static/image/common/back.gif
51的准双向 IO 可以理解为: 读取前要准备一下:IO口置1,然后延时一小下。 ...

不对我还是得延时400us才能读取数据,很纠结   即使置1也要延时400us

catwill 发表于 2013-9-6 09:38:22

a20084666 发表于 2013-9-6 09:31 static/image/common/back.gif
不对我还是得延时400us才能读取数据,很纠结   即使置1也要延时400us

你换新的芯片了吗?烧过那个也许有内伤呢。

catwill 发表于 2013-9-6 09:52:57

建议你把程序中无关的部分都去掉,只试验,这个功能,应该不需要几行代码的。

a20084666 发表于 2013-9-6 10:17:22

catwill 发表于 2013-9-6 09:52 static/image/common/back.gif
建议你把程序中无关的部分都去掉,只试验,这个功能,应该不需要几行代码的。 ...

我试试看吧,希望能解决问题

ZY_Hong 发表于 2013-9-6 10:47:14

400us应该不至于,我写程序时,要读端口时连续读三次的,没出过问题!

a20084666 发表于 2013-9-6 10:49:54

ZY_Hong 发表于 2013-9-6 10:47 static/image/common/back.gif
400us应该不至于,我写程序时,要读端口时连续读三次的,没出过问题!

不知道是为啥,我是先给164发送数据,然后读164管脚电平

a20084666 发表于 2013-9-6 10:50:32

ZY_Hong 发表于 2013-9-6 10:47 static/image/common/back.gif
400us应该不至于,我写程序时,要读端口时连续读三次的,没出过问题!

哥们用过74hc164没?

ZY_Hong 发表于 2013-9-6 10:55:20

a20084666 发表于 2013-9-6 10:50 static/image/common/back.gif
哥们用过74hc164没?

没用过,不过这种数字芯片用起来都简单的,建议先弄清楚是程序的原因还是外围电路的原因,可以断开外围或者用示波器直接观察引脚电平变化!

a20084666 发表于 2013-9-6 11:02:52

ZY_Hong 发表于 2013-9-6 10:55 static/image/common/back.gif
没用过,不过这种数字芯片用起来都简单的,建议先弄清楚是程序的原因还是外围电路的原因,可以断开外围或 ...

我也想,没用示波器看过引脚。不知道程序一开始是不是立马从主程序开始,还是有个其他内置程序运行,

ZY_Hong 发表于 2013-9-6 11:13:21

a20084666 发表于 2013-9-6 11:02 static/image/common/back.gif
我也想,没用示波器看过引脚。不知道程序一开始是不是立马从主程序开始,还是有个其他内置程序运行, ...

程序开始执行用户程序时是从main()开始的!
至于启动文件什么的没必要了解,与你这个问题也没有关系!
手头有示波器的话直接看波形,要学会查找问题的思路与方法!

d2767 发表于 2013-9-6 16:48:24

gzhmcu 发表于 2013-9-5 16:19 static/image/common/back.gif
说句公道话,STC挺好滴

支持,就是不知道为啥有那么多口水,为啥有人认为如果用stc做产品就山寨,技术要低一等?

unifax001 发表于 2013-9-6 19:43:22

wgui 发表于 2013-9-5 23:21 static/image/common/back.gif
支持、、

支持!!!!!!!!!!!!!!!

reiyawea 发表于 2013-9-6 21:53:00

不知我理解得对不对:
首先,指令为引脚置1,要两个周期后才出现在输出引脚锁存器上,因此至少要等两个周期。
其次,由于IO默认是弱上拉,实际引脚电平的上升时间会比较长,因此还要多等一下。如果设为推挽输出可能会快一些。

jj632856828 发表于 2013-10-7 16:51:21

要不要来个暴力大电流烧毁试验

wildone 发表于 2014-4-12 15:47:42

也有可能IO口烧坏了

caiseyuzhou 发表于 2014-4-13 09:56:47

可能Io坏了吧

huangxiaowei 发表于 2014-4-15 21:15:35

帮忙顶起来!

suniry 发表于 2014-4-17 19:15:29

觉得你这是有什么问题,看一下我这个片段,发送数据给一个IC的,测试过的,没有问题的,那就是说上升时间,或是下降时间都挺快的。
void send_dat(uchar dat)       //高位先传
{
    uchar i;
    for(i=8;i>0;i--)
    {
      if(dat & 0x80)
                        {
                        DIN=1;
                        _nop_();
                        CLK=1;
                        _nop_();
                        CLK=0;
                        }
      else
                        {
                        DIN=0;
                        _nop_();
                        CLK=1;
                        _nop_();
                        CLK=0;
                        }
      dat <<=1;
    }
}
void sendRGB(uchar r,uchar g,uchar b)
{
        send_dat(r);//R
        send_dat(g);//G
        send_dat(b);//B
}
页: [1]
查看完整版本: 牛逼的 奇怪的STC12C单片机