首页 > 其他分享 >51单片机学习

51单片机学习

时间:2024-08-13 21:25:01浏览次数:11  
标签:P2 Delay500ms LED -- void 51 学习 单片机 while

1.1控制一个灯亮

void main()
{
    P2=0xFE;
}

1.2控制一个灯闪烁

void Delay500ms()        //@12.000MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 4;
    j = 205;
    k = 187;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
    while(1)
    {
        P2=0xFE;
        Delay500ms();
        P2=0xFF;
        Delay500ms();
    }
}

1.3流水灯

void Delay500ms()        //@12.000MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 4;
    j = 205;
    k = 187;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void main()
{
    while(1)
    {
        P2=0xFE;
        Delay500ms();
        P2=0xFD;
        Delay500ms();
        P2=0xFB;
        Delay500ms();
        P2=0xF7;
        Delay500ms();
        P2=0xEF;
        Delay500ms();
        P2=0xDF;
        Delay500ms();
        P2=0xBF;
        Delay500ms();
        P2=0x7F;
        Delay500ms();
    }
}

2.1独立按键控制亮灭

void main()
{
    
    
    while(1)
    {
        if(P3_1 == 0)
        {
            P2_0=0;
        }
        else
        {
            P2_0=1;
        }
    }
}

2.2独立按键控制LED状态

void Delay(unsigned int xms)        //@12.000MHz
{
    unsigned char i, j;
  while(xms)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } 
        while (--i);
        xms--;
    }
}

void main()
{
    while(1)
    {
        if(P3_1==0)
        {
            Delay(20);
            while(P3_1==0);
            Delay(20);
            
            P2_0=~P2_0;
        }
    }
}

2.3独立按键控制LED显示二进制

void Delay(unsigned int xms)        //@12.000MHz
{
    while(xms)
    {
        unsigned char i, j;
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } 
        while (--i);
        xms--;
    }
}

void main()
{
    unsigned char LED_Num=0;//表示寄存器
    while(1)
    {
        if(P3_1 == 0)
        {
            Delay(20);
            while(P3_1 == 0);
            Delay(20);
            //默认P2后为高电平 1111 1111
            LED_Num++;//0000 0001
            P2=~LED_Num;//1111 1110
        }
    }
    
}

2.4独立按键控制LED移位

void Delay(unsigned int xms)        //@12.000MHz
{
    while(xms)
    {
        unsigned char i, j;
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } 
        while (--i);
        xms--;
    }
}

unsigned char LED_Num = 0;


void main()
{
    P2=~0x01;//初始化
    
    while(1)
    {
        if(P3_1 == 0)
        {
            Delay(20);
            while(P3_1 == 0);
            Delay(20);
            
            LED_Num++;
            if(LED_Num>=8)
                LED_Num=0;
            P2=~(0x01<<LED_Num);//注意取反与括号的先后顺序
        }
        
        
        if(P3_0 == 0)
        {
            Delay(20);
            while(P3_0 == 0);
            Delay(20);
            if(LED_Num==0)
                LED_Num=7;
            else
                LED_Num--;
            
            P2=~(0x01<<LED_Num);
        }
    }
    
}

标签:P2,Delay500ms,LED,--,void,51,学习,单片机,while
From: https://blog.csdn.net/lovemelater618/article/details/141144902

相关文章

  • Avnet ZUBoard 1CG开发板上手—深度学习新选择
    AvnetZUBoard1CG开发板上手—深度学习新选择摘要本文主要介绍了AvnetZUBoard1CG开发板的特性、架构、硬件单元等概念,并对如何使用以太网接口和串口连接开发板进行基本介绍,同时辅以两个应用例程演示其功能。原文链接:FreakStudio的博客往期推荐:学嵌入式的你,还不会面向......
  • UEFI Shell 的基本操作和应用场景,适合初学者了解和入门 UEFI Shell 的使用。 UEFI She
    UEFIShell是一种提供命令行接口的环境,用于与UEFI固件进行交互。UEFI(统一可扩展固件接口)是计算机启动过程中的一种固件接口,替代了传统的BIOS。UEFIShell提供了一种方式,让用户在启动操作系统之前进行系统管理和配置。主要特点命令行界面:UEFIShell提供一个类似于操作......
  • 导数学习笔记
    或许看起来和物理很有关系?变化率平均速度定义物体的位移与所用时间的比值,通常指物体在某一时间段内的速度,若物体的位移与所用时间的关系式是\(s=f(t)\),函数\(f(t)\)在\(t_0\)与\(t_0+\Deltat\)之间的平均速度是\(\frac{f(t_0+\Deltat)-f(t_0)}{\Deltat}\)。瞬时速......
  • Java中类与对象的学习下
    Java中类与对象的学习下对象的创建和使用创建对象语法:类名对象名=new类名()使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)//这是我们定义的Person类classPerson{**上一个代码块的内容;**}//具体使用publicclassPersonTest{publicstati......
  • 计算机视觉1:cv2模块函数学习
    cv2模块函数学习importcv2ascv (下文同一用cv)1.cv.imread()cv.imread(filename[,flags]) -> retval其中,参数filename表示要读取得图像得文件名,flags表示读取模式,取值如下:flags=2,表示载入的图像深度为16位或者32位,就返回对应深度的图像,否者转换为8位图像再返......
  • 计算机视觉2:NumPy模块函数学习
    NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含一个强大的N维数组对象ndarray、广播功能函数、整合C/C++/Fortran代码的工具和线性代数、傅里叶变换、随机数生成等功能。将NumPy包引入,没有的话需要先安装。importnumpyasnp一、ndarray对象NumPy最重要的一个......
  • Java线程池学习
    Java线程池学习一、线程池基础1定义2优点3基本组件二、Java线程池实现1Executor接口2ExecutorService接口3ThreadPoolExecutor类3.1创建线程池实例三、执行策略1直接提交策略(DirectSubmissionExecutor)2固定线程数策略(FixedThreadPool)3缓存线程池策略......
  • 2024亚太杯数学建模b题基于机器学习回归的洪水预测模型研究
    本届亚太杯中文赛项已经结束,本文分享我的解决思路。摘 要洪水的频率和严重程度与人口增长趋势相近。迅猛的人口增长,扩大耕地,围湖造田,乱砍滥伐等人为破坏不断地改变着地表状态,改变了汇流条件,加剧了洪灾程度。2023年,全球洪水造成了数十亿美元的经济损失。因此构建与研究洪水......
  • 学习:Java中的内存管理
    在Java中,对对象进行分配和取消分配的过程,称为内存管理。Java通过垃圾收集器(GarbageCollector,GC)实现了自动内存管理,这意味着开发者无需显式地释放对象所占用的内存。Java内存管理分为两个主要部分:JVM(Java虚拟机)内存结构垃圾回收器的工作一、JVM内存结构Java虚......
  • 单片机EMC性能优化中的上拉与下拉电阻应用
    在单片机电路设计中,上拉电阻和下拉电阻是不可或缺的元件,它们不仅在稳定电路信号上起到了关键作用,还对提高系统的EMC具有重要意义。EMC性能是指设备在其电磁环境中能够正常工作,并且不会对该环境中的其他设备造成有害干扰的能力。随着现代电子设备的复杂性和密度不断增加,对EMC......