PICC支持下的C程序代码中一定要包含pic.h头文件,该文件安装在HT-PIC\include目录下。它是很多头文件的集合,C编译器在pic.h中根据用户选择的芯片自动载入相应的其它头文件,例如用户选择的芯片是PIC16F877,则pic.h会把pic1687x.h载入;例如用户选择的芯片是PIC16F877A,则pic.h会把pic168xa.h载入。载入的头文件中其实是声明芯片的寄存器和一些函数。例如以下程序片段:

static volatile unsigned char PORTA@ 0x05;
static volatile unsigned char PORTB@ 0x06;
static          unsigned char bank1 OPTION@ 0x81;
static          unsigned char bank1 TRISA@0x85;
static          unsigned char bank1 TRISB @0x86;

@符号表示地址的意思。这些声明和PIC汇编中的定义寄存器是差不多的。

例如:

TMR0 EQU 0x01;
PCL EQU 0x02;
STATUS EQU 0X03;

对于特殊功能寄存器的位地址在头文件中也有定义,比如PORTB端口的位地址定义如下:

/*   PORTB bits   */
static volatile bit  RB7  @ (unsigned)&PORTB*8+7;
static volatile bit  RB6  @ (unsigned)&PORTB*8+6;
static volatile bit  RB5  @ (unsigned)&PORTB*8+5;
static volatile bit  RB4  @ (unsigned)&PORTB*8+4;
static volatile bit  RB3  @ (unsigned)&PORTB*8+3;
static volatile bit  RB2  @ (unsigned)&PORTB*8+2;
static volatile bit  RB1  @ (unsigned)&PORTB*8+l;
static volatile bit  RB0  @ (unsigned)&PORTB*8+0;

其中RB7代表PORTB的bit7。
我们可以模仿pic.h文件的定义方法定义RAM中文件寄存器的方法,定义bank0的20h,21h,22h为文件寄存器以及他们的位地址。

假设我们把
20h取名RAM20H,其位地址分别是RAM20H7~RAM20H0
21h取名RAM21H,其位地址分别是RAM21H7~RAM21H0
22h取名RAM22H,其位地址分别是RAM22H7~RAM22H0

定义如下:

static volatile unsigned char RAM20H @0x20;
static volatile unsigned char RAM21H @0x21;
static volatile unsigned char RAM22H @0x22;

RAM20H的位地址定义如下:

static volatile bit RAM20H7 @(unsigned)&RAM20H*8+7;
static volatile bit RAM20H6 @(unsigned)&RAM20H*8+6;
static volatile bit RAM20H5 @(unsigned)&RAM20H*8+5;
static volatile bit RAM20H4 @(unsigned)&RAM20H*8+4;
static volatile bit RAM20H3 @(unsigned)&RAM20H*8+3;
static volatile bit RAM20H2 @(unsigned)&RAM20H*8+2;
static volatile bit RAM20H1 @(unsigned)&RAM20H*8+1;
static volatile bit RAM20H0 @(unsigned)&RAM20H*8+0;

RAH21H和RAH22H的位地址也可以类似定义:

static volatile bit RAM21H7 @(unsigned)&RAM21H*8+7;
static volatile bit RAM21H6 @(unsigned)&RAM21H*8+6;
static volatile bit RAM21H5 @(unsigned)&RAM21H*8+5;
static volatile bit RAM21H4 @(unsigned)&RAM21H*8+4;
static volatile bit RAM21H3 @(unsigned)&RAM21H*8+3;
static volatile bit RAM21H2 @(unsigned)&RAM21H*8+2;
static volatile bit RAM21H1 @(unsigned)&RAM21H*8+1;
static volatile bit RAM21H0 @(unsigned)&RAM21H*8+0;
static volatile bit RAM22H7 @(unsigned)&RAM22H*8+7;
static volatile bit RAM22H6 @(unsigned)&RAM22H*8+6;
static volatile bit RAM22H5 @(unsigned)&RAM22H*8+5;
static volatile bit RAM22H4 @(unsigned)&RAM22H*8+4;
static volatile bit RAM22H3 @(unsigned)&RAM22H*8+3;
static volatile bit RAM22H2 @(unsigned)&RAM22H*8+2;
static volatile bit RAM22H1 @(unsigned)&RAM22H*8+1;
static volatile bit RAM22H0 @(unsigned)&RAM22H*8+0;

将这些定义加入到相应的头文件中,或者直接写在源程序中,这样就可以直接对通过变量RAM20H对bank0的20h单元进行字节操作,可以通过RAM20H7~RAM20H0对bank0的20h单元进行位操作。例如:

#include<pic.h>
main()
{
RAM20H=0x20;   //把0x20赋值给20h
RAM21H=0x21;   //把0x21赋值给21h
RAM22H= RAM20H+ RAM21H;while(1) {  ;   }}

以上程序假设RAM20H、RAM21H和RAM22H的声明已经加入到相应的头文件中,那么在源程序中就可以直接使用。

PIC单片机入门_PICC头文件介绍相关推荐

  1. PIC单片机入门_PICC的指向RAM的指针

    问题: 将30h,31h,32h单元中最大的数放入40h. 利用指向RAM的指针进行编程如下: <span style="font-size:18px;">#inclu ...

  2. 【VSCode PlatformIO】STC15系列单片机开发专用头文件内容分享

    [VSCode PlatformIO]STC15系列单片机开发专用头文件内容分享 如果使用VSCode PlatformIO开发STC单片机,所提供的型号的头文件很有限,除非自己添加,像STC系列单片 ...

  3. PIC单片机入门教程(二)—— 安装集成开发环境(MPLAB X IDE)

    PIC单片机入门教程(二)-- 安装集成开发环境(MPLAB X IDE) 教程中使用的电脑运行Windows 10 专业版 64位系统 1.下载 MPLAB X IDE v4.05 历史版本:htt ...

  4. PIC单片机入门_C语言编程技术

    1.为什么也是C语言? 用C 语言来开发单片机系统软件最大的好处是编写代码效率高.软件调试直观.维护升级方便.代码的重复利用率高等,因此C 语言编程在单片机系统设计中越来越广泛的运用.PIC 单片机的 ...

  5. PIC单片机入门_输入输出端口详解

    1.引言: PIC单片机引脚图: 在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA.RB和RC:40引脚型号单片机有5个 I/O端口,分别是RA.RB.RC.RD和R ...

  6. PIC单片机入门_指令系统

    1.前文回顾 前面学习了PIC单片机的系统框架,也介绍了程序存储器.数据存储器的组织形式.这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址.直接寻址.其实还有几个比较重要的寻址方式,PC相对寻 ...

  7. linux非标准头文件,Linux学习:unix的标准化的实现(Linux中各种限制-数据类型-各种标准化头文件介绍)...

    作为Linux的前身,unix标准化是十分重要的.我在这里挑几个重要的点说明. 1:Linux中各种限制.Linux中限制有编译时限制和运行时限制,另外有一些限制是由于我们的实现不同而不同,因此我们需 ...

  8. NSIS 头文件介绍_FileFunc.nsh(1)

    文件函数,顾名思义就是处理文件用的函数.使用这些文件处理函数前,必须先包含头文件FileFunc.nsh.该头文件目前包含如下一些函数:Locate.GetSize.DriveSpace.GetDri ...

  9. NSIS 头文件介绍_WordFunc.nsh(3)

    文字函数,顾名思义就是处理字符串的函数.使用这些字符串函数前,必须先包含头文件WordFunc.nsh.该头文件目前包含如下一些函数:WordFind.WordFind2X.WordFind3X.Wo ...

最新文章

  1. 在HTML文件的表单中添加{%csrf_token%}便可以解决问题
  2. 公司网络推广教你网站初期SEO优化该如何做?
  3. boost::fusion::result_of::as_vector用法的测试程序
  4. 我的世界java加入更多床_《我的世界》床的N种玩法,教你如何更快地入眠
  5. php tea 算法 源码,PHP教程:TEA算法实现
  6. ASP.NET AJAX入门系列
  7. 如何查看mysql数据库的端口
  8. LINUX下载编译OpenAL Soft
  9. (转)详解Windows Hash
  10. Java教程(一)---JDK和Maven安装配置
  11. 幸运大转盘抽奖逻辑实现
  12. Unity小游戏算法分析与实现(Unity+XR+游戏开发+算法+MVC+斗地主+耳轮跳+见缝插针+王者荣耀+绝地求生+立钻哥哥+==)
  13. xubuntu切换回到ubuntu登陆界面
  14. openresty ngx_lua请求响应
  15. Java中的String类为什么不可变
  16. 一本看到技巧又能保持阳光心态励志书(来自苏鹏的推荐)——《程序员羊皮卷》连载(4)
  17. 在cmd中使用python3指令打开.py文件无响应,也没有报错的问题
  18. 【模板题】欧拉函数与线性筛求欧拉函数
  19. linux sd卡驱动教程,Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
  20. QT图形界面在工业数据采集显示系统的应用

热门文章

  1. MSN即将退役,即时通讯开放平台成趋势
  2. linux-squirrel
  3. IT职场最受欢迎的十大晋升秘决
  4. 专题之六:ckk拉链厂信息化实施记
  5. 同步异步网络搜集到的比喻
  6. SQLServer2008 Transact_SQL语言基础实例
  7. 不推荐重写service
  8. RecSys 2016总结
  9. SQL Server事务回滚对自增键的影响
  10. Python学习-基础篇4 模块与包与常用模块