stc15f2k60s2-01-io跑马灯(寄存器版)基本操作.docxVIP

stc15f2k60s2-01-io跑马灯(寄存器版)基本操作.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第PAGE页共NUMPAGES页

stc15f2k60s2-01-io跑马灯(寄存器版)基本操作

stc15f2k60s2-01-io跑马灯(寄存器版)基本操作

本文将以流水灯为例,对stc15f2k60s2单片机的普通io口的基本操作进行详细介绍。先看效果图:

本例是通过控制开发板上d1、d2、d3、d4四个led在一定时间内的亮与灭来实现流水灯的效果,下面我们来详细介绍一下实现的过程。

打开开发板原理图,找到d1、d2、d3、d4这四个led硬件原理图:

云汉电子社区bbs.ickey.cn

从原理图中,我们不难发现,只要分别给p16、p17、p47、p46这四个io一个低电平,对应的led就会被点亮。那么怎么才能让stc15f2k60s2单片机这四个io口输出低电平呢。虽然不简单,但也不是很复杂。

首先,我们需要来配置这四个io口的模式,从芯片手册上我们可以知道,stc15f2k60s2单片机的所有i/o口均可由软件配置成4种工作类型之一,即:准双向口/弱上拉、推挽输出/强上拉、仅为输入(高阻)或开漏输出功能,每个口用2个控制寄存器中的相应位控制每个引脚的工作类型。那么我们来先看p16、p17口,这两个io口是在p1端口上,从stc提供的芯片手册上,我们可以看到p1口的配置如下:

也就是说,p1口的四种工作类型,是通过设置p1m1、p1m0的值来确定的。这里我们演示流水灯用的是普通输入输出功能,也就是我们需要将p1m1、p1m0都设置成0就可以了。同样,p46、p47也是一样的设置:

在这里就偷下懒,直接把所有i/o口都设置成准双向口了。

云汉电子社区bbs.ickey.cn

说到这里,可能有人会有疑惑:如果我只需要将某个i/o口设置成准双向口,其他的i/o口要用作别的功能,那该怎么设置呢。这个很简单,我们只需要按位设置。举个例子,如果我们有这么一个需求,需要将p1.7为开漏,p1.6为强推挽输出,p1.5为高阻输入,其余i/o口均为准双向口,那么我们只需要如下设置即可:

p1m1;p1m0;

还需要提醒一下,虽然stc15f2k60s2单片机的每个i/o口在弱上拉/强推挽输出/开漏模式时,都能承受20ma的灌电流(还是要加限流电阻,如1k,560r,472r等),在强推挽输出时能输出20ma的拉电流(也要加限流电阻),但整个单片机的工作电流推荐不要超过90ma,即从mcu-vcc流入的电流建议不要超过90ma,从mcu-gnd流出电流建议不要超过90ma,整体流出/流出电流建议都不要超过90ma。

另外还需要特别说明的是,虽然stc15f2k60s2单片机的所有io口上电复位后均为准双向/弱上拉模式,但是由于p1.7和p1.6口还可以分别作为外部晶振或时钟电路的引脚xtal1和xtal2,所以,p1.7和p1.6上电复位后的模式不一定就是准双向口/弱上拉模式。当p1.7和p1.6作为外部晶体或时钟电路的引脚xtal1和xtal2使用时,其上电复位后的模式是高阻输入。

接下来现在我们要开始写程序来实现流水灯的效果了。

首先,我们一定要将单片机的头文件加载进来,因为头文件里给我们定义好了单片机所有管脚的所有地址及功能,我们在程序里只需要直接调用就好了。#include\

该语句的功能是让链接器通过头文件里的函数声明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的申明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序。接下来,我们定义好主时钟频率:#definemain_fos

此处是通过使用预处理宏定义命令来定义的系统时钟,简单理解,就是相当于定义了一个常量main_fosc,然后给这个变量赋一个

云汉电子社区bbs.ickey.cn

接下来就开始写主函数的代码了:

此处直接将所有io口都配置成准双向口了,没有单独去配置了。io口工作模式配置好了,就该来配置某一位io口的输出状态了:

之前从原理图上我们知道,要想led亮灯,只需要将该io口的状态设置成低电平模式就好了,那么单片机是如何实现的呢。其实很简单,我们只需要这样写就好了:

云汉电子社区bbs.ickey.cn

p16=0;

这样p16口就会被拉低了,对应的led就会被点亮。同样,如果要让led灭,只需要将p16口设置成高电平就好了,即:p16=1;

其他的io口均是同样的操作,在此就不多说了。

写到这里,很多接触过单片机的人可能会疑惑,为什么我在这里可以直接写p16而不用先定义呢。别的单片机可是必须要

文档评论(0)

艺心论文信息咨询 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体成都艺心风尚电子商务有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510100MA6CA54M2R

1亿VIP精品文档

相关文档