1.1 前言
这只是出于个人兴趣所记录的学习笔记,我会边学边记,没有什么很深奥的奇数向干货,只是想作为我学习单片机开发的一个网络日记本。其中可能会记录一些写好的程序或者从开源渠道获取的程序;也会记录一些程序在51单片机上运行的结果;还会记录一些我的个人感受,虽然知道没什么人看,但是请勿喷,感谢。
1.2 目标
作为一个不入流211的准大四,如山的求职压力让我深知摆了三年后找工作是异常艰巨的,因此有了重新学习单片机开发作为一项技能而非一个课程的想法。这次就定个对诸位大佬来说很小很小但对我来说堪称艰巨的目标吧:终极目标为自己攒一台基于51单片机的智能巡线小车。
1.3 第一篇日志的内容:先点亮一个二极管
提到单片机就不得不说流水灯了。所有的单片机学习都是从发光二极管开始的,我也不想免俗,这就上代码吧。
#include <regx52.h>
void main ()
{
P2 = 0XFE;
}
代码很简单,单片机型号是AT89C52,结构也很简单,只有头文件与对P2端口的定义。这里相当于直接定义了P2整个的状态,0XFE是以十六进制表示的八位二进制数,其结果为11111110;分别对应P2下的P2_0到P2_7八个端口的状态。如果乐意,也可以用P2_0=0这样的形式来点亮自己想要的二极管。但是要注意,51是低电平有效,编程的时候要改掉在C中1为有效的习惯。
另外,像 for (i=0;i<8;i++){P2_i=0;}这样的端口描述我尝试过,单片机是不认这样的端口写法的,除非你用define进行宏定义(我不会)。想用数组编写自己的端口正确写法如下:
#include <regx52.h>
#include <intrins.h>
#include <stdio.h>
void delay (unsigned int time) //@12.000MHz
{
unsigned char i, j;
while (time--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main ()
{
char a[8] ={0Xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char i;
while (1)
{ for (i=0;i<8;i++){
P2=a[i];
delay (300);
}
}
}
因为是第一篇,所以懒狗病犯了,就留到下篇再写吧。以上,感谢观看。