zoukankan      html  css  js  c++  java
  • 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位的截短型浮点数,它损失了浮点数的一点精度。

  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/hnrainll/p/1917000.html
Copyright © 2011-2022 走看看