前言
本文章以B站江科大老师的视频而写,仅作为笔记,以便以后参考
单片机简单程序
1.点亮第一个LED灯
#include <REGX52.H>
void main()
{
//P2 = 1111 1110(D1亮)
//P2 = 0XFE;
//P2 = 1110 1111(D5亮)
//P2 = 0XEF;
//P2 = 0111 1111(D8亮)
//P2 = 0X7F;
//P2 = 0000 0000(全亮)
//P2 = 0X00;
//P2 = 1111 1111(全灭)
//P2 = 0XFF;
while(1) {
}
}
实现了某一个灯的点亮
注意:
在单片机中,1表示暗,0表示亮(与电路板连接方法有关系,具体没深入了解)
2.LED灯闪烁
#include <REGX52.H>
#include <INTRINS.H>
//延迟500毫秒
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1) {
P2 = 0XFE;
Delay500ms();
P2 = 0XFF;
Delay500ms();
}
}
实现了某一个灯的闪烁
3.LED流水灯
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){
P2 = 0XFE;//1111 1110
Delay500ms();
P2 = 0XFD;//1111 1101
Delay500ms();
P2 = 0XFB;//1111 1011
Delay500ms();
P2 = 0XF7;//1111 0111
Delay500ms();
P2 = 0XEF;//1110 1111
Delay500ms();
P2 = 0XDF;//1101 1111
Delay500ms();
P2 = 0XBF;//1011 1111
Delay500ms();
P2 = 0X7F;//0111 1111
Delay500ms();
}
}
实现了LED灯依次闪烁
4.LED流水灯Plus
#include <REGX52.H>
void Delay1ms(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms) {
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms -= 1;
}
}
void main()
{
while(1){
P2 = 0XFE;//1111 1110
Delay1ms(100);
P2 = 0XFD;//1111 1101
Delay1ms(100);
P2 = 0XFB;//1111 1011
Delay1ms(100);
P2 = 0XF7;//1111 0111
Delay1ms(100);
P2 = 0XEF;//1110 1111
Delay1ms(100);
P2 = 0XDF;//1101 1111
Delay1ms(100);
P2 = 0XBF;//1011 1111
Delay1ms(100);
P2 = 0X7F;//0111 1111
}
Delay1ms(500);
}
是第三个小项目的升级版,可以实现输入具体的延迟时长。