历史上的今天
今天是:2024年11月23日(星期六)
2018年11月23日 | PIC单片机C知识点汇总
2018-11-23 来源:eefocus
PICC变量及定义
1、当变量为多字节数据时,PICC按低字节存放在低地址、高字节存放在高地址的原则存放变量,并以最低字节的地址作为该变量的地址。例如int型变量i的值为0X1234,低字节0x34存放在0X30,高字节0x12存放在0X31,并以0x30作为变量i的地址。
2、单片机的带符号的整数均以补码方式存放。对于二进制数来说,先减一后取反和先取反后加1得到的结果是一样的。
3、标准C中没有位变量,位变量是PICC C语言中特有的。有了位变量,就可以方便的进行位操作,设置某一引脚是高电平还是低电平。
4、强制类型转换的一般表达式为 (类型说明符)(表达式) 作用:把表达式的运算结果强制转换成类型说明符所表达的类型
如:(float)x; //强制把X转换成实型,不管X为何类型的变量,转自21ic基础知识
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.
指向常数的指针可以指向宁外一个常数而不必重复定义。
上一篇:实例讲解PIC单片机之中断程序
下一篇:PIC单片机-PWM波
史海拾趣
|
生动形象的教学用电子钟[ZT] 笔者在教学中,设计了一套教学实验用“电子钟”电路。此线路包括七段数码显示器BS205和循环彩灯电路,实验显示生动有趣,各部分原理简单,适宜学生直接观察“编码器”、“译码器”、“寄存器”、“计数器”等逻辑 ...… 查看全部问答> |
|
关于TQ2440触摸屏的应用设计。现在能够实现触摸屏界面的旋转,想添加一些其它的应用功能,请问能不能把显示界面缩小,即原来3.5寸屏的界面,显示为1.75寸的区域,这种功能能够实现吗?如果实现需要涉及那些方面?… 查看全部问答> |
|
我在flash上烧写的镜像文件为 NK.BIN, 我在注册表中添加如下: ; Bind BINFS to the block driver [HKEY_LOCAL_MACHINE\\System\\StorageManager\\Profiles\\FlashDrv] \"DefaultFileSystem\"=\"BINFS\" \"Partition ...… 查看全部问答> |
|
我用的是keil. 遇到到 PA4, PA5 , PA6,PA7 等无法设置输出状态. 在keil的调试状态就感觉无**常设置.而引脚设置跟附近的一样,看起来没错. 但无**常设置.其他的比如PC5~PC7等就没有问题. 初始化的语句:应该没有问题. GPIO_Ini ...… 查看全部问答> |
|
下载 (108.1 KB) 2011-1-19 15:42 我现在在做微功耗,用的是待机模式,我在看微功耗的待机模式的启动项中,有个启动方式是IWDG,但是这中启动方式我没有办法跟踪,我在手册中看到可以检测复位标记来判断是什么方式复位 ...… 查看全部问答> |
|
#include<msp430x44x.h> interrupt[TIMERA0_VECTOR] void Timer_A(void) { ~~~ } void InitSystem(void) { ~~~ //TIME_A TACTL=ID1+TASSEL1+TACLR+ ...… 查看全部问答> |
|
有没有3v可用的数码管驱动芯片?或者怎么用电池给5v的74门供电? 想做个数字钟,但是找不到3v可用的数码管驱动芯片,找到了淘宝上也没卖的。 另外就是考虑怎么给3v/5v元件混合电路用AA电池供电……… 查看全部问答> |




