常用的延时方法:
软件延时(使用简单但是浪费CPU资源)、定时器延时(不浪费CPU资源),本次先使用软件延时。

LED全亮代码:

#include<reg52.h>  //引用51的头文件
void main()
{P1=0;
}

整体代码闪烁

#include<reg52.h>unsigned int i;void main(){while(1){P1=0;i=65535;while(i--);P1=0xff;//单片机会将你写的数转换为二进制,也可以写十进制255,等同于二进制11111111,将灯熄灭。i=65535;while(i--);}}

循环移位函数:()

字符型循环左移: _crol_
字符型循环右移: _cror_
a=0xFE;//11111110
b=_corl_(a,1)//11111101
循环左移是把最高位移到最低位上

左右移运算符:(<<>>)

a=0xFE;//11111110
b=a<<1;//11111100
左移运算符是把最高位移除最低位补零

流水灯代码

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}
uchar temp;
void main()
{temp=0xfe;P1=temp;//delay(100);while(1){temp=_crol_(temp,1);P1=temp;delay(200);    }
}

调试过程演示

首先改晶振频率将24改为11.0592(根据自己的情况):


点击debug进行调试:


出现的界面右上部分是汇编代码(可关闭),左边一列中sec是程序运行的时间,下方是C代码:


这里我的流水灯是P1口,所以选择P1查看在程序运行中P1的值:


点击这个图标可以进行单步调试:
(刚开始程序没有运行,所以P1各位都是高电平)


点击这个图标将程序重置重新运行:

若进入循环可点击下方的图标跳出循环:

然后可以点击右下角的watch1,然后输入变量名,可在程序运行中查看变量值的变化:


右击变量的值可修改变量的进制显示:
然后就可以开始调试了!

在线仿真器的使用:
在线仿真器可以在调试过程中让代码逐行运行的现象展现出来可提高调试的效率。
这个仿真器不仅可以做一个硬件仿真器(内部储存空间大,运行速度快),还是一个高速单片机, 比STC89C52单片机运行速度快大概12倍,这种单片机也叫做1T(一个时钟周期就是一个机器周期)单片机, 而STC89C52是12个时钟周期为一个机器周期。

下面介绍如何将它作为在线仿真器使用:

将STC89C52的芯片取下来换为在线仿真器(看清楚方向,对应IO对应好)。

然后进行仿真设置:

点击Keil仿真这个选项卡:

单击添加STC仿真器到Keil中去:

然后选择Keil的安装路径,只选择文件夹,不用展开:

出现下图表示添加成功点击确定:

然后点击将IAP15L2K61S2设置为仿真芯片,提示正在检测单片机,等待完成即可:


然后打开Keil然后按照下图操作

然后点击STC展开,选择STC15F2K60S2:

然后点击同一窗口中的Debug勾选Use(这个是选择硬件仿真方式),展开下拉菜单找到STCMontor 51 Driver,然后点击settings选择自己的端口号,这就OK了:

然后编译,(若单片机有自动烧录的功能,记得将跳线帽拔掉)可以试一下点击调试,可见硬件上的小灯是和代码对应的,执行一步代码LED灯就会有相应的变化。
用完后若想使用STC89C52记得把Keil的配置改回来:


如何将它作为一个高速单片使用:
选择Keil的安装路径,上面已经选择过了就不用再次选择了,将IAP15L2K61S2设置为仿真芯片,这个每用一次都得设置。(记得将拔下的跳线帽插回去)

然后点击检测MCU选项:
然后就可以将它作为单片机使用(这里可以配置晶振频率),打开程序文件…,若将将STC89C52换回,点击检测MCU选项,就可以正常的使用了。

LED闪烁和流水灯,调试教程,在线仿真器的使用相关推荐

  1. 学习笔记(01):巫妖王51单片机开发板配套视频课程-LED闪烁和流水灯效果

    立即学习:https://edu.csdn.net/course/play/6735/133119?utm_source=blogtoedu 2020-5-14 keil LED 闪烁,流水灯

  2. 51单片机(入门保姆级教程)——LED闪烁及流水灯

    一.LED基本原理和知识 图1 LED共阳极原理图 1.1 LED共阴极和共阳极的含义 LED的最小单元是发光二极管.发光二极管是区分正负极的,正向导通,反向截止.共阴极就是发光二极管的负极连接在一起 ...

  3. 【STC89C52】LED(点亮LED、LED闪烁、流水灯)和蜂鸣器

    今天我分享的是基于stc51的LED和蜂鸣器相关实验的学习笔记,希望对你有所帮助!!! 目录 一.原理图 1)LED ​编辑 2)蜂鸣器 二.代码分析 一)单片机代码基本结构 二)如果想点亮一个LED ...

  4. 51单片机-LED模块-来回流水灯

    51单片机-LED模块-来回流水灯 1. 视频 哔哩哔哩视频地址: https://www.bilibili.com/video/av89552821 51单片机-LED模块-来回流水灯 2. 文件 ...

  5. LED原理及流水灯的实现

    LED原理及流水灯的实现 原理 Library中 ACTIVE:可视化的,可以看清LED的活动 LED_BIBY的意思是:两种极性的LED颜色:B-blue,Y-yellow LED是蓝色的,发光后颜 ...

  6. 【STM32】标准库 菜鸟入门教程(3)闪烁及流水灯

    目录 GPIO GPIO基本结构 GPIO位结构 GPIO模式 器件原理解析 LED 面包板: 蜂鸣器: 小文件分享 LED闪烁 源代码百度云地址: 第一步:使用RCC开启GPIO时钟 第二步:使用G ...

  7. 51单片机 LED点亮、闪烁以及流水灯实现

    文章目录 一.Keil创建项目 二.Proteus搭建虚拟仿真电路 三.LED点亮 四.LED闪烁 五.流水灯实现 1. 流水灯(库函数法) 2. 流水灯(左移法) 3. 流水灯(右移法) 4. 流水 ...

  8. 【万物基于电灯】FPGA点亮LED做一个流水灯

    刚刚入门FPGA,菜鸟一个,新手一个,勿喷** 0.实验目标 使用Quartus II在黑金Alinx301开发板上实现时间间隔为1s的流水灯. 1. 软件安装:Quartus II与ModelSim ...

  9. 点亮第一个led小灯、led小灯闪烁、流水灯

    1.原理: (1)led小灯为发光二极管,单向导电性,阳极接高电平,阴极接低电平可以点亮. 普中单片机引脚接口输出高低电平控制 (2)点亮延时,熄灭延时 //延时函数 void delay(u16 i ...

最新文章

  1. Oracle 11g 数据库启动和关闭
  2. 谈阿里核心业务监控平台SunFire的技术架构
  3. linux之使用帮助
  4. uniapp 强制刷新DOM/强制更新指令:this.$forceUpdate();
  5. 王道考研 计算机网络9 物理层传输介质 双绞线 同轴电缆 光纤
  6. java怎样控制迭代周期_如何在Java中迭代日期范围?
  7. 2021-2025年中国一次性透析装置行业市场供需与战略研究报告
  8. 实验报告(3)-语法分析
  9. Asp.net Mvc+MongoDB+Autofac等打造轻量级blog系统(二)
  10. SM2椭圆曲线公钥加密/解密算法
  11. 翟菜花:汽车市场首度遇冷,下沉市场与二手车会是破冰利器吗?
  12. android app文件夹,android app文件目录结构
  13. NeurIPS latex中文支持
  14. 【干货长文】诺亚财富解读市场信息心理学
  15. MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)
  16. 一支笔的测试点_.一支杯子和一支笔的测试用例
  17. matlab 画偏振态,MATLAB:绘制三维偏振光动画
  18. Java已死?Java进阶面试资料无偿分享!进阶学习
  19. 为华为交换机设置ntp获取时间
  20. Fabric 1.0源代码分析(24)MSP(成员关系服务提供者)

热门文章

  1. SOLIDWORKS——参数化建模
  2. C#中数据流(文件流、内存流、网络流等)相关知识点梳理
  3. superviseddescent (SDM C++11实现)环境配置
  4. java链表实现_链表的原理及java实现
  5. python画圆并填充图形颜色_如何使用python设计语言graphics绘制圆形图形
  6. php未定义要怎样做,php-Behat-未定义的功能步骤
  7. java 入门 博客园_javaweb入门
  8. 表示自己从头开始的句子_微信拍一拍后缀幽默回复有趣的句子 拍了拍唯美内容文案...
  9. Linux之RPM 软件管理程序
  10. Embeded linux之移植boa