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和这个有关。不知道这是什么原因?怎么解决呢? .... 肯定有差异啊。最近的两个起码差了一个时钟 顺便问下 你关狗没, 不然 fail 不是没有道理的 你好:
狗是禁止了的。
我刚好要设计新系统,是不是要用锁存器来解决这个问题? 楼主把汇编后的CODE发上来看一下,这样看不出来问题的 你好:
是这个函数:
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: } 凌乱了。。。
为啥和最初的顺序不一样呢,是P1243这样的吗,你楼主位的可是P1234的顺序 呵呵,一开始是为了说明问题。我的六楼是实际的代码。
反正就是,p1,p2,p3,p4不管哪个顺序排下来,后一个端口总比前一个端口慢250ns。 您这不是废话么。。。。两条指令之间不用时间的啊?{:lol:} {:lol:}
不是并行执行的 如果我用这个代码:
P1=0;
P2=0;
P3=0;
wr=0;
wr=1;
就是希望wr上升的时候,采集数据到从设备。
由于有时间差,采集到的可能不是我赋的值。
用FPGA 用FPGA
页:
[1]