×
单片机 > 单片机程序设计 > 详情

16系列和18系列的不同

发布时间:2024-05-02 发布时间:
|

一、宏定义不同:


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() 配置语句。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计