历史上的今天
今天是:2025年10月27日(星期一)
2022年10月27日 | 52单片机IO口输出点亮你的LED
2022-10-27 来源:csdn
特殊功能寄存器SFR声明
我们想要使用单片机的IO口就要先定义它的地址,我们可以从芯片资料上找到IO口对应的地址(也可以直接网上搜)

单片机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语言的头文件是 这个头文件里就包含了大部分定义,方便快捷。那为什么还要讲sfr声明呢?其实就是为了更好的理解头文件的核心内容。 代码参考 给led0赋值0可以让其对应的IO口发出低电平的信号,从而点亮led。 #include //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. 
上一篇:52单片机四种方法实现流水灯
史海拾趣
|
本人想用51单片机实现语音控制小车的前进,后退,停止,左传,右转,但是由于能力所限,对于具体的声音信号的处理过程不太了解,想请高人帮助解决下关于电路,所用元件的设计。具体可以用那些声音处理芯片等。… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:32 编辑 与大家共享下,网上收集来的,一共12个WORD! [ 本帖最后由 clr110110 于 2009-8-24 21:37 编辑 ] … 查看全部问答> |
|
菜鸟问题:中断接收的一串数据要存起来再发送,怎么定义这个数组 如题,在串口中断中要接收一串193个数据的字符串,怎样定义一个数组来存储这个字符串,中断里暂时把字符串存在接收缓冲器里,在中断外怎么定义个数组存储?或者存在EEPROM里面,那里面可以定义数组吗?… 查看全部问答> |
|
/*********************************************************************************************************** Function name: I2C_ReadNByte** Descriptions:   ...… 查看全部问答> |
|
《基于运算放大器和模拟集成电路的电路设计》一书中有源滤波器章节里提到了Q值,这个Q值越大,峰化越明显,可峰化同时也放大了增益。 请问 这个Q值到底有什么意义呢?… 查看全部问答> |
|
/*-----------------------------------------------------------------------------Define the structure of the Capture Driver Object ------------------------------------------------------------------------------*/typedef struct { Uint ...… 查看全部问答> |




