相信很多同学对单片机都有一定了解,那么你知道单片机IO口操作是什么吗?不知道的话跟着小编一起来学习了解单片机IO口操作。
单片机IO口操作
单片机中有四个i/o口,分别是P1,P2,P3和P4,每个引脚不止一种功能(如P3.2既是i/o口又是外部中断INT0引脚)。
下面用一个闪烁灯的例子来说明51单片机单个i/o口的用法:
/*****************************************************************************
晶振:11.0593MHz
LED接P1.0引脚
实验结果:LED每隔0.5s闪烁一次
*******************************************************************************/
#include<reg51.h> //包含头文件
#define LED P1.0 //定义LED为P1.0口
void delay(unsigned int i) //延时1ms函数
{
for(;i>0;i--)
for(int j=0;j<110;j++);
}
void main() //主函数
{
while(1)
{
LED=1; //熄灭LED
delay(500); //延时0.5s
LED=0; //点亮LED
delay(500);
}
}
下面再用一个流水灯例子说明51单片机整体I/O的用法:
/*****************************************************************************
晶振:11.0593MHz
8个LED1~LED8分别接接P1.0~P1.7引脚
实验结果:从LED1至LED8逐个点亮,呈现流水灯效果
*******************************************************************************/
#include<reg51.h>
void delay(unsigned int i) //延时1ms函数
{
for(;i>0;i--)
for(int j=0;j<110;j++);
}
void main()
{
while(1)
{
P1=0xFF; //就是二进制中的11111111,全部熄灭
delay(100); //延时0.1s
P1=0xFE; //就是二进制中的11111110,点亮LED1
delay(100); //延时0.1s
P1=0xFD; //就是二进制中的11111101,点亮LED2
delay(100); //延时0.1s
P1=0xFB; //就是二进制中的11111011,点亮LED3
delay(100); //延时0.1s
P1=0xF7; //就是二进制中的11110111,点亮LED4
delay(100); //延时0.1s
P1=0xEF; //就是二进制中的11101111,点亮LED5
delay(100); //延时0.1s
P1=0xDF; //就是二进制中的11011111,点亮LED6
delay(100); //延时0.1s
P1=0xBF; //就是二进制中的10111111,点亮LED7
delay(100); //延时0.1s
P1=0x7F; //就是二进制中的01111111,点亮LED8
delay(100); //延时0.1s