记录自己学习51单片机的过程,主要是一些顿悟,碎语较多不成篇幅。
一些符号和术语
PXX的含义
其中P2代表P2寄存器,P20代表该寄存器的第零位,P21代表第一位,以此类推。
所以可以写出如下代码使得P2接口的0号位处于低电位状态即亮起状态(LED灯是二极管,只有一头为高一头为低时才会通过电流,初始状态时都为高,所以没有电流通过也就都不会亮):
#include<REGX52.h>
int main(){
P2 = 0xFE; //1111 1110
while(1)
{
}
return 0;
}
如果想让LED模块依次亮起(流水灯),那么就可以写出以下代码:
#include <REGX52.H>
#include <stdio.h>
void Delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++) {
}
}
}
int main()
{
int codes[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
int len = 8;
int curIndex = 0;
P2 = codes[curIndex];
// 1111 1111 FF
// 1111 1110 FE
// 1111 1101 FD
// 1111 1011 FB
// 1111 0111 F7
// 1110 1111 EF
// 1101 1111 DF
// 1011 1111 BF
// 0111 1111 7F
while (1)
{
Delay_ms(100);
curIndex = (curIndex + 1) % len;
P2 = codes[curIndex];
}
return 0;
}