一 主要涉及到的知识点:
这里主要的知识点是,<<,这里是将P2端口进行宏定义, 然后通过循环进行点亮, 因为点亮需要低电平0, 这里是将0x01左移i位,然后取反得到一个十六进制, 比如循环第一次是0x01左移i位, i此时是0 所以左移0位, 然后取反,0x01取反是0xfe;
二 代码分析:
进入while循环后,再进入for循环里, 然后进行左移,每次左移i 位,实现流水灯
三 源代码:
//4-LED流水灯实验-通过左移实现
#include "reg52.h"
//定义系统数据类型重定义
typedef unsigned char u8;
typedef unsigned int u16;
//通过宏定义LED的P2端口
#define LED_PORT P2
//微秒延时函数定义
void dalay_us(u16 time_num_us)
{
while(time_num_us--);
}
//毫秒延时函数定义
void dalay_ms(u16 time_num_ms)
{
u8 i = 0;
u8 j = 0;
for(i = 0; i < time_num_ms; i++)
for(j = 101; j > 0; j--);
}
//主函数
int main()
{
//定义一个变量
u8 i = 0;
//通过左移实现流水灯
while(1)
{
for(i = 0; i < 8; i++)
{
LED_PORT = ~(0x01<<i); //左移实现点亮
dalay_us(50000); //延时
}
}
return 0;
}