历史上的今天
返回首页

历史上的今天

今天是:2025年07月30日(星期三)

正在发生

2018年07月30日 | PIC单片机入门_PICC头文件介绍

2018-07-30 来源:eefocus

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

main()

{  

RAM20H=0x20;   //把0x20赋值给20h

RAM21H=0x21;   //把0x21赋值给21h

RAM22H= RAM20H+ RAM21H;

   

while(1) {  ;   }

 

}

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


推荐阅读

史海拾趣

3M公司的发展小趣事
  1. 起源和早期发展: 3M公司(Minnesota Mining and Manufacturing Company)创立于1902年,在美国明尼苏达州成立。最初,公司主要从事矿石开采和研磨业务,以及生产砂纸和磨粉。在早期几十年里,3M致力于技术创新和产品开发,包括防水砂纸、透明胶带等产品,为公司奠定了良好的发展基础。

  2. 科技创新和产品多样化: 20世纪中叶,3M公司持续推动科技创新,不断扩展产品线。其中,最著名的是1950年代推出的可粘贴便签纸(Post-it)和1960年代推出的微型胶带(Scotch-Brite),这些产品成为公司的标志性产品,极大地推动了其业务的发展。

  3. 国际化战略和全球扩张: 20世纪后半叶,3M公司加速了国际化战略,并在全球范围内扩张业务。通过收购和合作,公司进入了新的市场和领域,如医疗保健、电子、汽车、能源等。3M在全球建立了广泛的生产基地和研发中心,成为一家跨国企业。

  4. 持续创新和技术领导: 3M公司一直致力于持续创新和技术领导,投入大量资金用于研发和技术创新。公司不断推出新产品和解决方案,满足市场需求并保持竞争优势。特别是在电子领域,3M推出了许多创新产品,如电子材料、封装材料、导热材料等,为电子行业提供了关键的解决方案。

  5. 可持续发展和社会责任: 3M公司致力于可持续发展和社会责任,在全球范围内推动环保和社会公益事业。公司制定了一系列环保政策和计划,努力降低能源消耗、减少废物排放,并积极参与社区建设和公益活动,为社会做出积极贡献。

Harvatek Corporation公司的发展小趣事

背景:作为电子显示领域的佼佼者,Hantronix不仅关注自身的发展,还积极履行社会责任,为行业的进步和发展做出贡献。

发展:Hantronix通过技术创新和产品升级,推动了电子显示技术的进步和应用范围的扩大。同时,公司还积极参与行业标准的制定和推广工作,为行业的规范化、标准化发展贡献了自己的力量。此外,Hantronix还注重人才培养和团队建设,为行业培养了一大批高素质的专业人才。

以上五个故事虽然基于概括性描述,但均反映了Hantronix公司在电子行业中的发展历程、技术创新、市场拓展、品质保证以及行业影响等方面的实际情况。

ARBOR公司的发展小趣事

随着环保意识的日益增强,ARBOR公司积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色电子产品。这些产品不仅具有优异的性能,还符合环保标准,得到了消费者的广泛认可。ARBOR公司的绿色环保理念也为整个电子行业树立了榜样。

Hendon Semiconductors公司的发展小趣事

Hendon Semiconductors在能源管理和照明控制领域也有着显著的成就。公司开发了一系列高效、可靠的能源管理解决方案和照明控制产品,广泛应用于智能家居、商业建筑和工业自动化等领域。这些解决方案不仅帮助客户降低了能耗和运营成本,还提高了能源使用效率和环境可持续性。通过不断创新和优化产品设计,Hendon Semiconductors在能源管理和照明控制市场上赢得了广泛的认可。

Hirosugi-Keiki公司的发展小趣事

随着电子产品的不断小型化和集成化,表面贴装技术(SMT)成为了电子制造行业的重要趋势。Hendon Semiconductors紧跟这一趋势,不断提升其表面贴装和精密制造能力。公司引进了先进的生产设备和测试仪器,确保产品的质量和可靠性。同时,Hendon Semiconductors还加强了对生产过程的监控和管理,通过严格的质量控制体系确保每一片电路板都符合客户的要求。

AMERICASEMI [America Semiconductor, LLC]公司的发展小趣事

面对日益严峻的环境问题和资源压力,AMERICASEMI积极响应可持续发展号召,推动绿色生产和技术创新。公司采用环保材料和节能技术,降低生产过程中的能耗和排放。同时,AMERICASEMI还关注未来技术的发展趋势,加大在人工智能、物联网等领域的研发投入,为公司的未来发展奠定坚实的基础。

这五个故事展示了AMERICASEMI在电子行业中的发展历程和取得的成就。从创立初期的艰难起步到如今的行业佼佼者,AMERICASEMI凭借技术创新、市场拓展、质量管理等方面的努力,不断推动自身的发展壮大。未来,随着电子行业的持续发展和技术的不断进步,AMERICASEMI有望继续保持领先地位,为行业的发展做出更大的贡献。

问答坊 | AI 解惑

LOGO海龟作图

是否还记得小学时候的海龟作图? 找到了个windows的版本,跟大家分享。l 昨天晚上画了个很简陋的心,由于没有计算,下面都没有封口。 cs lt 30 fd 100 repeat 30 [fd 2 rt 6] fd 40 lt 120 fd 40 repeat 30 [fd 2 rt 6] fd 100 ht…

查看全部问答>

分享 电力参数测量毕业论文

交流电压电流有功功率无功功率功率因素 …

查看全部问答>

51的RI,TI,可以软件置位么

如题,串口的中断标志位RI,TI可以由软件置位么?如果可以置位,数据还没传送完毕的被置位将如何工作?谢谢各位高手赐教…

查看全部问答>

SystemC一套将C++扩展为硬件描述语言的Class Library 注:转牛人04年的贴

这几日接接触SystemC,有些感触: 1. SystemC 是一套C++ Class Library,将C++扩展成了一门硬件描述语言(HDL)。我感觉,学习SystemC至少要懂两样东西:C++、一门硬件描述语言。我熟悉C++,并且熟悉Verilog,因此学SystemC能举一反三、触类旁通。 ...…

查看全部问答>

讨论:电流检测电阻

电流检测电阻是开关电源常用器件,阻值小功率大,特别是大电流检测,用分流器,精度要求高,体积大,成本高。 另一方面,开关电源无论功率大小,都有一段输出引线,此输出引线小功率的在板上走线,大功率的要汇流排,当然是铜的,但是有电阻。 这 ...…

查看全部问答>

timeo = jiffies + (HZ/100); 这句话什么意思呀/?

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581) 群主:wangkj…

查看全部问答>

流驱动的 source文件编写

{549CAC8D_8AF0_4789_9ACF_2BB92599470D}…

查看全部问答>

将肥皂变成肥皂泡的机器

在公共场合如卫生间内,你很少会见到有提供肥皂洗手的,毕竟与多人共用一块肥皂那是件很让人难以接受的事情。设计师WooJae Lee等想了个办法,带来了这个液体肥皂机:Re-Bubble。只需将肥皂从顶部像投币一样投进去,经过机器操作,管道里就存满了泡 ...…

查看全部问答>

关于v5 时钟使用的问题

使用V5时将一个普通的IO当作全局时钟使用了,结果在MAP时,发生错误:ERROR:Place:645 - A clock IOB clock component is not placed at an optimal clock,改了系统的环境变量,加BUFG都无法解决,请问该如何解决?主程序如下: module ad_uart ...…

查看全部问答>

再次请教版主STM32的CAN问题

上周就已经把CAN通讯调通了,不管是查询模式还是中断模式都跑的很好,这周给板子加了个UCOS,2.86版本的。然后把CAN通讯加上去,CAN数据死活发不出来。用lookback模式自测,发现可以收到自己发出去的数据,但是用示波器测试发送脚,就是没见到 ...…

查看全部问答>