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);
}