A口地址:0x8000 B口地址:0x8001 控制口地址:0x8002

#include <reg52.h>

void init_8255() { // 初始化为B口输入,A口输出 P1 = 0xFF; // A口输出高电平 P2 = 0x00; // B口输入 P3 = 0x9A; // 控制字节,PB口为输入,PA口为输出 // 控制字节二进制为:10011010 // 说明:P1的高4位为输出,低4位为输入;P2全为输入;P3的高4位为输出,低4位为输入 }

void main() { init_8255(); while(1) { if(P2 == 0x00) { // S1和S2都断开 P1 = 0xFF; // A口输出高电平,D1-D8都灭 } else if(P2 == 0x01) { // S1闭合 P1 = 0xAA; // D1、D3、D5、D7亮,D2、D4、D6、D8灭 } else if(P2 == 0x02) { // S2闭合 P1 = 0x55; // D2、D4、D6、D8亮,D1、D3、D5、D7灭 } else if(P2 == 0x03) { // S1和S2都闭合 P1 = 0x00; // D1-D8都亮 } }

1.写出8255 A口、B口及控制口的地址未用到的地址线为03分每个1分2 用C编写程序初始化8255工作方式设定为B口基本输入、A口基本输出编写程序当开关S1、S2都断开时PA口D1D78个灯全灭S1闭合则PA口D1、D3、D5、D7灯亮当开关S2闭合则PA口D2、D4、D6、D8灯亮开关S1、S2都闭合时PA口D1D7 8个灯全亮。5分imagepngimagepng

原文地址: https://www.cveoy.top/t/topic/g5DR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录