IAP15F2K61S2单片机LED学习教程

查看译码器电路来控制寄存器电路,主要是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.0×80就是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);
}

物联沃分享整理
物联沃-IOTWORD物联网 » IAP15F2K61S2单片机LED学习教程

发表回复