历史上的今天
返回首页

历史上的今天

今天是:2025年08月13日(星期三)

正在发生

2021年08月13日 | 51单片机-程序点灯

2021-08-13 来源:eefocus

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?imageView2/2/w/550


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?imageView2/2/w/550

那么我们用程序来点亮它就比较简单了,只需让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.提醒

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

推荐阅读

史海拾趣

GS Technology公司的发展小趣事
三极管作为电子开关或放大器,能够控制电流的流动。在放大状态下,三极管的基极电流对集电极电流有控制作用,实现信号的放大。
思博科技(Cybermax)公司的发展小趣事

在快速发展的过程中,思博科技始终关注企业文化建设和社会责任。公司倡导“创新、协作、诚信、共赢”的价值观,为员工提供了良好的工作环境和发展机会。同时,思博科技还积极参与社会公益活动,回馈社会。这些举措不仅提升了公司的品牌形象和声誉,还增强了员工的归属感和凝聚力。

Emmoco公司的发展小趣事

随着产品质量的不断提升和技术的不断创新,Emmoco开始积极拓展市场。公司制定了详细的市场拓展计划,通过参加国际展会、举办技术研讨会等方式,不断提高品牌知名度和影响力。同时,Emmoco还积极与国内外知名企业建立合作关系,共同开拓市场,实现互利共赢。这些举措使得Emmoco的市场份额不断扩大,品牌影响力逐渐增强。

Equator Technologies公司的发展小趣事

随着智能手机市场的迅速崛起,Equator敏锐地捕捉到了这一市场机会。从XX年代后期开始,公司逐渐将业务重心转向手机图像处理领域。通过与手机厂商的合作,Equator成功地将其先进的视频处理技术应用于智能手机中,显著提升了手机的显示效果和用户体验。这一转型不仅为Equator带来了丰厚的回报,也进一步巩固了其在电子行业的地位。

Comax Industrial Co Ltd公司的发展小趣事

Comax Industrial Co Ltd公司自创立之初,便明确了其在电子行业中的定位与发展方向。公司初期便注重技术研发,引进了一批高素质的技术人才,并投入大量资源进行技术研发与创新。通过不懈的努力,Comax成功开发出一系列具有竞争力的电子产品,并在市场上获得了良好的口碑。这些产品不仅满足了客户的需求,也为公司的发展奠定了坚实的技术基础。

AR RF/Microwave Instrumentation公司的发展小趣事

面对未来的发展,AR RF/Microwave Instrumentation制定了明确的战略规划。他们将继续加大在研发和创新方面的投入,推出更多具有创新性和竞争力的产品。同时,公司还将积极拓展新的应用领域和市场,寻求更多的合作机会,以实现更加广泛的发展。

请注意,以上仅为概述性的故事框架,并非具体的事实描述。如果你需要更详细、具体的故事内容,建议查阅AR RF/Microwave Instrumentation公司的官方资料、新闻报道或行业分析报告等,以获取更准确的信息。

问答坊 | AI 解惑

电子书籍PDF下载

基本电子书籍PDF档…

查看全部问答>

清华大学嵌入式培训教材

清华大学的教材,很适合初学者…

查看全部问答>

还是说说80后在工作中的优点吧

前几天跟一个在人大做老师的同学聊天,说着说着又说到了80后的问题。她对80后依然持否定态度,但是倒没有像我们通常所说的理由:80后是中国第一代独生子女,没有经历过困难时期。她从另一角度来看,这是一代用“美式鼓励教育”成长起来的,无论孩子 ...…

查看全部问答>

winCE平台下.net编程怎样访问硬件的寄存器地址?

windowsCE 5.0中使用.net做开发,怎么才能访问底层硬件的寄存器的地址呢?比如并口的读写寄存器等等,上网搜了一圈,没找到什么资料啊,这里高手云集,呵呵,知道的兄弟告诉一声 感激不尽啊…

查看全部问答>

mc39i 连线问题

我用 mc39i modem 其中31管脚 /pd 发现总是在0.24v--2.24v波动,该管脚为 0v是给modem断电。 我把这个管脚的控制端用6n137 隔离,输入1 断电,输入0 不断电。总是出现  rascs_disconnected ecode 633,上网查为 拨号网络网络由于设备 ...…

查看全部问答>

送分!

坐沙发者即送分!…

查看全部问答>

windows mobile下如何开发数据库(用vc2005环境),需要那些?

windows mobile下如何开发数据库(用vc2005环境),需要那些? access即可…

查看全部问答>

基于 LM3S的图形驱动库开发之硬件介绍

大家好,首先在这个地方向大家致歉,因为个人原因,11月份突然十分忙碌。所以在上旬的时候没有抽出时间写开发文档。心中万分抱歉。。。这次我要和大家一起分享的是TI的LM3S上图形驱动库的开发。现在在网络上,用ti外设驱动库的很多,但是在网上基 ...…

查看全部问答>

FPGA会不会内存溢出

IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER1_BASE,100000000); //先给赋值再开始计数,否则计数值为零    IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER1_BASE,100000000>>16);PERIODL为16位寄存器,最大能存65536,这样会 ...…

查看全部问答>