500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/81/3540261251812802.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
32个I/O口分布如图,单片机每个I/O口占一个小方格,小方格具备存储电荷功能,满电荷的时候,小方格的逻辑电平为1,对应的实际电压是5V,没有电荷的时候逻辑电平是0,对应实际电压是0(确切来说是小于0.7V,其实0.7伏电压做不了什么事情,就可以认为是0V啦).那我们编写程序的时候,就是让小方格要么是1(5V),要么是0(0V).
下面这些操作是假设你的编程软件安装成功,并且你会建立第一个工程文件的前提下进行.我就编一个小成程序让下面图的小灯亮起来.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/81/3540261251813790.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
程序代码:
#inlcude
#define uint unsigned int---定义一个无符号整型数据类型变量
#define uchar unsigned char----定义一个无符号字符型数据变量
void main()--程序主函数,一定要记住程序的函数结构写法,都是固定的.程序 执行都是从主函数开始执行.
{
P2=0Xfe;
while(1);
}
P2=0Xfe;把一个数0Xfe付给P2口,0X代表16进制,这时P2口的状态如图
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/81/3540261251815358.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
P2=0Xfe这句话的目的就是让P2.0口的逻辑电平为0,实际电压为0,这样LED两端就会有电压差,从而使其点亮.可能有人不知道16进制和2进制是怎么回事.好简单的,0000-0,0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,1001-9,1010-a,1011-b.1100-c,1101-d,1110-e,1111-f.16进制就是从0数到f,一共16个数,完了.细心的朋友可能会发现,让P2.0发光,就是让P2口最后一位为0,那只要P2口最后一位为0,LED就会发光,看上面的2进制数值,只要最后一位为0就达到目的,如P2=0X00,P2=0X02,P2=0Xdc....等等.
这种操做方法叫总线操作方法.让P2.0的LED发光还可以用位操作的方法.
程序代码如下:
#inlcude
#define uint unsigned int
#define uchar unsigned char
sbit D1=P2^0;
void main
{
D1=0;
while(1);
}
sbit D1=P2^0;这句话意思是把P2^0定义为一个变量D1,操作D1就可以操作P2.0.有的人会有疑问,这多麻烦了,直接P2.0=0,不就完了吗?不可以,这样写编译器不认识这种格式,所以大家一定要记得如何定义一个位变量,格式不能改了,一定是sbit D1=P2^0,当然D1可以是其他字母,A1,B2,C1都没有问题.
总结一下,让LED发光办法2个,总线操作,位操作.学习懂得总结进步才快.(待续)