52单片机IO口输出点亮你的LED

52单片机IO口输出点亮你的LED[入门\详解]

欢迎你的到来!这里是我的单片机学习笔记,希望我的笔记可以在你学习的道路上对你有所帮助!

特殊功能寄存器SFR声明

我们想要使用单片机的IO口就要先定义它的地址,我们可以从芯片资料上找到IO口对应的地址(也可以直接网上搜)
STC89C52

单片机C语言SFR声明:

sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;//定义P0~P3

定义好以后,通过控制P0~P1,我们可以同时控制他们对应的8个IO口,当然这次我们只需要点亮一两个LED,只需要用到一两个IO口,所以可以用下面的方法单独定义一个IO口。

sbit LED0 = P1 ^ 0;
sbit LED1 = P1 ^ 1;
sbit LED2 = P1 ^ 2;
sbit LED3 = P1 ^ 3;
sbit LED4 = P1 ^ 4;
sbit LED5 = P1 ^ 5;
sbit LED6 = P1 ^ 6;
sbit LED7 = P1 ^ 7;//分别定义P1的8个IO口

注意:定义IO口要大写

头文件

前面我们使用sfr来定义IO口,如果每次都要一条一条的输入sfr来定义会非常麻烦,这时我们可以用头文件的方法来代替刚才的方法,52单片机C语言的头文件是 <reg52.h>。
这个头文件里就包含了大部分定义,方便快捷。那为什么还要讲sfr声明呢?其实就是为了更好的理解头文件的核心内容。

代码参考

给led0赋值0可以让其对应的IO口发出低电平的信号,从而点亮led。

#include<reg52.h>

//sfr P1 = 0x90;//定义P1寄存器地址

sbit led0 = P1^0;//led0 第1个led
sbit led7 = P1^7;//led7 第8个led

void main()
{
   
   
//	led0 = 0;//低电平 点亮led0
//	while(1);//使程序停在这(死循环)
	while(1)
	{
   
   
		led0 = 0;
		led7 = 0;
	}
}

下面就是最终成果图,黑色框框里就是我们点亮的第1个和第8个led。成果

参考内容链接: https://www.bilibili.com/video/BV1Kt411Q7aV?p=4.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章