当前位置: 首页 > wzjs >正文

东莞市建设工程质监督站网站社区cms

东莞市建设工程质监督站网站,社区cms,徐汇网站制作设计,网站及新媒体账号建设发布形式大纲 确定芯片和频率配置STC-ISP配置单片机型号配置系统频率选择指令集定义延时长度 事例 在《51单片机编程学习笔记——从0到1创建Keil工程》一文中,我们看到了LED闪烁的效果。其基本原理就是:在一个循环中,给LED的引脚设置高低电压&#xf…

大纲

  • 确定芯片和频率
  • 配置STC-ISP
    • 配置单片机型号
    • 配置系统频率
    • 选择指令集
    • 定义延时长度
  • 事例

在《51单片机编程学习笔记——从0到1创建Keil工程》一文中,我们看到了LED闪烁的效果。其基本原理就是:在一个循环中,给LED的引脚设置高低电压,以达到“点亮”和“熄灭”状态的切换。但是由于人类眼镜存在视觉延迟,所以我们需要在这两个状态间停留一段时间,以让我们察觉出“闪烁”效果。

void main()
{	while(1){LED1=0;	//点亮delay_10us(50000); //大约延时450msLED1=1;	//熄灭delay_10us(50000); 	}		
}

但是51单片机的开发环境中,没有内置的延时方法。比如上例中的delay_10us方法是需要我们自己实现的。

和我们之前了解的抢占式系统不同,单片机中的程序是独占CPU的。这就意味着,程序不能执行高级系统中的Sleep方法。因为在51单片机中,程序要一直占用CPU,而不能被挂起。而如果我们想表达“过段时间”的概念,则需要写一个Delay方法,让CPU空转一段时间。

但是不同芯片的计算频率不一样,这就导致“空转”的周期也存在一定的差异。举个例子,有些芯片可以在1秒钟给int型变量自增1万次;而有的芯片则可以自增10万次。

好在有工具帮我们生成相关代码。这就是教程目录“5–开发工具\3-程序下载软件\STC-ISP(不推荐使用)”下的stc-isp。

确定芯片和频率

在使用这个软件前,我们需要确认两个信息:

  • 芯片的型号
  • 系统频率

这些信息都可以在开发板上找到。

如下图可见,芯片是STC89C52。
在这里插入图片描述
系统频率则需要查看晶振电路的信息。

晶振全称为晶体振荡器,它与 51 单片机的引脚相连,为单片机提供稳定的时钟信号,是决定单片机工作频率的关键部分。比如常见的 12MHz、11.0592MHz 的晶振,会使单片机按照相应的频率进行工作。在基于 51 单片机的最小系统中,晶振与单片机的 XTAL1 和 XTAL2 引脚连接,通过内部电路产生时钟脉冲,为单片机的各个部件提供基准时钟。

通过下图我们可以看到晶振是11.0592MHz。
在这里插入图片描述
假如在实物上看不到,还可以在开发板原理图(2–开发板原理图/开发板原理图/普中-2&普中-3&普中-4开发板原理图.pdf)中找到。
在这里插入图片描述

配置STC-ISP

配置单片机型号

基于之前在实物中得到的信息,我们将单片机型号选择为STC89C52
在这里插入图片描述

配置系统频率

切到“软件延时计算器”Tab页,选择晶振电路的频率11.0592MHz。
在这里插入图片描述

选择指令集

一共有STC-Y1、STC-Y3、STC-Y5和STC-Y6这四种指令集。它们分别适配于不同系列。

我们需要选择与我们芯片一致的指令集——STC-Y1。它适用于STC89Cxx,与我们芯片STC89C52匹配。
在这里插入图片描述

定义延时长度

有毫秒和微秒两个单位。我们选择生成延时1毫秒。
在这里插入图片描述
这样我们就会得到代码。

void Delay1ms()		//@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}

事例

我们将上述得到的延时1毫秒的函数实现复制到代码文件中。

然后自定义一个方法Delay,用于自由控制毫秒数。它的实现是在底层通过循环控制调用“延时1毫秒”的次数。

需要注意的是:由于我们使用了_nop_()方法,需要引入头文件intrins.h

#include "reg52.h"
#include <intrins.h>void Delay1ms()		//@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}void Delay(unsigned int millisecond) {unsigned int i = 0;for (i = 0; i < millisecond; i++) {Delay1ms();	}
}sbit LED1=P2^0;void main()
{	while(1){LED1=0;	Delay(1000);LED1=1;Delay(1000); 	}		
}

然后我们按照《51单片机编程学习笔记——编译代码点亮LED》中介绍的方法编译并下载到开发板上,就可以看到D1灯持续闪烁。
在这里插入图片描述

http://www.dtcms.com/wzjs/797964.html

相关文章:

  • 虚拟主机网站建设过程企业官网开发公司
  • 洛阳网站建设的公司哪家好郑州网站建设公司电话多少
  • 网站左侧分类菜单怎么做使用模板怎么建站
  • 西数网站管理助手公司网站建设设计如何收费
  • 网站源码带手机版wordpress静态化好处
  • 做印刷哪个网站好宝安seo优化公司
  • 人才招聘网站怎么做开发一个app要多少费用
  • 多种昆明网站建设湛江网站建设技术托管
  • 湖北企业模板建站信息淘宝客 插件 wordpress
  • 企业免费建站怎么做考试资料网站
  • 网站进度条特效2022年域名申请时间
  • 网站结构怎么做临沂网站建设对实体企业的重要性
  • 有人在相亲网站骗人做传销apicloud成品源码
  • 苏州高端网站建设咨询项目计划书ai生成
  • 网站转小程序工具网站开发人员职位晋升空间
  • 如何制作简易 网站重庆网站开发服务器
  • 烟台 网站建设摄影设计工作室
  • 无忧网站建设多少钱网页设计图片的边框怎么做
  • 做网站的主要作用百度推广优化怎么做
  • 珠海 电商 网站建设招聘网站怎么做效果好
  • 企业门户网站案例青浦练塘网站建设
  • 初识网站开发流程图南宁电商网站建设
  • 备案后网站可以改名吗wordpress 百科 插件
  • 做兼职的网站绵阳高端网站建设
  • 男女做暧暧网站免费怎么做广告宣传效果好
  • 郑州英语网站建设网页设计与制作教程杨选辉课后答案
  • 农产品网站的品牌建设wordpress 右下角漂浮的广告如何添加
  • 谷歌官方网站首页零基础学做衣服的网站
  • 内网网站建设流程网站的建站过程
  • 企业内部网站建设滑县网站建设服务