Freshman上路 2022-01-03 21:06 采纳率: 100%
浏览 304
已结题

单片机C51 两个按键K1、K2控制8个LED灯,初始值0xFE。摁下松开一次K1,LED灯左移一位点亮下一盏灯,前一位熄灭;摁下松开一次K2,LED灯右移一位点亮下一盏灯,前一位熄灭;


#include"reg52.h"
#include"intrins.h" //_crol_和_cror_移位函数的库函数,使用_crol_和_cror_移位函数必须要先声明库函数
#define uchar unsigned char
void Delay_1ms(unsigned int Time)
    
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);     //延时函数,老生常谈
}

void main(void)
{
  uchar led1,led2;
    led1=0xFE;
  led2=0xFE;
    
    while(1)
    {
        if(P1==0xFE) //定义按键K1,按键接P1^0口 1111 1110 接地变为低电平

          {
                Delay_1ms(50); //延时防抖动
                
                while(P1==0xFE);
                {
                P2=led1; //P2口初始值
              led1=_crol_(led1,1); //使用循环左移函数,一定要保持循环初始值有0。使用该函数使程序简单很多
                Delay_1ms(50);
                }
            }
                    
                    
      if(P1==0xFD) //定义按键K2,按键接P1^1口 1111 1101 接地变为低电平
            {
                  Delay_1ms(50); //延时防抖动
                while(P1==0xFD);
                 {
                P2=led2; //P2口初始值
                led2=_cror_(led2,1); //使用循环右移函数,一定要保持循环初始值有0。使用该函数使程序简单很多
                Delay_1ms(50);
                 }    
            }
    }
}

我的问题是,无法衔接左右移位,导致换向时混乱,请教一下改进方法,谢谢

  • 写回答

3条回答 默认 最新

  • 智者知已应修善业 2022-01-05 10:30
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月3日

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP