51单片机-程序点灯

发布者:皮球最新更新时间:2021-08-13 来源: eefocus关键字:51单片机  程序  硬件 手机看文章 扫描二维码
随时随地手机看文章

1.头文件

在 #include头文件中,把单片机中的寄存器地址封装起来定义成宏供我们调用,寄存器这个概念我们初学先不用太深刻的去理解它,在《手把手教你学51单片机》文档中2.4.1节有讲解,大家熟读几遍,如果还是无法理解后面我们再用程序配合硬件来领悟它们的作用。

 

2.单片机端口

首先我们知道STC89C52RC这个芯片有4*8=32个IO端口是可以被我们用程序控制输出高电平或低电平的。拿P0表示它可以一次性控制8个引脚端口输出每个引脚想输出的电平状态,P0是一个寄存器,它的功能是控制所对应的8个单片机IO端口(P0.0~P0.7)输出我们想要输出的电平,比如我们控制P0.0单个IO端口输出低电平,P0.1~P0.7这7个IO端口输出高电平,程序中使用这条语句“P0=0xFE;”,其他P1,P2,P3也是一样的操作。

 

3.IO端口与二进制

C语言中的十六进制0xFE用二进制表示 11111110,我们也就知道了单片机的P0.0排在了这八个位的最底端。我们控制P0.2单个IO端口输出低电平,其他IO端口输出高电平,则是“P0=0xFB; ”二进制表示 11111011。对这些知识没有过接触的读者用计算器可以快速查看,不过以后还是尽量口算比较好。

QQ截图20200326165726.png


4.单个IO端口声明

有时我们只关心单片机的一个引脚的电平控制,其他7个我们不用把人家强制输出成其他电平,而“P0=0xFE;”就是强制把其他7个IO端口都输出了固定高电平状态。要想实现单独控制一个IO端口,这时我们用这条语句来声明“sbit LED=P0^0;”也就是只控制一个位,此时想让单独的P0.0输出低电平只需“LED=0;”即可,LED不过是表示P0.0所用的名字而已,你可以根据喜好改写这个名字。


值得注意的是,程序书写中如果没有“sbit LED=P0^0;”这个提前定义,直接“P0.0=0;”这样书写是不符合语法的,必须先给IO端口一个命名,而且“sbit LED=P0.0;”这样的写法同样也不符合语法,规定是“P0^0”。


还有我们也不能命名已经在 #include头文件中已有的名字,查看头文件内容可知,有些名字已经被使用,


像“sbit PSW=P0^0;”,“sbit CY=P0^0;”这样定义会编译报错的,因为命名冲突了。#include头文件中已有的名字我们后期会使用到的。

 

5.程序点亮LED

1.硬件连接

假设开发板上的LED连接情况如下

QQ截图20200326165726.png

那么我们用程序来点亮它就比较简单了,只需让P0.0输出低电平即可。


2.代码

1
2
3
4
5
6
7
#include    
sbit LED = P0^0;    
void main()
{
  LED= 0;       
  while (1);//程序执行到此处语句,则不再往下执行下面的语句,相当于程序运行停在了此处,其实是这条语句一直在死循环空作功,文档2.4.3节有参考      
}

3.提醒

上述代码只是简单入门第一个程序,但是这段代码在本教程所使用的开发板中并不能点亮一盏灯,原因是开发板实际硬件连接并不是如上图所示。此讲的原理图只是作为第一个程序的入门讲解参考。

关键字:51单片机  程序  硬件 引用地址:51单片机-程序点灯

上一篇:51单片机-初识原理图
下一篇:51单片机-实际LED硬件连接

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved