如何区别那些端口呢?
作为输出如何直接写?能举一个例子么谢谢
比如P0口如果不外接上拉电阻或者连接的器件不带上拉的话,只能作为输入口
输出 P1=0XUU (0XUU可以使任何数)
如果要检测P1.1端口状态时
先P1_1=1;//如果前面已经把P1_1输出为高电平,这个语句就可以省略了
if(P1_1){
//等于1时候的操作
}
else{
//等于0时候的操作
//我想你迷惑的地方是,为什么我明明输出为1了,检测怎么会是0呢
//原因很简单,因为51单片机的高电平维持能力很低,只要外接有一个能力更强的低电平,就可以把端口拉低了,就好像你和一个小孩扳手腕一样,如果你不用力的时候,那么你的手可能是压在他的手下的,如果你一发力,他的手就被你压到底下了
}
对于使用地址的情况,一般都是对于P0与P2的操作
你可以看看单片机关于访问外部数据存储器或程序存储器的相关内容
也就是对应汇编语言的MOVX 与MOVC指令
在汇编里面 一般都是把外部地址先送到DPTR里面,然后执行MOVX或者MOVC指令后,单片机会自动完成一些固定格式的动作,如果是读的话,显示P2与P0组成的16位地址送在总显示,然后P3.7 RD线产生一个低电平,同时将此时P0的状态送到ACC累加器中
拜托把AT89S51各个端口的地址代码复制给我,我现在需要,非常感谢
拜托把AT89S51各个端口的地址代码复制给我,我现在需要,非常感谢
追答P0 = 0x80;
P1 = 0x90;
P2 = 0xA0;
P3 = 0xB0;