一、前言
这个和前面的LED闪烁是连在一起的。
二、代码思路
我们通过代码的端口的正负极就行
我们能想到一种不是很方便的代码实现这个
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0x7F;//01111111
Delay500ms();
P2=0xBF;//10111111
Delay500ms();
P2=0xDF;//11011111
Delay500ms();
P2=0xEF;//11101111
Delay500ms();
P2=0xF7;//11110111
Delay500ms();
P2=0xFB;//11111011
Delay500ms();
P2=0xFD;//11111101
Delay500ms();
P2=0xFE;//11111110
Delay500ms();
}
}
接下来我们用一种更方便的方法实现
#include <REGX52.H>
#include <INTRINS.H>
#define N 200
void Delay1ms(unsigned int xms) //@12.000MHz
{
while(xms)
{
unsigned char data i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms-=1;
}
}
void main()
{
while(1)
{
P2=0x7F;//01111111
Delay1ms(N);
P2=0xBF;//10111111
Delay1ms(N);
P2=0xDF;//11011111
Delay1ms(N);
P2=0xEF;//11101111
Delay1ms(N);
P2=0xF7;//11110111
Delay1ms(N);
P2=0xFB;//11111011
Delay1ms(N);
P2=0xFD;//11111101
Delay1ms(N);
P2=0xFE;//11111110
Delay1ms(N);
}
}
三、单片机中变量的大小与范围
这个和我们32位平台学习的变量有些许不同
四、对于代码的说明
4.1为什么后面的方法更好?
首先后面的方法更方便,然后写法很巧妙, 我们将1ms的延迟延迟我们需要的倍数就能达到我们的目的
五、结语
希望大家指出不足