单片机c语言例子_单片机c语言例子及解析

单片机c语言例子_单片机c语言例子及解析51单片机C语言程序100例分析(1)IO+C语言+头文件51单片机C语言程序100例分析(1)IO+C语言+头文件\\\插播一条:文章末尾有惊喜哟~///P1=0xfe;//P1=11111110B,即P1.0输出低电平}分析:通过这短短的几行代码就能够让51

51单片机C语言程序100例分析(1)IO+C语言+头文件
  51单片机C语言程序100例分析(1)IO+C语言+头文件

  \\\插播一条:文章末尾有惊喜哟~///

  P1=0xfe;//P1=11111110B,即P1.0输出低电平}

  分析:通过这短短的几行代码就能够让51单片机的P1.0引脚输出低电平,首先#include<>>这句代码是包含51单片机寄存器定义的头文件,51单片机是寄存器和IO统一编址的,所以你往相应的寄存器中写1就会在对应引脚输出高电平,写0就会输出低电平,我们知道51共32个引脚作为IO端使用,所以只须要四个寄存器(一个寄存器是8位,这取决于数据总线),翻开头文件就会发现P0和0X80这个地址绑定了,所以编程的实质就是往内存中写值,又由于单片机是数字器件,所以只能读懂二进制,为什么是二进制?由于0对应低电平0V,1对应高电平5V足够了,没有第三种明确的状态。注意加粗的地方,要细品。单片机是控制器件而不是驱动器件,由于输出电流很小,不足以驱动某些须要大电流的外设。

  //实例2:用单片机控制一个灯闪烁:认识单片机的工作频次

  #include //包含单片机寄存器的头文件

  /****************************************

  函数功能:延时一段时长

  *****************************************/

  void delay(void) //两个void意思分别为没需返回值,没有参数传递

  {

  unsigned int i; //定义没符号整数,最大取值范围65535

  for(i=0;i/做20000次空循环

  ; //什么也不做,等待一个机器周期

  }

  /*******************************************************

  函数功能:主函数(C语言规定必需有也只能有1个主函数)

  ********************************************************/

  void main(void)

  {

  while(1) //没限循环

  {

  P1=0xfe; //P1=11111110B,P1.0输出低电平

  delay(); //延时一段时长

  P1=0xff; //P1=11111111B,P1.0输出高电平

  delay(); //延时一段时长

  }

  }

  分析:写程序是自下而上的过程,而读程序是自上而下的过程,所以编写程序和读程序的流程是不同的。从零初始编写程序一般要先构思,再走一步看一步,当然我更喜爱修改代码以完成目标,所以提前准备典型实例能够大大提高编程效率。对于读代码是很常见的,准备典型案例的时候就要读懂,毕竟读懂是修改的前提,事实证明有些代码读着都费力,自己是万万写不出来的,所以在不适宜的时长选择发挥主观能动性就是愚昧的表现,你花你个月的时长未必能到达写代码的那个人的水平,但我看懂加修改用不了多久,剩下的时长我又分析的大量的案例,51的功能也进一步把握,这难道不香吗?也不说不提倡创造,而是不提倡闭门造车,创造力应该用在人类没有突破的地方,独有更多的人到达那个阶段才更有希望。每个人的人生经历都不一样,所以每个人都是一种可能,别人做不到不代表你做不到,他可能就是少了一点必要的经历,但只有可能多了,总有一个人会成功推进。

  读程序能够直接看主函数,看到未定义的函数和变量再往外找,事实上编程也能够这样,先做方案再找人。这个代码没什么好说的,还是在围绕着引脚玩。在我的上一篇文章中,我说编程就像做菜一样,没看过的能够先去看一下,这里的头文件就是菜库,4个IO端口只占了其中的4个菜种。

  //实例3:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能

  #include//包含单片机寄存器的头文件

  /*******************************************************

  函数功能:主函数(C语言规定必需有也只能有1个主函数)

  ********************************************************/

  void main(void)

  {

  while(1) //没限循环

  {

  P1=0xff; //P1=11111111B,熄灭LED

  P0=P1; // 将P1口状态送入P0口

  P2=P1; // 将P1口状态送入P2口

  P3=P1; // 将P1口状态送入P3口

  }

  }

  分析:内存的值只有没有代码去变更就会保持。这里关于端口的四个菜都上齐了,IO端口当然能够输写也能够输出。

  //实例4:使用P3口流水点亮8位LED

  #include //包含单片机寄存器的头文件

  /****************************************

  函数功能:延时一段时长

  *****************************************/

  void delay(void)

  {

  unsigned char i,j;

  for(i=0;i

  for(j=0;j

  ;

  }

  /*******************************************************

  函数功能:主函数

  ********************************************************/

  void main(void)

  {

  while(1)

  {

  P3=0xfe;//第一个灯亮

  delay();//调用延时函数

  P3=0xfd;//第二个灯亮

  delay();//调用延时函数

  P3=0xfb;//第三个灯亮

  delay();//调用延时函数

  P3=0xf7;//第四个灯亮

  delay();//调用延时函数

  P3=0xef;//第五个灯亮

  delay();//调用延时函数

  P3=0xdf;//第六个灯亮

  delay();//调用延时函数

  P3=0xbf;//第七个灯亮

  delay();//调用延时函数

  P3=0x7f;//第八个灯亮

  delay();//调用延时函数

  }

  }

  分析:注意二进制和16进制的转换就好啦,另外这里的例子都没有波及到位操作,不要着急,下面会有的。

  //实例5:通过对P3口地址的操作流水点亮8位LED

  #include //包含单片机寄存器的头文件

  sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机

  //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作

  /****************************************

  函数功能:延时一段时长

  *****************************************/

  void delay(void)

  {

  unsigned char i,j;

  for(i=0;i

  for(j=0;j

  ; //利用循环等待若干机器周期,从而延时一段时长

  }

  /*****************************************

  函数功能:主函数

  ******************************************/

  void main(void)

  {

  while(1)

  {

  x=0xfe; //第一个灯亮

  delay(); //调用延时函数

  x=0xfd; //第二个灯亮

  delay(); //调用延时函数

  x=0xfb; //第三个灯亮

  delay(); //调用延时函数

  x=0xf7; //第四个灯亮

  delay(); //调用延时函数

  x=0xef; //第五个灯亮

  delay(); //调用延时函数

  x=0xdf; //第六个灯亮

  delay(); //调用延时函数

  x=0xbf; //第七个灯亮

  delay(); //调用延时函数

  x=0x7f; //第八个灯亮

  delay(); //调用延时函数

  }

  }

  分析:sfr还能够在头文件之外使用哦,虽然意义不大,但是你又学到了一个操作不是吗?这里能够不用包含头文件。

  //实例6:用不同数据类型控制灯闪烁时长

  如何使用 KEIL下载 HEX文件?

  熟悉 KEIL的人都知道,KEIL下载时使用 axf格式的文件,里面不仅有代码指令信息,也包含了调试信息,假如C代码和汇编代码之间的对应关系(这些信息不会下载到单片机中,不然单片机可能装不下,哈哈),地址信息等。

  事实上,KEIL也能下载 HEX文件,同时也能保存数据为HEX文件。

  很多道友可能会问,既然有 axf文件,为啥还要学 HEX文件下载呢?我们知道,公司为了保密或者其他一些理由,不会给你源代码编译后再下载,还有一种可能是单片机有两份程序,BOOT_LOADER程序可能是别人编写与维护的,只给你 HEX文件,假如说你掌握了 KEIL下载方式,那么就不须要找其他工具下载了,方便快速(还有一种情况,代码使用 GCC编译,文件格式为 elf)。

  所以,掌握 KEIL下载 HEX文件的方法还是很重要的。

  那么今天鱼鹰就教你如何使用 KEIL下载 HEX文件到单片机中。

  首先,复制一个 STM32工程模板(假如没有,去鱼鹰的后台sigusoft关键字)。

  翻动工程,看看有没有勾选 HEX文件生成功能:

  勾选这个只是为了让工程生成一个 HEX文件,方便我们做测试,在实际 HEX文件下载过程中,不须要勾选这个。

  最后生成的文件的文件名你会发现和axf文件名是一致的,只是后缀不同,变成了 hex:

  所以你在工程目录下能够搜到 rtthread-stm32.hex文件,为了接下来更好的进行说明,鱼鹰将这个文件名修改为 rtthread.hex,这样就不会认为我们接下来下载的是 axf文件了。

  下载 HEX文件最关键的两点来了:

  最后选择适宜的调试器,配置好下载 axf文件时的相关参数(即能用调试器正常下载 axf文件即可)。

  最后按钮即可完成下载。

  是不是很简略?

  假如说经常须要下载hex文件,每次要新建一个工程、翻动工程、然后再修改参数,还是挺麻烦的,为了方便起见,我们能够为常用工程添加一个下载的宗旨,即多宗旨工程,类似这种:

  这样一来,只有事先设置好,切换宗旨后,即可快捷完成下载,方便快速。

  什么,你还不知道怎么设置多宗旨工程?看这里:

  《STM32工程模板建设之Simu宗旨》

  《STM32工程模板建设之RAM宗旨》

  好了,鱼鹰再说说怎么保存 FLASH或者 RAM数据的问题。

  有些时候,FLASH或 RAM保存了很多参数或者代码,假如通过串口助手之类的工具打印出来再保存不免有些麻烦,事实上 KEIL有命令能够帮助你快捷将一块数据保存为 HEX文件,假如鱼鹰想保存从地址 0x0800 0000初始,大小为 0xC00的数据,那么只有在 KEIL命令行输写以下命令即可完成保存,方便快速,你值得拥有:

  当然,你也能够在该命令后增加以下参数(后面加一个逗号再跟这个参数)以实现不同的访问方式,是不是很贴心啊。

  假如命令执行正确的话(上图表示命令已执行正确,假如不正确会报错的),你应该就能在工程目录下找到你所需的 data.hex文件了,然后用 HEX文件查看工具即可轻松查看,再也不须要串口打印啦!

  彩蛋:最近有同学跟我要单片机的资料,我特意花几个月时间,总结了我10年产品研发经验,资料包几乎覆盖了C语言、单片机、模电数电、原理图和PCB设计、单片机高级编程等等,非常适合初学者入门和进阶。除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,不是市面上打包卖的那种课程,我认为教程多未必是好事,10年前我自学快,除了自身执行力以外,还有就是教程少。不要害羞做伸手党,等你一个小红点。后期我也会组建一些纯技术交流的小圈子,让大家能认识更多的大佬,有个好的圈子,你对行业的认知一定是最前沿的。单片机c语言例子_单片机c语言例子及解析单片机c语言例子_单片机c语言例子及解析单片机c语言例子_单片机c语言例子及解析单片机c语言例子_单片机c语言例子及解析单片机c语言例子_单片机c语言例子及解析单片机c语言例子_单片机c语言例子及解析

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/92034.html

(0)
上一篇 2024年 5月 30日 下午10:28
下一篇 2024年 5月 30日 下午10:42

相关推荐

  • p戏是什么意思_拍戏cp是什么意思

    p戏是什么意思_拍戏cp是什么意思cp是什么意思【精品多篇】【前言】cp是什么意思【精品多篇】为好范文网的会员投稿推荐,但愿对你的学习工作带来帮助。cp的意思 篇一CP是英文Coupling的缩写,日文为カップリング 或者カプ,表示人物配对关系。本意是指有恋爱关系的ACGN同人配对,近年来在其他场

    2024年 6月 1日
  • 哈夫曼编码求平均码长怎么求_哈夫曼编码的平均码长怎么求

    哈夫曼编码求平均码长怎么求_哈夫曼编码的平均码长怎么求哈夫曼编码哈夫曼编码树首先要知道什么是编码:就像上图一样,左边是编码,右边是字符,所以左边到右边的变换就是解码,右边到左边的变换就是编码。但这是有8位,所以只能表示128位字符,这对英语是够用的了,但是对其他语言例如汉语,日语确实远远不够用,那该怎么办呢?此时就有了多字节编

    2024年 5月 23日
  • 电脑cpu测试工具_电脑cpu测试工具有哪些

    电脑cpu测试工具_电脑cpu测试工具有哪些双11买电脑必装!超全实用电脑性能检测工具,建议收藏!本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:值友已删除想必不少人都打算趁着这时候买新电脑。我们在选购电脑的时候通常都会看产品详情,了解各种配置参数,不过新买

    2024年 5月 29日
  • 哈夫曼树的哈夫曼编码_哈夫曼树的哈夫曼编码唯一吗

    哈夫曼树的哈夫曼编码_哈夫曼树的哈夫曼编码唯一吗[数据结构]哈夫曼树&K叉哈夫曼树&范式哈夫曼编码&编码位数的限制方法最近在编写JPEG编解码器,学习了有关哈夫曼树,哈夫曼编码的知识,故用此篇文章记录。哈夫曼树是一种特别经典的树,又称最优二叉树。哈夫曼树是带权路径长度达到最小的树,权值大的离根近,其最经典的应用就是哈夫曼

    2024年 5月 25日
  • spirit战队最新情况_spirit 战队

    spirit战队最新情况_spirit 战队CSGO战队Spirit战队资料 Spirit战队成员介绍CSGO战队Spirit如今正在享受着自己CSGO史上最美好的时光,但和NIP、fnatic等豪门相比,他们并没有出道即巅峰的美好回忆。如果说P

    2024年 5月 29日
  • struts2框架执行流程

    struts2框架执行流程struts 源码解析ActionServlet 的执行流程•Tomcat 及封装配置2 // web.xml 文件的 标签,配置则服务器启动则创建ActionServlet,否则访问时创建Tomcat 一启动就将 web.xml 文件读取到内存,读取 标签创建出中央控制器

    激活谷笔记 2024年 5月 19日
  • 个人信息管理系统设计_员工信息管理系统设计

    个人信息管理系统设计_员工信息管理系统设计计算机专业—毕业设计题目大全,可定制,讲解源码。修复bug一、ASP类计算机专业毕业设计题目1.网络留言薄2.客户管理系统3.多媒体积件管理库的开发与应用4.基于WEB的多媒体素材管理库的开发与应用5.网络教学软件中的教学设计与应用6.小型教育网站的开发与建设7.基于图

    激活谷笔记 2024年 5月 10日
  • spirit_spiritual

    spirit_spiritualspiritual是什么意思_spiritual用英语怎么说_spiritual的翻译_spiritual翻译成_spiritual的中文意思_spiritual怎么读,spiritual的读音,spiritual的用法

    激活谷笔记 2024年 5月 28日
  • gs4plus油耗实测_gs4plus油耗多少

    gs4plus油耗实测_gs4plus油耗多少【图】传祺GS4 PLUS促销优惠1万 可试乘试驾 详询:4008687235促销时间 2024-5-09 – 2024-5-11    广汽传祺重庆永高店厂家直营旗舰店,全系无忧购车,超值好礼等你来!传祺首选重庆永高店(十年

    2024年 6月 2日
  • l298n电机驱动模块pwm调速接线图_l298n电机驱动模块pwm调速程序

    l298n电机驱动模块pwm调速接线图_l298n电机驱动模块pwm调速程序L298N模块驱动电机(实现pwm调速)### 回答1:L298N 模块是一种常用的驱动直流电机的电路模块,它可以帮助电机控制电路实现方向和速度的控制。在使用 L298N 模块控制电机时,可以使用 PWM 调节

    激活谷笔记 2024年 5月 20日
  • 二叉排序树是什么意思_二叉排序树是用来干什么的

    二叉排序树是什么意思_二叉排序树是用来干什么的二叉搜索树是什么二叉搜索树又称二叉查找树或二叉排序树,一棵二叉搜索树是以二叉树来组织的,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象;一般地,除了key和卫星数据之外,每个结点还包含属性lchild、rchild和parent。二叉查找树(Binary Search T

    2024年 5月 27日
  • bandizip是什么软件危险吗_breezip是什么软件可以卸载吗

    bandizip是什么软件危险吗_breezip是什么软件可以卸载吗告别流氓垃圾压缩软件,这3款良心压缩软件,和你分享。"“解压老出错?”“文件有问题解压不出来?”“压缩包提示已损坏?”很多时候我们下载了压缩软件,在解压的时候会遇到各种各样的问题,大多数人的第一反应是压缩包有问题,其实不然

    2024年 5月 9日
关注微信