51单片机程序开发入门知识
我们的前期步骤就作完了
现在我们开始说说程序部分,在下位机的开发当中,我们使用的是C语言(不是C++,没有类的概念),我们可用的资源也很少,除了基本的C语言语句以外,还可以使用的东西并不多,全部可用的东西全在Keil安装目录的 /C51/INC 里。
我这里面多了一个 STC12C5A60S2.H 文件,这时STC官网上提供的管脚和寄存器地址定义文件,通常我们只需要引用 REG52.H 就可以了。在C语言开发中,用 #Include 就是引用这些头文件,第一步,我们先引用MCU管脚定义文件REG52.H,然后再写上基本的程序入口函数Main,因为单片机只跑这么一个程序,所以主程序中不能让他执行完,必须进入死循环,否则,如果执行完了程序他就不会再工作了。
好了这样就完成了一个基本的单片机程序。但是如何控制单片机的IO口呢?我们先来看一下芯片说明里的管脚定义图:
这是STC DIP40 封装的管脚定义图,我们可以看到一些比较奇怪的说明,什么P0.0-P0.7呀、P1.0-P1.7呀的,这些就是IO端口
通常有4组IO口,P0、P1、P2、P3口,每组IO口有8个管脚,分别代表8个二进制位,而每组IO口除了作基本的输入输出外都有可能有他特殊的用法,这就根据不同型号的单片机而定了。就比如STC的这款单片机,P0口除了可以做基本的输入输出,还可以做A/D转换用,所以他的P0口后面还标有 AD0-AD7 的字样,但这些是后面的应用了,我们先谈谈如何控制或读取这些IO口。
在单片机种,这些IO口的管脚都是由厂家指定的系统功能寄存器控制的,只要知道地址,读取到指定寄存器地址的值就可以得到相对的IO口状态,同理,设置相应的寄存器值,也会改变IO口的状态。因为我们是用C语言,没必要直接用地址,我们可以将如0x80 这种地址以方便记忆的变量来表示,所以,我们看一下 REG52.H 就会发现
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
P0口的地址是 0x80 这个位置,P1口的地址是0x90。我们只需要在程序里用P0 = 255,或 P0=0 就可以改变 P0 口的8个管脚的状态是有电或是没电出去。
但是,如果想单独控制一个针脚的状态怎么做呢?有些朋友可能会想到用二进制位运算就可以了,比如非呀、与亚、或呀、异或呀什么的。
对,这是个方法,但不是很灵活,在这里,还可以进行寻址定义管脚。比如我们只想控制 P0.5 口的状态,那么用二进制计算的方法就有点麻烦了,我们可以这样做
sbitLED1= P0^5; //在这里 ^ 并不是异或运算符,只是特定的寻址符号
这时,程序里如果这样操作
LED1 = 1;
那么P0.5口将处于供电出去的状态
当然,这样操作将会取得P0.5口的当前状态
bit LEDState;
LEDState = LED1;
51单片机程序开发入门知 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)