历史上的今天
返回首页

历史上的今天

今天是:2024年09月08日(星期日)

2020年09月08日 | 16系列和18系列的不同

2020-09-08 来源:eefocus

一、宏定义不同:


16系列


__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去

__CONFIG(PLLEN_ON&LVP_OFF) ;//将FOSC<2:0>:振荡器选择位设置成 INTOSC,使能PLLEN

18系列


#pragma config WDT = OFF, OSC = HS

#pragma config PBADEN = OFF  //forbidden PORTB adc function

二、中断方式不同:


16系列


/*--------------中断处理函数--------------------*/

u8 Count1;

void interrupt ISR(void)

{    

    if(TMR0IF)

    { 

        Count1 ++;

        if(Count1 ==50)//1ms

        {

            Count1 = 0;

            Event1ms  =1;

        }

        TMR0 = 105; //20us

        TMR0IF=0;     

    }

}


18系列


#pragma code Low_Vector222 = 0x18

void Low_Vector333(void)

{

    _asm

    goto InterruptHandlerLow

    _endasm

}

#pragma code


#pragma interruptlow InterruptHandlerLow

void InterruptHandlerLow(void)

{    

    //Add the interrupt processing

}

/*-------------------------------------------------*/

#pragma code InterruptVector222 = 0x08  //Name can be arbitrarily set

void InterruptVectorHigh333(void)  //Name can be arbitrarily set

{

    _asm

    goto InterruptHandlerHigh

    _endasm

}

#pragma code


#pragma interrupt InterruptHandlerHigh

void InterruptHandlerHigh (void)

{    

    //Add the interrupt processing

    if(INTCONbits.TMR0IF)

    {     

        INTCONbits.TMR0IF=0; 

        TMR0L = 0xC0; //0xC0,0x80

        LED0=!LED0;

    }

    if(INTCONbits.INT0IF)

    {    

        INTCONbits.INT0IF = 0;     // clear INT0 flag

        LED0 = !LED0;

    }

}


三、不同的原因


那么是什么原因导致上面两种代码格式不同的呢?是不是因为选用的编译工具不同导致的。


PIC16 使用的是HI_TECH_PICC9.8编译器


PIC18 使用的是xc16编译器


答案是NO,两种代码格式明显不同,不是因为选用的编译工具不一样,而是由头文件里的定义决定的。


#ifndef    _PIC_H_

#define    _PIC_H_


#ifndef _HTC_H_

#include

#endif


#include


/* MPLAB REAL-ICE related macros & includes (currently enhanced PICs only) */


#define    CLRWDT()    asm("clrwdt")

#define    SLEEP()        asm("sleep")

// function version of nop

#pragma intrinsic(__nop)

extern void __nop(void);

#define NOP()        __nop()

//

// Legacy Programming Macro Functions

//

#define    __CONFIG(x)

            __config(___mkstr(__CONFIG), ___mkstr(pic), ___mkstr(x))


所以源文件文件都要包含htc.h或pic.h头文件,才能使用 __CONFIG() 配置语句。


推荐阅读

史海拾趣

台湾肯尼威(CANNYWELL)公司的发展小趣事

台湾肯尼威公司成立于1986年,其创始人李明(化名)是一位对电子技术充满热情的工程师。在当时的台湾,电子制造业正处于蓬勃发展的阶段。李明看到电源滤波器在电子设备中的重要性,于是决定专注于这一领域的研发和生产。他带领一支小团队,经过无数次的试验和改进,终于成功研发出CW系列单相电源滤波器,为公司的发展奠定了坚实的技术基础。

台湾义隆电子(ELAN)公司的发展小趣事

台湾义隆电子自1994年成立以来,一直秉持着技术创新的发展理念。公司早期专注于集成电路(IC)产品的研发与行销,随着市场需求的不断变化,产品线逐渐扩展到消费性芯片、通讯类芯片、微控制器等多个领域。义隆电子通过不断的技术创新,成功推出了多款具有市场竞争力的产品,如高性能的触摸屏控制器、触摸板模块等,实现了产品的多元化。

General Cable公司的发展小趣事
采用CMOS技术,功率消耗很小,静态电流典型值为0.02μA,无需使用电源控制开关。
E-San Electronic Co Ltd公司的发展小趣事

随着市场的不断变化和消费者需求的升级,E-San Electronic Co Ltd意识到技术创新是企业持续发展的关键。公司投入大量资金和资源,建立了自己的研发团队,并与多所高校和研究机构建立了合作关系。经过数年的努力,公司成功研发出了一系列具有自主知识产权的核心技术,这些技术不仅提升了产品的性能和质量,也为企业赢得了更多的市场份额。

APX Technologies公司的发展小趣事

APX Technologies在成立初期就专注于研发高性能的半导体芯片。经过数年的努力,公司成功开发出一种具有革命性的低功耗芯片技术,这一技术极大地提高了电子设备的能效比。随着这一技术的广泛应用,APX Technologies迅速在电子行业中崭露头角,赢得了众多客户的青睐。

永丰盈(CST)公司的发展小趣事

深圳市永丰盈电子有限公司(CST)成立于2003年,初始阶段,公司只有几名员工和几台设备,专注于电子接插件产品的生产与销售。在创始人坚定的信念和团队不懈的努力下,CST逐步在市场上崭露头角。公司秉持“诚信、踏实、齐心、努力”的经营理念,通过严格的质量控制和持续的技术创新,赢得了客户的信任。

问答坊 | AI 解惑

单片机

针对at89s52的一些简要介绍…

查看全部问答>

请教 一个很easy的问题:三极管的选用主要看哪些参数

我知道的三极管 可以用在 开关电路,电压电流放大,功率放大, 几种电路中对三极管的选用都有什么要求,详细一点吧…

查看全部问答>

MAX+PLUSII语言VHDL

关于MAX+PLUSII的一个文章给大家看看…

查看全部问答>

大赛的题目你选择好了。。。(大家一起来讨论)

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 看着这几个题目。。。还不确定选哪个。。。(还是高职高专的好做)  …

查看全部问答>

榨干你的示波器——连载3(转帖)

以下转自 越测越开心 的博客,其原文地址如下: http://forum.eet-cn.com/BLOG_ARTICLE_2965.HTM 本系列博文由我们的老用户H3C北京公司常羽飞特别供稿 (4)——我的地盘我做主示波器这个玩意儿,虽说有明确的资产所有人,不过流动性实在太大 ...…

查看全部问答>

盲人的福音:用舌头看世界

盲人在美国研制的生活设备BrainPort帮助下,可以读书,辨别物体形状和独立行走,这可能彻底改变盲人的生活。 该设备将图形转换为脉冲电流并发送到使用者的舌头上从而引起刺痛感。不同强度的痛感可以被翻译成不同的信息,从而使失明者能够感知周围 ...…

查看全部问答>

WDK+DDKWizard+vs2008环境,都设置好了却总是生成win7的sys,怎么回事

如题。ddkbuild.bat,cmd,拷到了winddk目录下,加了wxpbase环境变量,vc目录选好了。 用ddkwizard建一个driver,选winxp的驱动,生成工程。原封不动的编译,只能得到win7的驱动。 ddkwizard连win7都不支持,怎么会出现这种情况?! 高手帮忙看一 ...…

查看全部问答>

WinCE上栈空间如何调大一些? (应用程序需要大一些的栈空间)

WinCE上栈空间如何调大一些? (应用程序需要大一些的栈空间)…

查看全部问答>

运气巨好!从收废品的师傅手中拿到了一块10.4寸的液晶屏

型号是NL6448AC33-18K 想试试能不能用,不知道谁有PDF手册?…

查看全部问答>

iar ew430的一个问题

我用ew430时,第一次,建了一个workspace 和 project.但下一次却打不开,提示是不存在.我用的是4k的试用版.请问各位大侠,这是什么原因? …

查看全部问答>