生成代码用8255拓展51单片机io口并定义连接在8255的PA口和PB口上的各个按键
时间: 2024-05-13 21:18:32 浏览: 188
利用8255和51单片机实现数码管显示按键值的实验_.doc
下面是拓展51单片机IO口的代码,其中定义了连接在8255的PA口和PB口上的各个按键:
```
#include <reg52.h>
sfr P0M1 = 0x93; //P0口模式设置寄存器1
sfr P0M0 = 0x94; //P0口模式设置寄存器0
sfr P1M1 = 0x91; //P1口模式设置寄存器1
sfr P1M0 = 0x92; //P1口模式设置寄存器0
sfr P2M1 = 0x95; //P2口模式设置寄存器1
sfr P2M0 = 0x96; //P2口模式设置寄存器0
sfr P3M1 = 0xB1; //P3口模式设置寄存器1
sfr P3M0 = 0xB2; //P3口模式设置寄存器0
sfr P0 = 0x80; //P0口数据寄存器
sfr P1 = 0x90; //P1口数据寄存器
sfr P2 = 0xA0; //P2口数据寄存器
sfr P3 = 0xB0; //P3口数据寄存器
sbit Key1 = P2^0; //定义连接在8255的PA口的按键1
sbit Key2 = P2^1; //定义连接在8255的PA口的按键2
sbit Key3 = P2^2; //定义连接在8255的PA口的按键3
sbit Key4 = P2^3; //定义连接在8255的PA口的按键4
sbit Key5 = P2^4; //定义连接在8255的PA口的按键5
sbit Key6 = P2^5; //定义连接在8255的PA口的按键6
sbit Key7 = P2^6; //定义连接在8255的PA口的按键7
sbit Key8 = P2^7; //定义连接在8255的PA口的按键8
sbit Led1 = P1^0; //定义连接在8255的PB口的LED1
sbit Led2 = P1^1; //定义连接在8255的PB口的LED2
sbit Led3 = P1^2; //定义连接在8255的PB口的LED3
sbit Led4 = P1^3; //定义连接在8255的PB口的LED4
sbit Led5 = P1^4; //定义连接在8255的PB口的LED5
sbit Led6 = P1^5; //定义连接在8255的PB口的LED6
sbit Led7 = P1^6; //定义连接在8255的PB口的LED7
sbit Led8 = P1^7; //定义连接在8255的PB口的LED8
void main()
{
P2M1 = 0x00; //将P2口设置为推挽输出模式
P2M0 = 0xFF;
P1M1 = 0x00; //将P1口设置为推挽输出模式
P1M0 = 0xFF;
while (1)
{
if (Key1 == 0) //如果按键1被按下
{
Led1 = !Led1; //LED1翻转
while (Key1 == 0); //等待按键1释放
}
if (Key2 == 0) //如果按键2被按下
{
Led2 = !Led2; //LED2翻转
while (Key2 == 0); //等待按键2释放
}
if (Key3 == 0) //如果按键3被按下
{
Led3 = !Led3; //LED3翻转
while (Key3 == 0); //等待按键3释放
}
if (Key4 == 0) //如果按键4被按下
{
Led4 = !Led4; //LED4翻转
while (Key4 == 0); //等待按键4释放
}
if (Key5 == 0) //如果按键5被按下
{
Led5 = !Led5; //LED5翻转
while (Key5 == 0); //等待按键5释放
}
if (Key6 == 0) //如果按键6被按下
{
Led6 = !Led6; //LED6翻转
while (Key6 == 0); //等待按键6释放
}
if (Key7 == 0) //如果按键7被按下
{
Led7 = !Led7; //LED7翻转
while (Key7 == 0); //等待按键7释放
}
if (Key8 == 0) //如果按键8被按下
{
Led8 = !Led8; //LED8翻转
while (Key8 == 0); //等待按键8释放
}
}
}
```
阅读全文