IAP15F2K61S2单片机LED学习

文章讲述了如何通过编程控制LED灯,利用CBA寄存器的二进制操作(&和|运算),设置P2口为特定值以控制LED状态,以及使用延时函数实现LED闪烁效果。

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

查看译码器电路来控制寄存器电路,主要是CBA。

 

LED电路由Y4C,所以对应的CBA十进制为4,转换成2进制为100,所以当我们需要控制LED的时候,要控制CBA为100,即P2口高三位为100,最后P2要达到一个100x xxxx的效果。

我们通过这样一个式子来完成这个操作。

P2=((P2&0x1f)|0x80);

 ‘&’运算的作用是置零。0x1f就是0001 1111,”P2&0x1f“将P2口的高三位置零,使得P2口现在为000x xxxx。

‘|’运算的作用是归1.0x80就是1000 0000,“000x xxxx|1000 0000”将P2口的最高位转化为1,使得P2口成为100x xxxx。

将P2口设置为100x xxxx后就可以对led进行一定的设置。

P2=((P2&0x1f)|0x80);
P0=0xfe; //点亮第一个led灯
P2=P2&0x1f;//关闭U6

led中低电位0为开,1为关,单片机打开时,默认为1。0xfe为1111 1110 ,最后一位为0,即点亮最后一位led,设计完led后关闭寄存器U6 。

#include<IAP15F2K61S2.h>
#include <intrins.h>
void delay200ms();
void main()
{
	while(1)
	{
		P2=((P2&0x1f)|0x80);
		P0=0xe7;        //中间两个led灯闪烁
		P2=P2&0x1f;
		delay200ms();
		P2=((P2&0x1f)|0x80);
		P0=0xff;
		P2=P2&0x1f;
		delay200ms();//led闪烁
	}
}

//延时200ms
void delay200ms()
{
	unsigned char data i, j, k;

	_nop_();
	_nop_();
	i = 9;
	j = 104;
	k = 139;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值