打印

keil仿真的时候,P口下面还有一行是什么?(有图)

[复制链接]
3404|17
手机看帖
扫描二维码
随时随地手机跟帖
沙发
473009| | 2007-8-16 16:27 | 只看该作者

晕,引脚呀

使用特权

评论回复
板凳
wjy1107| | 2007-8-16 16:32 | 只看该作者

狂晕

使用特权

评论回复
地板
ayl439| | 2007-8-16 17:24 | 只看该作者

Pins

......

使用特权

评论回复
5
dqstar|  楼主 | 2007-8-16 17:47 | 只看该作者

那上下两行有什么不同?

使用特权

评论回复
6
joson| | 2007-8-16 18:11 | 只看该作者

呵呵,晕倒了!

使用特权

评论回复
7
dqstar|  楼主 | 2007-8-16 18:23 | 只看该作者

别都晕倒啊,倒是说说看

使用特权

评论回复
8
ayl439| | 2007-8-16 18:24 | 只看该作者

这个。我也搞不清楚,也来顺便问下谁明白

我遇到的情况 上下两行都是一样的 没有遇到过不一样的
可能是我用的少把
有高手可以解释下吗?

使用特权

评论回复
9
zgl7903| | 2007-8-16 18:52 | 只看该作者

上面是寄存器;下面是引脚,比如要模拟一个外部中断输入

那就点一下下面的管脚信号,相当于物理连接的信号

使用特权

评论回复
10
ayl439| | 2007-8-16 19:12 | 只看该作者

51的寄存器的值和引脚的状态是否始终一致?

如题

使用特权

评论回复
11
maychang| | 2007-8-16 19:18 | 只看该作者

不是

51的寄存器的值和引脚的状态很可能不一致。

 

使用特权

评论回复
12
ayl439| | 2007-8-16 19:40 | 只看该作者

哦~maychang大侠可以详细点说吗?

哪种情况下会发生不一致的情况那?

使用特权

评论回复
13
maychang| | 2007-8-16 19:45 | 只看该作者

回楼上

当51的某端口作为输入时,datasheet里面告诉我们,先向端口写全1。如果引脚输入低电平,显然寄存器为1,引脚为0。

使用特权

评论回复
14
ayl439| | 2007-8-16 20:00 | 只看该作者

正中要害!

我对这个是有过疑惑的,但是一直没自己测试下。
引脚是低电平的时候在Debug里面看的很清楚的
汗自己一下--!

使用特权

评论回复
15
毅恒| | 2007-8-16 20:00 | 只看该作者

感谢

又学到一点,非常感谢!

使用特权

评论回复
16
dqstar|  楼主 | 2007-8-16 20:41 | 只看该作者

9楼正中要害!

谢谢zgl7903

使用特权

评论回复
17
dqstar|  楼主 | 2007-8-16 20:53 | 只看该作者

大家看一下下面的一个简单程序

#pragma
//#include<at89x51.h>
#include<reg51.h>
#include<stdio.h>
sbit v_input=P0^0;

unsigned char time,vol,n;
unsigned int total;
void int_t0(void) interrupt 1
{
    TL0=24;TH0=0xfb;
    if(v_input)
    {
        v_input=0;
        v_input=1;
        printf("OK");
    }
}

void main(void)
{
SCON=0X50;
TMOD|=0X20;
TH1=0XF3;
TR1=1;
TI=1;
TR0=1;
ET0=1;
EA=1;
while(1)
{
}
}



仿真表明定时器0的中断服务程序中,
    if(v_input)
    {
        v_input=0;
        v_input=1;
        printf("OK");
    }

if语句后面的复合语句只能在第一次进入中断时能执行
以后再进入中断,就不能执行了
查看P0口,上下两行不一致

谁分析下!

使用特权

评论回复
18
qingqiu647| | 2007-8-17 10:20 | 只看该作者

13楼maychang已经说了

在读P00时,先向端口写入1,再读状态

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

34

帖子

1

粉丝