xbj456 发表于 2012-9-11 18:12:57

C8051f340的P1-P3口数据不同步

各位朋友,
我的一个系统不正常,我用以下代码测试:
while (1)
{
P1=0;
P2=0;
P3=0;
P4=0;
P1=0XFF;
P2=0XFF;
P3=0XFF;
P4=0XFF;
}
测试发现他们的数据在时间上有差异,最多差750ns(方波的上升沿)。以P1的上升沿为准,P2,P4差距也是250ns和500ns。P3差750ns。
我怀疑我的系统fail和这个有关。不知道这是什么原因?怎么解决呢?

panjun10 发表于 2012-9-11 18:16:31

.... 肯定有差异啊。最近的两个起码差了一个时钟

panjun10 发表于 2012-9-11 18:17:46

顺便问下 你关狗没, 不然 fail 不是没有道理的

xbj456 发表于 2012-9-11 18:38:28

你好:
狗是禁止了的。
我刚好要设计新系统,是不是要用锁存器来解决这个问题?

HELLOWORLD_2012 发表于 2012-9-11 18:51:48

楼主把汇编后的CODE发上来看一下,这样看不出来问题的

xbj456 发表于 2012-9-11 19:05:36

你好:
是这个函数:
    10: void Test()
    11: {
    12:         while (1)
    13:         {
    14:               P1=0;
C:0x3390    E4       CLR      A
C:0x3391    F590   MOV      P1(0x90),A
    15:               DBH=0;
C:0x3393    F5A0   MOV      P2(0xA0),A
    16:               DBL=0;
C:0x3395    F5C7   MOV      P4(0xC7),A
    17:               P3=0;
    18:
C:0x3397    F5B0   MOV      P3(0xB0),A
    19:               P1=0xff;
C:0x3399    7590FF   MOV      P1(0x90),#0xFF
    20:               DBH=0xff;
C:0x339C    75A0FF   MOV      P2(0xA0),#0xFF
    21:               DBL=0xff;
C:0x339F    75C7FF   MOV      P4(0xC7),#0xFF
    22:               P3=0xFF;               
C:0x33A2    75B0FF   MOV      P3(0xB0),#0xFF
    23:         }
    24: }

1a2b3c 发表于 2012-9-11 19:33:24

凌乱了。。。
为啥和最初的顺序不一样呢,是P1243这样的吗,你楼主位的可是P1234的顺序

xbj456 发表于 2012-9-11 19:54:05

呵呵,一开始是为了说明问题。我的六楼是实际的代码。
反正就是,p1,p2,p3,p4不管哪个顺序排下来,后一个端口总比前一个端口慢250ns。

jlhgold 发表于 2012-9-11 20:23:15

您这不是废话么。。。。两条指令之间不用时间的啊?{:lol:}

1a2b3c 发表于 2012-9-11 20:24:47

{:lol:}
不是并行执行的

xbj456 发表于 2012-9-11 20:31:19

如果我用这个代码:
P1=0;
P2=0;
P3=0;

wr=0;
wr=1;
就是希望wr上升的时候,采集数据到从设备。
由于有时间差,采集到的可能不是我赋的值。

chinabn 发表于 2012-9-12 09:00:02

用FPGA 用FPGA
页: [1]
查看完整版本: C8051f340的P1-P3口数据不同步