51单片机入门2--让一切从点灯开始
从今天开始,我们将进入真正的学习阶段,要写一个程序,我们就要打开我们的keil,接下来告诉大家如何创建一个工程(我们使用的版本可能不同,但其实都是一样的)
点击工程(就是project),点击new,新建一个工程
把这个工程存到你想放置的位置
保存完之后,弹出下面这个窗口,我们要选择Atmel,并且在其中找到AT89C51,点击OK
接下来会弹出一个窗口,我们选是(将启动文件添加到工程),没有弹出就不用管了
新建一个文件,将它保存,并且将后缀改为C语言的.c后缀
保存之后我们需要将这个c文件加入到该工程中,我们双击source group,找到并将我们新创建的c文件添加到工程中,点击add,然后关闭该窗口
接下来我们点击这里(以后就叫魔术棒了),打开output选项卡,把其中create hex file复选框选中,点击OK
这样,我们就创建了一个工程,接下来开始编程吧
1 #include2 3 typedef unsigned int uint16_t; 4 typedef unsigned char uint8_t; 5 6 sbit LED=P0^0; 7 8 void main(void) 9 { 10 LED=1; 11 }
这就是我们点亮一个LED灯的程序,非常短,但是还是需要进行解释的
第一行是文件包含,其中的reg51.h头文件中已经为我们做好了准备工作,包括寄存器的映射,特殊功能位定义等
接下来是比较常规的一个操作,在点灯中咱们没有用到,但是在之后我们会用到,对我们使用的变量进行类型定义,在单片机中我们常使用无符号的数据类型,这样定义我们可以直观的看出数据的位数,并且这个新的名字可以延续到之后的32,和之前你们编译器上的C语言不同,这里的整形int是16位的,就是说是两个字节的,无符号最大值为65536,大家在之后进行运算的时候要多注意,不要超了范围,无符号的字符型还是1个字节8位,这个和之前的习惯是一样的,我也就不多赘述了
接下来是51单片机中与众不同的一点,sbit,但是在将这个之前我想先说一下bit,在51单片机中是可以定义位变量的,也就是可以bit i,这样子,这样我们就定义好了一个位变量,位变量只有一位,所以只能是0或者是1,接下来我们就可以说sbit了,sbit比bit多了一个s,叫做特殊功能位定义,也就是说这样的变量是有特殊功能的,是什么功能呢,是它能够成为单片机io口在程序中的载体,我们想要对某个io口进行输出或者输入操作,就可以使用这个变量来实现,那么什么是io口呢,就是单片机上你能看到的那突出来引脚,51的头文件已经帮我们准备好了所有的东西,我们只需要进行上述例子中:sbit LED=P0^0;我们就可以对P0的第一个引脚进行操作了,我们可以给他赋值,赋值为1就是io口输出高电平,赋值为0就是io口输出低电平,是不是很简单,我们也可以查看LED的值来检测外界的输入,这些我在之后都会说到的,具体为什么P0^0就是P0的0引脚,为什么P0就对应着单片机的P0,这个我在更完51,更32的时候说到,大家有兴趣可以自己去看一下头文件
这就是今天的全部内容,点灯很简单的,其实不只是点灯,别的你只要理解了,也都很简单,都是io口0或1的变化,坚持下去是最重要的