设为首页 - 加入收藏
广告 1000x90
您的当前位置:澳门金冠 > 教程 > 编程教程 > 正文

PIC单片机C言语编程教程(1)

来源:未知 编辑:admin 时间:2018-12-01

  时在此列表中还显示了对应的可施行法式名,请留意在这里都是“PICC.EXE”。用鼠标别离

  东西挂接完成后,在成立项目时能够选择言语东西为“HI-TECH PICC”,具体步调能够

  虽然变量地点的 bank 定位必需由编程员本人决定,但在编写原法式时进行变量存取操

  实现函数(子法式),出格留意 main 函数必需是一个没有前往的死轮回。

  推,每个字节有 8 个位地址。编制位地址的意义纯粹是为了编译器最初发生汇编级位操作指

  在法式的最前面用#include 预处置指令援用包含头文件,此中必需包含一个编译器供给的“pic.h”文件,实现单片机内特殊寄放器和其它特殊符号的声明;

  址,用 PIC 汇编指令实现的效率最高,但这时不克不及呈现函数递归挪用。PICC 在编译时会严

  既然所有的局部变量将占用 bank0 的存储空间,因而用户本人定位在 bank0 内的变量字

  源十分丰硕,运算能力强大,因而法式员在写 PC 机的使用法式时几乎不消关怀编译后的可

  本章将引见 Hitech-PICC 编译器的一些根基概念,因为篇幅所限将不涉及 C 言语的尺度

  在单片机中要用 4 个字节存储。为了节约单片机的数据空间和法式空间,PICC 特地供给了

  用的 C 言语法式。这就是为什么前面所有章节中的的示范代码全数用根本的汇编指令实现

  言语来开辟单片机系统软件最大的益处是编写代码效率高、软件调试直观、维护升级便利、

  以彼此堆叠。操纵这一手艺后所有的动态局部变量都能够按已知的固定地址地进行间接寻

  的C 法式最环节的一点是单片机内的资本很是无限,节制的及时性要求又很高,因而,如

  器和毗连器,用户要留意的是 C 言语原法式扩展名用“.c”,汇编原法式用“.as”即可。

  单片机的位操作指令长短常高效的。因而,PICC 在编译原代码时只需有可能,对通俗变量的操作也将以最简单的位操作指令来实现。假设一个字节变量

  一般节制系统中关怀的是单片机的运转效率,因而在精度可以或许满足的前提下尽量选择

  当法式中把非位变量进行强制类型转换成位变量时,要留意编译器只对通俗变量的最低

  为了使编译器发生最高效的机械码,PICC 把单片机中数据寄放器的 bank 问题交由编程

  节数,然后为每个局部变量分派一个固定的地址,且按挪用嵌套的条理关系各变量的地址可

  在此列出几个次要的针对 PIC 单片机的 C 编译器相关毗连网址,供读者参考:

  的工程师群体中获得普遍承认。其正式完全版软件需要购买,但在其网站上无限时的试用版

  也是 24 位长,但能够在法式编译选项当选择 double 型浮点数为 32 位,以提高计较的精度。

  原代码调试。利用 MPLAB-IDE 内的调试东西 ICE2000、ICD2 和软件模仿器都能够实现原

  的缘由,但愿籍此能使读者对PIC单片机的指令系统和硬件资本有深切领会,在这根本之

  单片机的 C 言语编译器,但良多专业的第三方公司有浩繁支撑 PIC 单片机的 C 言语编译器

  代码编写过程中须不时处处留意所编写语句的效率,而若是没有对 PIC 单片机的内核布局、

  高。在法式中定义的 float 型尺度浮点数的长度固定为 24 位,双精度 double 型浮点数一般

  即所有只对变量中某一位操作的 C 语句代码将被间接编译成汇编的位操作指令。虽然编程

  PICC 中描述浮点数是以 IEEE-754 尺度格局实现的。此尺度下定义的浮点数为 32 位长,

  态笼盖”的手艺以实现对C言语函数中的局部变量分派固定的地址空间。经如许处置后产

  时能够不消太关怀,但若是能领会编译器是若何工作的,那将有助于指导我们写出高效简介

  令而用,对编程人员来说根基能够不管。但若能领会位变量的位地址编址体例就能够在最初

  操作、号令按键处置和液晶显示驱动等分歧的功能别离在分歧的独立的原法式模块中实现。

  本书环绕中档系列 PIC 单片机来展开会商,Microchip 公司本人没有针对中低档系列 PIC

  为 PIC 单片机特殊的仓库布局。在前面引见 PIC 单片机架构时曾经细致申明了 PIC 单片机

  采用了一种被叫做“静态笼盖”的手艺来实现局部变量的地址分派。其大致的道理是在编译

  PICC 对整个数据存储空间实行位编址,0x000 单位的第 0 位是位地址 0x0000,以此后

  果没有对单片机系统布局和硬件资本作详尽的领会,以笔者的鄙意认为是无法写出高质量实

  入已有的库文件或曾经编译的方针文件。最常见的是只插手 C 原法式。用 C 言语编程的好

  毗连器告诉你总共有 0x12C(300)个字节预备放到 bank1 中但 bank1 容量不敷。明显,只

  生出的机械代码效率很高,按笔者现实利用的体味,现代码量跨越 4K 字后,C 言语编译出

  处是能够实现模块化编程。法式编写者应尽量把彼此独立的节制使命用多个独立的 C 原法式文件实

  合型高级变量,这和尺度的 C 言语所支撑的高级变量类型没有什么区别。例如:

  在有些使用中需要将一组位变量放在统一个字节中以便需要时一次性地进行读写,这一

  果没有出格指明,所定义的变量将被定位在 bank0,例如下面所定义的这些变量:

  除了 bank0 内的变量声明时不需特殊处置外,定义在其它 bank 内的变量前面必需加上

  供用户评估。别的,Hitech 公司针对泛博 PIC 的业余快乐喜爱者和初学者还供给了完全免费的学

  PIC 单片机的 C 言语原法式根基框架基于 PICC 编译情况编写 PIC 单片机法式的根基体例和尺度 C 法式雷同,法式一般由以

  法式调试时便利地查找本人所定义的位变量,若是一个位变量 flag1 被编址为 0x123,那么

  声明本模块内被挪用的所有函数的类型,PICC 将对所挪用的函数进行严酷的类型婚配查抄;

  PICC 编译器能够间接挂接在 MPLAB-IDE 集成开辟平台下,实现一体化的编译毗连和

  一种长度为 24 位的截短型浮点数,它丧失了浮点数的一点精度,但浮点运算的效率得以提

  准的 ANSI-C 做法是判整个变量值能否为 0。别的,函数能够前往一个位变量,现实上此返

  bit 型位变量只能是全局的或静态的。PICC 将把定位在统一 bank 内的 8 个位变量归并

  殊功能寄放器区域,在 C 言语中某一 bank 内定义的变量字节总数不克不及跨越可用 RAM 字节

  定的汇编指令。为避免屡次的 bank 切换以提高代码效率,尽量把实现统一使命的变量定位

  代码的反复操纵率高、便于跨平台的代码移植等等,因而 C 言语编程在单片机系统设想中已获得越

  但在单片机上用 C 言语写法式和在 PC 机上写法式绝对不克不及简单等同。此刻的 PC 机资

  中的仓库是硬件实现的,其深度已随芯片而固定,无法实现需要大量仓库操作的递归算法;

  器编译原代码时扫描整个法式中函数挪用的嵌套关系和条理,算出每个函数中的局部变量字

  PIC单片机的位操作汇编指令高效实现。基于此,位变量不克不及是局部主动型变量,也无法将其组合成复合型

  员本人办理,因而在定义用户变量时你必需本人决定这些变量具体放在哪一个 bank 中。如

  有把一部门本来定位在 bank1 中的变量改放到其它 bank 中才能处理此问题。

  来越普遍的使用。针对 PIC 单片机的软件开辟,同样能够用 C 言语实现。

  PICC 编译器,它不变靠得住,编译生成的代码效率高,在用 PIC 单片机进行系统设想和开辟

  作前无需再特地编写设定 bank 的指令。C 编译器会按照所操作的对象主动生成对应 bank 设

  施行代码在运转过程中需要占用几多系统资本,也根基不消担忧运转效率有多高。写单片机

  点击选中这三项可施行文件,察看对话框下面“Location”一栏中显示的文件路径,用

  中档系列 PIC 单片机数据寄放器的一个 bank 大小为 128 字节,刨去前面若干字节的特

  的片上资本而最合用于单片机进修入门,因而笔者建议感乐趣的读者可从 PICC-Lite 入手掌

  习版 PICC-Lite 编译器套件,它的利用体例和完全版不异,只是支撑的 PIC 单片机型号限制

  位做判别:若是最低位是 0,则转换成位变量 0;若是最低位是 1,则转换成位变量 1。而标

  PICC 把所有函数内部定义的 auto 型局部变量放在 bank0。为节约贵重的存储空间,它

  语法和根本学问引见,由于在这些方面都有大量的册本能够参考。重点凸起针对PIC单片

  别的在 PIC 单片机中实现软件仓库的效率也不是很高,为此,PICC 编译器采用一种叫做“静

  起首必需在你的计较机中安装PICC编译器,无论是完全版仍是进修版都能够和

  际上 PICC.EXE 只是一个安排办理法式,它会按照所输入的文件扩展名主动挪用对应的编译

  在统一个 bank 内;对分歧 bank 内的变量进行读写操作时也尽量把位于不异 bank 内的变量

  图 11-2 列出的是笔者成立的一个项目中所有 C 原法式模块,此中主控、数值计较、I2C

  MPLAB-IDE后台挪用的编译器所用到的所有可施行文件,此中有汇编编译器“PICC Assembler”、C 原法式编译器“PICC Compiler”和毗连定位法式“PICC Linker”。同

  参阅第三章 3.1.3 节,此处不再反复。项目成立完成后能够插手 C 或汇编原法式,也能够加

  PICC 根基上合适 ANSI 尺度,除了一点:它不支撑函数的递归挪用。其次要缘由是因

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

网站地图 | xml地图

Copyright © 2012-2018 澳门金冠  版权所有

Top