请教,C8051F340单片机读P4口的方法(c语言)。我的方法是与立即数,但这样貌似有不读数不稳定的时候。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教,C8051F340单片机读P4口的方法(c语言)。我的方法是与立即数,但这样貌似有不读数不稳定的时候。相关的知识,希望对你有一定的参考价值。

我自己的方法是将P4口与立即数如下所示,但貌似这样读出来的结果不稳定,导致系统运行有出错的时候。在网上查,没找到C8051芯片的读P4口方法,但找到其他51单片机的,有些说法是不能与立即数,应该与变量,不知道是不是这样。
#define P40_H (P4|=0x01)
#define P44_H (P4|=0x10)
#define P45_H (P4|=0x20)
#define P46_H (P4|=0x40)
#define P40_L (P4&=0xfe)
#define P44_L (P4&=0xef)
#define P45_L (P4&=0xdf)
#define P46_L (P4&=0xbf)
#define P41_L (P4&=0xfd)
#define P40 (P4&0x01)
#define P41 (P4&0x02)
#define P42 (P4&0x04)
#define P43 (P4&0x08)
#define P44 (P4&0x10)
#define P45 (P4&0x20)
#define P46 (P4&0x40)
#define P47 (P4&0x80)

如果要读P4的值,直接读就行了 ,想要读各个端口的状态,通过宏来定义
你上面定义的读P4端口状态,为0的时候读没问题,如果是1 读出的值不都是1,
可以在前面加两个‘!’运算符。如下
#define P40 (!(!(P4&0x01)))
参考技术A 不出现在你的世界打乱你的生活就是做的最对的事

请教高人C51单片机C语言中的中断优先级怎么设置?

如果是同时用到几个中断像T0,T1,外部中断0,串口的,这么多个如果要按指定的优先顺序进行处理中断,只设置IP就可以了吗?具体怎么设置?

C51中设置中断优先级,需要对中断寄存器IP进行配置。具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句:

IP = 06H; // 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断

下面给出IP寄存器中每位(共8位)的含义:
PX0(IP.0),外部中断0优先级设定位;
PT0(IP.1),定时/计数器T0优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)
IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。

ps:IP默认值为00H,此时优先级顺序为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
参考技术A 具体设置看书就知道了,自己解决问题,才能真正掌握。优先级,只有两个优先级,也就是说,如果有多个中断,那只能是有一个是最优先的,其它的按照同等处理。 参考技术B 单片机已经定好了中断优先级,你可以进入中断处理函数的时候关掉总中断 参考技术C http://wenku.baidu.com/view/062f262acfc789eb172dc835.html本回答被提问者采纳

以上是关于请教,C8051F340单片机读P4口的方法(c语言)。我的方法是与立即数,但这样貌似有不读数不稳定的时候。的主要内容,如果未能解决你的问题,请参考以下文章

学习C8051F340单片机中,如何配置P4端口,能否简单写个配置端口的程序?

急!!!!单片机C8051F340的数据总线和地址总线和51单片机一样分别是P0口和P2口吗??

AT89S52单片机p0~p3口的使用有何要求?

c8051f340的pca时钟

STC15单片机I/O口的四种模式以及配置方法

简述单片机串行口的工作方式