单片机实例之跑马灯.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
调试程序窗口 字母C:代码存储空间 D:直接寻址的片内存储空间 I:间接寻址的片内存储空间 X:扩展的外部RAM空间 “数字”:想要查看的地址。 KEIL 软件开发平台 图3-17 代码查询窗口 工程窗口寄存器页 KEIL 软件开发平台 图3-18 工程寄存器窗口 2.各种窗口在程序调试中的用途 程序调试界面 KEIL 软件开发平台 图3-19 程序调试窗口 I/O端口界面 KEIL 软件开发平台 图3-20 硬件查询窗口 I/O口全部打开界面 KEIL 软件开发平台 图3-21 硬件I/0口查询窗口 打开后的Interrupt窗口 KEIL 软件开发平台 图3-22 P3口查询窗口 串口设置 KEIL 软件开发平台 图3-23 串口查询窗口 打开后的串口窗口 KEIL 软件开发平台 图3-24 串口窗口 定时器设置 KEIL 软件开发平台 图3-25 定时器窗口 打开后的定时器1窗口 KEIL 软件开发平台 图3-26 硬件I/0口查询窗口 常用的调试按钮 复位按钮,按下后,所有的系统状态将变成初始状态。 全速运行 进入循环并单步执行 停止全速运行 跳过循环并单步执行 跳出单步执行过程 执行到断点处 KEIL 软件开发平台 图3-27 调试按钮 二、ISP软件的使用 打开下载软件,双击目录下的文件ISPgm.exe,打开软件进入软件使用界面 1.芯片选择:左击界面右面芯片选择窗口的下拉箭标,选择编程芯片的型号。 2.导入hex文件到缓冲区:左击界面上的“Open File”按钮,选择本目录下的hex文件。 3.向芯片写入文件:左击界面上的“Write”按钮,开始编程向芯片写入程序。 4.完成写入编程。 5.退出程序:左击界面右上角的“x”按钮,退出此程序。 KEIL 软件开发平台 任务二 跑马灯 本任务让图3-28中的LED依次点亮 图3-28 LED硬件图 程序设计分析 为了让图3-28所示的LED依次点亮,就是要求从P1口从P1.0至P1.7依次输出低电平,其余引脚都输出高电平,就能让被接在端口的彩灯依次点亮。 从输出的具体的数据来看,第一个LED点亮需要的输出数据,是对应于P1.0的位为0,其余位为1,组合为一个字节时对应的二进制位从高到低为:1111 1110,即十六进制数0xFE;同理,第二个LED点亮对应的数为:1111 1101,化为十六进制数为0xFD。 依次类推,逐次点亮LED所对应的数据为: 1111 1110、1111 1101、1111 1011、1111 0111、 1110 1111、1101 1111、1011 1111、0111 1111。 从这些数据上,可以看出一个规律,就是这些数据中的二进制数0的位置依次往左移动了一位。在C51中,要直接实现数据的这种计算是不容易的。 根据前面的分析,实现任务的思路是:程序开始时,给某一变量赋初始值0xFE,然后每次将数据左移后送入P1口直到所有循环次数输出完毕,再次重复整个过程。根据思路得出的程序框图如图3-29所示。 图3-29 程序流程图 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int void mDelay(unsigned int Delay) { unsigned int i; for(;Delay0;Delay--) { for(i=0;i124;i++) {;} } } void main() { unsigned char OutData=0xfe; for(;;) { P1=OutData; OutData=_crol_(OutData,1); //循环左移 mDelay(1000); /*延时1000 毫秒*/ } } (1)C语言程序: _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作 (相当于8051 NOP 指令) _testbit_ 测试并清零位 (相当于8051 JBC 指令) ORG 0000H START: MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJN

文档评论(0)

zipzoom + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档