6个IO口控制2个按键7个led灯

时间:2025-03-07 15:35:41
  • uchar b_LED_statu ;
  • uchar F_work_on;
  • extern uchar key_count_time;
  • void key_display(void)
  • {
  • switch(key_count_time)
  • {
  • case 2:
  • {
  • PUA |= 0x28; //A5 A3开启输入上拉
  • OEA &= 0xD7; //0:输入 1:输出
  • PUB |= 0x0B; //B0 B1 B3 开启输入上拉
  • OEB &= 0xF4; //
  • PUC |= 0x01; //C0 开启输入上拉
  • OEC &= 0xFE;
  • if(IOA5 == 0)
  • {
  • F_work_on= 1;
  • }
  • if(IOA3 == 0)
  • {
  • F_work_on= 0;
  • }
  • key_func_static();
  • }
  • break;
  • case 4:
  • {
  • PUA &= 0xD7; //A5,设置为输出模式关闭上拉 A3输入
  • OEA |= 0x20; //0:输入 1:输出
  • OEA &= 0xf7;
  • PUB &= 0xf4; //B0 B1 B3 关闭上拉,开启输出1
  • OEB |= 0x0B; //
  • PUC &= 0xfe; //C0 关闭上拉,开启输出1
  • OEC |= 0xFf; //
  • IOA5 = 1;
  • IOA3 = 0;
  • IOB |= 0X0b;
  • IOC |= 0X01;
  • if(b_LED_statu == 1) //根据b_LED_statu的状态,开关D1 D2 D3 D4
  • {
  • IOB3 = 0; //开启D1
  • }
  • else if(b_LED_statu == 2)
  • {
  • IOB3 = 1; //关闭D1
  • }
  • }
  • break;
  • case 6:
  • {
  • PUA &= 0xD7; //A3设置为上拉输出1模式,A5设置为输入模式关闭上拉
  • OEA |= 0x08; //0:输入 1:输出
  • OEA &= 0xdf;
  • PUB &= 0xf4; //B0 B1 B3 关闭上拉,开启输出1
  • OEB |= 0x0B; //
  • PUC &= 0xfe; //C0 关闭上拉,开启输出1
  • OEC |= 0xFf; //
  • IOA3 = 1;
  • IOA5 = 0;
  • IOB |= 0X0b;
  • IOC |= 0X01;
  • key_count_time= 0;
  • if(b_LED_statu == 3) //开启D5
  • {
  • IOB3 = 0;
  • }
  • else if(b_LED_statu == 4)
  • {
  • IOB3 = 1; //关闭D5
  • }
  • }
  • break;
  • default:
  • {
  • }
  • break;
  • }
  • }