信盈达—您身边的嵌入式&人工智能专家
全国免费咨询热线:400-8788-909

信盈达大牛分享PIC单片机C知识点汇总

时间:2018-08-27 00:00:00 来源:信盈达 作者:信盈达

PICC变量及定义

1、当变量为多字节数据时,PICC按低字节存放在低地址、高字节存放在高地址的原则存放变量,并以最低字节的地址作为该变量的地址。例如int型变量i的值为0X1234,低字节0x34存放在0X30,高字节0x12存放在0X31,并以0x30作为变量i的地址。


2、单片机的带符号的整数均以补码方式存放。对于二进制数来说,先减一后取反和先取反后加1得到的结果是一样的。


3、标准C中没有位变量,位变量是PICC C语言中特有的。有了位变量,就可以方便的进行位操作,设置某一引脚是高电平还是低电平。


4、强制类型转换的一般表达式为 (类型说明符)(表达式) 作用:把表达式的运算结果强制转换成类型说明符所表达的类型

如:(float)x; //强制把X转换成实型,不管X为何类型的变量

 

PICC变量修饰关键词


1、extern (外部)变量声明

如果一个C程序文件要使用一些有其他文件定义的变量或者引用由嵌入式汇编程序定义的变量,那么在本程序文件中要将这些变量声明成“extern”(外部)类型


2、volatile(易变)型变量声明

volatile 关键字是标准C中没有的,告诉PICC,这些变量是随机的,不要对变量进行随机处理。

在相关的头文件中,相关的寄存器都被定义成volatile型。

 

3、const (常数)型变量声明

在变量定义前冠以"const"关键词,变量将成为常数,程序运行过程中不能对其进行修改。

单片机的常数实际是存在于程序存储器中的,并以查表的形式返回值。通常单片机的程序存储器相对较大,可以存入较多的常数。

一个程序存储器单元(字)只能存储一个8位的字节常数,虽然程序存储器是14位的。

 

4、persistent(非初始化)常量声明

声明此类变量无须在复位时自动清零,并且在退出某些函数时这些变量仍然保留。

 

5、static(静态)常量声明

默认的变量都是自动变量,自动变量指的是当调用函数返回后这些局部变量不再保留,即不存在。若在声明中加入静态变量修饰词,在退出函数后,这些变量仍然保留。

 

6、bank(体)选择声明

由于PIC16系列单片机的RAM数据存储器分为4个体,因此在定义变量时要指明是哪个体,默认为体0.用bank1~bank3指定变量存放在相应的体。

设计者应当知道,自己编制的程序的数据存储器占用量是多少。

PICC的变量定义中,对于全局变量还可以指定地址。例如:char AA @0X30

PICC中支持的结构体与共同体,与标准C没有区别。

 

PICC的指针:

 

1、指向RAM的指针

PICC在编译C源程序时将指向RAM的指针操作最终用FSR来实现间接寻址。因此在定义指针时必须明确指定该指针所适用的寻址范围和指针变量本身存在的范围。例如 bank3 char *bank1 zz2定义了指向bank2/3的指针,指针本身存在于bank1中。

在用指向RAM的指针时,要注意体的位置匹配。

 

2、指向FLASHROM常数的指针

PICC定义的常数是存放在程序存储器的,即FALSHROM,简称ROM.

指向常数的指针可以指向宁外一个常数而不必重复定义。


信盈达

信盈达2008年在深圳特区南山高新科技园成立。自成立至今近九年来专注为企业和个人提供高端方案设计、高端嵌入式/Android培训等服务。公司下设信盈达实训学院、信盈达研发中心、信盈达教学仪器三大业务板块。九年来公司坚持"技术领先、服务领先",以雄厚的实力和专业的品质成为国内唯一有实力从产品最底层研发到系统层开发的嵌入式实训、产品解决方案提供商。为中国IT行业提供最具价值的职业教育服务。专业嵌入式、物联网、人工智能Java、单片机等课程,想了解更多信息点击立马咨询