历史上的今天
今天是:2025年08月13日(星期三)
2021年08月13日 | 51单片机-程序点灯
2021-08-13 来源:eefocus
1.头文件
在 #include 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。对这些知识没有过接触的读者用计算器可以快速查看,不过以后还是尽量口算比较好。 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连接情况如下 那么我们用程序来点亮它就比较简单了,只需让P0.0输出低电平即可。 2.代码 3.提醒 上述代码只是简单入门第一个程序,但是这段代码在本教程所使用的开发板中并不能点亮一盏灯,原因是开发板实际硬件连接并不是如上图所示。此讲的原理图只是作为第一个程序的入门讲解参考。 

上一篇:51单片机-初识原理图
下一篇:51单片机-实际LED硬件连接
史海拾趣
|
前几天跟一个在人大做老师的同学聊天,说着说着又说到了80后的问题。她对80后依然持否定态度,但是倒没有像我们通常所说的理由:80后是中国第一代独生子女,没有经历过困难时期。她从另一角度来看,这是一代用“美式鼓励教育”成长起来的,无论孩子 ...… 查看全部问答> |
|
windowsCE 5.0中使用.net做开发,怎么才能访问底层硬件的寄存器的地址呢?比如并口的读写寄存器等等,上网搜了一圈,没找到什么资料啊,这里高手云集,呵呵,知道的兄弟告诉一声 感激不尽啊… 查看全部问答> |
|
我用 mc39i modem 其中31管脚 /pd 发现总是在0.24v--2.24v波动,该管脚为 0v是给modem断电。 我把这个管脚的控制端用6n137 隔离,输入1 断电,输入0 不断电。总是出现 rascs_disconnected ecode 633,上网查为 拨号网络网络由于设备 ...… 查看全部问答> |
|
大家好,首先在这个地方向大家致歉,因为个人原因,11月份突然十分忙碌。所以在上旬的时候没有抽出时间写开发文档。心中万分抱歉。。。这次我要和大家一起分享的是TI的LM3S上图形驱动库的开发。现在在网络上,用ti外设驱动库的很多,但是在网上基 ...… 查看全部问答> |
|
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER1_BASE,100000000); //先给赋值再开始计数,否则计数值为零 IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER1_BASE,100000000>>16);PERIODL为16位寄存器,最大能存65536,这样会 ...… 查看全部问答> |




