PIC基础学习3

PICC中最好用前减来控制循环体。

来看看下面的语句:

for(x = 100; –x;){;}和for(x = 0; x < 100; x++){;}

在字面上2者意思一样的,便是可以能过汇编查看代码。后者代码雍长,而前者就很好的汇编出了简洁的代码。所以在PICC中最好用前者的形式来写循环体,好的C编译器会自动把增量循环化为减量循环。

PICC的位操作:

要是需要一个地址固定的变量来位操作,可以参看PIC.H里面定义寄存器。

如:用25H内存来定义8个位变量。

static volatile unsigned char myvar @ 0x25;

static volatile bit b7 @(unsigned)&myvar*8+7;

static volatile bit b6 @(unsigned)&myvar*8+6;

这样即可以对myvar操作,也可以对b0~b7直接位操作。

PICC关于unsigned 和signed的几个关键问题

unsigned是表示一个变量是无符类型。signed表示有符号。它们表示数值

范围不一样。PICC默认所有变量都是unsigned类型的,哪怕你用signed变量。因为有符号运算耗资源,而且MCU运算一般不涉及有符号运算。在PICC后面加上-SIGNED_CHARR后缀可以告诉PICC把signed变量当作有符号处理。

PICC在有符号编程环境下,对于递减的for语句的条件判断语句不能是>=0的形式。

对于递减到0的for语句推荐用>0判断语句来实现,不会出现编译错误的问题,并且不会增加代码量,尤其对于数组操作的方面。

PIC单片机是低电平复位

PIC系列单片机的时钟电路设计有四种工作模式,标准XT,高速HS(4MHZ以上),低频LP(32.768HZ)和阻容RC。

PICC基本上符合ANSI标准,除了一点:不支持函数的递归调用。是因为PIC单片机的特殊堆栈结构。 PIC单片机的堆栈是硬件实现的。

PICC函数,特别注意main函数必须是一个没有返回的死循环。

除了bank0 内的变量声明不需要特殊处理外,定义在其佗bank内的变量前面必须加上相应的bank序号,例如:

bank1 unsinged char buffer[32];

bank2 bit flag1,flag2;

bank3 float val[8];

虽然变量所在的bank定位必须由编程员自己决定,但是编写源程序时进行变量存取操作前无需特意编写设定bank的指令。C编程器会根据所操作的对象自动生成对应的bank设定的汇编指令;为避免频繁的bank切换以提高代码效率,尽量把实现同一任务的变量定位在同一个bank内,对于不同bank内的变量进行读写操作时也尽量把位于相同bank内的变量归并在一起进行连续操作。

PICC把所有函数内部定义的auto型局部变量放在bank0,因此用户自己定位在bank0内的变量字节数将受到一定的限制。

bit型位变量只能是全局的或静态的。

PICC专门提供了一种长度为24位的截短型浮点数,它损失了浮点数的一点精度。

原文地址:https://www.cnblogs.com/hnrainll/p/1917000.html