C51笔记-郭天祥-第二章 从点灯大师开始

这篇具有很好参考价值的文章主要介绍了C51笔记-郭天祥-第二章 从点灯大师开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第2章  Keil软件的使用及流水灯设计

 文章来源地址https://www.toymoban.com/news/detail-422858.html

Keil的用法:用Keil建立工程;

            工程配置;

            C51单片机程序软件仿真、单步、全速、断点设置和变量查看等;

 

用一个完整的C51程序操控LED亮灭;

调用库函数实现流水灯;

蜂鸣器与继电器的操作方法,集电极开路与漏极开路的的概念。

学好这一章,是一个很好的开头。

 

  1. Keil工程建立

(1)点击【Project-New uveision Project】建立工程,如图1所示。

   

1  新建工程

(2)指定文件路径,输入工程名,如图2所示。

  

2  文件路径

 

(3)指定单片机型号,这里直接在search栏(如图3所示)输入at89c52,选择即可。

  

3  单片机型号

 

(4)完成上一步后,弹出图4所示的对话框,这里选否,不需要复制启动文件。

  

4  是否复制启动文件

 

(5)单击【File-New】,新建文件,如图6所示。然后,点击保存按钮,保存文件,注意文件扩展名改成.c,如图7所示。

   

5  新建文件

 

 

6  新文件

 

 

7  保存文件

 

(6)Project窗口,展开Target标签,然后右击Source Group 1,选择把文件添加到工程,如图8所示,在图9所示的窗口选择文件,添加,然后关闭窗口,添加后,Project窗口如图10所示,至此,我们完成Keil里的工程创建。

  

8 添加文件

 

 

9 选择添加的文件

 

 

10  添加后的工程结构

 

(7)编辑第一个代码,点亮一个灯。代码如图11所示。

 

11  第一个代码

 

(8)编译,可以单击工具按钮或者用快捷键F7。在设置工具里,选择Output标签,勾选生成HEX文件,用于下载(如图12所示)。

 

12  生成下载文件

 

(9)重新编译,即可生成下载文件。

 

 

13  编译生成下载文件

 

(10)类似的方法,可以点亮其它灯,但是写多条语句有点麻烦,有更好的方法。为了方便,就在原工程里新建一个代码文件,命名为Part2_2.c,并添加到工程里,然后移除之前的代码文件Part2_1.c,因为一个工程里只能有一个主函数。新代码如图14所示。

 

14  新代码

 

(11)编写一个完整点亮第一个灯的代码,如图15所示。

 

 

15  完整点亮一个灯的代码

 

(12)写一个流水灯的代码,计算延时的时间。代码如图16所示。

 

16 流水灯代码

 

(13)计算延时的第一步就是设置时钟的频率,在设置页面,Target页,把时钟设置为11.0592MHz。如图17所示。

 

17 设置时钟频率

 

(14)单击调试按钮,进入调试模式,如图18所示。

 

18 调试模式

 

(15)通过单步执行,可以查看I/O端口电平变化和变量值。先打开Port 1端口,如图19所示。

 

19 打开端口Port1

(16)20是端口电平,单片机上电后I/O口全是1

 

20 端口电平

 

(17)添加要观察的变量名,在Watch1窗口,添加ij。如图21所示,默认初始值都是0.

 

21 添加观测变量

 

(18)Register窗口,注意sec的值就是代码的执行时间。

 

22  寄存器窗口

 

(19)单击单步执行按钮,发现sec的值变成422us ,再单击一次单步执行,完成赋值操作,sec的值变成423us Port1里的最低位对号也去掉了,表示led1=0执行完成。两次sec的值相减,约1us就是执行这条语句的时间。

 

23 单步执行到当前行

 

 

24 单步执行一条语句

 

(20)再次单步执行,进入for语句,发现i的值发生变化,5如图25所示。

 

25 单步执行

 

(21)再次单步执行,发现i的值递减,j的值保持0,这是因为i的值变化一次,j的值循环110次,sec的值也发生了变化。要看这个循环执行多长时间,就需要设置断点。如图26所示,在第一个for语句前和led1=1那行之前单击,设置断点。分两次单击全速运行(Run)按钮,两次的时间相减,约为1s。可以发现,内层变量值为110,外层为多少,就是多少ms

 

26  设置断点

 

总结,调试模式,可以查看端口状态,变量值,运行时间。灵活运用断点,可以快速计算出需要的数据。

 备注,一张张贴图太麻烦,都是wps编辑好,直接复制到这里,算是备份。

(22)用子函数实现延时,代码如图27所示。

 

27  子函数延时

 

(23)调用库函数实现流水灯,代码如图28所示。

 

28 调用库函数实现流水灯

 

总结,这一章,从一个led点亮开始,讨论为何要加上while1),然后又引出for延时,顺带学会用调试工具,观察变量,端口,计算延时。最后又用库函数实现流水灯。

 

到了这里,关于C51笔记-郭天祥-第二章 从点灯大师开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络-笔记-第二章-物理层

    一、第一章——计算机网络概述 二、第二章——物理层 三、第三章——数据链路层 四、第四章——网络层 五、第五章——运输层 六、第六章——应用层 目录 二、第二章——物理层 1、物理层的基本概念 2、物理层下面的传输媒体 (1)光纤、同轴电缆、双绞线、电力线【导

    2024年02月11日
    浏览(45)
  • JS深入学习笔记 - 第二章.类和对象

    3.1面向对象 这里顺带提一句学习JAVA时,老师说的面向对象和面向过程的区别: 面向过程:强调做什么事情,具体什么步骤。举个把大象放进冰箱的例子: 打开冰箱门 把大象放进冰箱 关上冰箱门 面向对象: 强调的是做动作的主体(称之为对象) 冰箱 :打开操作 冰箱 :放

    2024年02月08日
    浏览(51)
  • dx12 龙书第二章学习笔记 -- 矩阵代数

    1.矩阵及其运算 矩阵的运算 :①加②减③标量乘法 ④矩阵乘法: 矩阵乘法要有意义的条件是矩阵A的列数和矩阵B的行数必须相同,所以一般不满足交换律 ⑤转置矩阵: ⑥矩阵行列式:det A 学习行列式的主要目的是:利用它推导出求逆矩阵的公式 方阵A是可逆的,当且仅当det

    2024年02月11日
    浏览(42)
  • 云计算学习笔记——第二章 虚拟化与容器

    1.什么是虚拟化    一种计算机资源管理技术 ,将各种IT资源抽象、转换成平一种形式的技术都是虚拟化技术。 2.作用   通过该技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个计算机可运行不同的操作系统,并且应用程序都可以

    2024年01月22日
    浏览(51)
  • 【UnityShader入门精要学习笔记】第二章(3)章节答疑

    本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 + 个人批注 项目源码 一堆新手会犯的错误 潜在的太监断更,有始无终 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 (PS:章节答疑不是我答,是原作者对一些比较容易产生困惑的地

    2024年02月03日
    浏览(53)
  • 【算法】算法设计与分析 课程笔记 第一章&第二章

    算法的四个性质: 输入、输出、确定性和有穷性 。 1. 常见的时间复杂度 常数阶 O(1) 对数阶 O(log n) 线性阶 O(n) 线性对数阶 O(nlog n) 平方阶 O(n^2) 立方阶 O(n^3) k 次方阶 O(n^k) 指数阶 O(2^n) 注:上面的 log n 均代表 以2为底 的对数。 2. 时间复杂度排序 常见的算法时间复杂度由小到

    2024年02月09日
    浏览(42)
  • 深入Kafka核心设计与实践原理读书笔记第二章

    配置生产者客户端参数及创建相应的生产者实例。 构建待发送的消息。 发送消息 关闭实列 参数说明 bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多个地址中间,号分割,参数默认 空串。 这里要注意

    2023年04月08日
    浏览(78)
  • 西瓜书读书笔记整理(三)—— 第二章 模型评估与选择

    1. 错误率 / 精度 / 误差 错误率(error rate) :分类错误的样本数占样本总数的比例。 精度(accuracy) :分类正确的样本数占样本总数的比例。 误差(error) :学习器的实际预测输出与样本的真实输出质检的差异。 2. 训练误差 / 经验误差 / 泛化误差 **训练误差(training error)

    2024年02月05日
    浏览(48)
  • Rx.NET in Action 第二章学习笔记

    本章节涵盖的内容: 不使用Rx的工作方式 向项目中添加Rx 创建你的第一个Rx应用程序 Rx 的目标是协调和统筹来自社交网络、传感器、用户界面事件等不同来源的基于事件的异步计算。例如,建筑物周围的监控摄像头和移动传感器会在有人靠近建筑物时触发,并从最近的摄像头

    2024年02月12日
    浏览(39)
  • Windows高级调试(学习笔记)-第二章-调试器介绍

    2.1.1 Debugger Types调试器类型 User Mode Deduggers(用户态调试器) 实时调试(Living Debugging)、事后调试(Postmortem Debugging) 三个用户态调试器:cdb.exe、nstd.exe及windbg.exe Kernel Mode Debugger(内核态调试器) 可以分析计算机系统 二个内核态调试器:kd.exe及windbg.exe 2.1.2 Debugger Commands调试器命令 buil

    2024年01月18日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包