单片机8255方式0开关控制c语言
时间: 2024-01-04 10:04:48 浏览: 24
实现单片机8255方式0开关控制的C语言代码如下:
```c
#include<reg52.h>
#define uchar unsigned char //定义无符号字符类型
#define uint unsigned int //定义无符号整型
sbit WR = P3^5; //定义写控制信号WR
sbit RD = P3^6; //定义读控制信号RD
sbit CS = P3^7; //定义片选控制信号CS
//函数声明
void delay(uint x);
void Init8255();
void WriteData(uchar dat);
uchar ReadData();
void main()
{
uchar dat;
Init8255(); //初始化8255
while(1)
{
dat = ReadData(); //读取8255的数据
WriteData(~dat); //将数据按位取反并写回8255
}
}
//延时函数
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
{
for(j=110;j>0;j--);
}
}
//初始化8255
void Init8255()
{
CS = 1; //8255片选置高
WR = 0; //写控制信号置低
P1 = 0x80; //向8255的控制寄存器写入0x80,选择端口A为输出
WR = 1; //写控制信号置高
delay(10); //延时等待芯片稳定
}
//向8255写入数据
void WriteData(uchar dat)
{
CS = 0; //片选信号置低
WR = 0; //写控制信号置低
P1 = dat; //将数据写入P1口
WR = 1; //写控制信号置高
delay(10); //延时等待芯片稳定
CS = 1; //片选信号置高
}
//从8255读取数据
uchar ReadData()
{
uchar dat;
CS = 0; //片选信号置低
RD = 0; //读控制信号置低
dat = P1; //将读取到的数据保存到dat变量中
RD = 1; //读控制信号置高
delay(10); //延时等待芯片稳定
CS = 1; //片选信号置高
return dat; //返回读取的数据
}
```
上述代码中,我们先定义了三个控制信号WR、RD和CS,它们分别连接到8255的写、读和片选控制引脚。然后我们定义了四个函数,分别是延时函数、初始化8255函数、向8255写入数据函数和从8255读取数据函数。在主函数中,我们首先调用Init8255函数来初始化8255,然后进入一个死循环,在循环中不断地从8255中读取数据并将其按位取反后写回8255中。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)