历史上的今天
今天是: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() 配置语句。
上一篇:MPLAB设置路径
下一篇:减法要用 signed
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 看着这几个题目。。。还不确定选哪个。。。(还是高职高专的好做) … 查看全部问答> |
|
以下转自 越测越开心 的博客,其原文地址如下: 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都不支持,怎么会出现这种情况?! 高手帮忙看一 ...… 查看全部问答> |
|
我用ew430时,第一次,建了一个workspace 和 project.但下一次却打不开,提示是不存在.我用的是4k的试用版.请问各位大侠,这是什么原因? … 查看全部问答> |




