基于c8051之点亮led灯

本文详细介绍了C8051F020单片机中P4~P7端口的字节寻址特性,探讨了如何通过sfr操作避免位操作导致的干扰,并提供了设置交叉开关、输出方式和控制LED灯的实例。重点讲解了如何仅修改P5口特定位和配置推挽输出,以及使用端口数据寄存器实现精确控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c8051f020有按8位组织的64位数字io引脚,低端口(P0,P1,P2,P3)既可以按位寻址,也可以按字节寻址高端口(P4,P5,P6,P7)只能按字节寻址

例如 sbit LED1 =P0^0;//按位寻址正确

sfr LEDPORT=P0;//按字节寻址正确

sbit LED2=P4^0;//按位寻址不可以所以这种表达错误

sfr LEDPORT=P4;//按字节寻址正确

注意sbit是按位赋值的,sfr是按字节寻址的,所以

  1.     P0~P3都可以用sbit ,sfr.   
  2.     P4~P7只能用sfr 不可以用sbit

这时候就出现一个问题,当我们想操作P4~P7其中某一位的时候,只能一次性改变一位的数据,这样可能导致,其他位数据改变,这时候我们用下面方法

假如我们想把P4口的第3位置1,而不改变其他位,我们可以用

P4 |= 00001000;

假如我们想把P4口的第3位置0,而不改变其他位我们可以用

P4 &=11110111;

下面我们可以知道c8051有的交叉开关(是对于P0-P3) 而我们此次实验用的是P5口则用不到分配交叉开关,那样我们就不用设置交叉开关寄存器XBR

下面我们看一下,端口得输出方式

 

默认我们不设置的话,为漏极开路。 

我们可以看到推挽输出是我们需要得,那么把端口设置为推挽输出呢?下面我们看一下输出方式寄存器

从图中我们可以看出P74OUT的一位是控制代表P4-P7中的高或者低四位的输出方式,加入我们想

P5口设置为推挽输出那么我们可以这样

P74OUT=00001100;  或者P74OUT=0x0c;//设置P5口为推挽输出

此时我们设置好输出方式,那么怎么样让端口输出高电平或者低电平呢?

此时我们需要看一下端口数据寄存器

 如果我们想P5口的第2位为高电平我们可以这样

                                P5=00000100;

   ·                            或者P5=0x04;

端口初始化的总结

                        1.设置交叉开关寄存器XBR(如果用不到就不同设置,P4-P7用不到就不需要设置)

                         2.设置输出方式寄存器

                             

接下来我们来看一下如何让c8051020上点亮led灯的连接图

  经过分析我们看出P5口输出低电平led灯亮,那我们下面来点亮LED29,对应的是P5.7口

下面我们可以看一下代码

 以及实验现象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值