⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccs_p16.h

📁 一个由PIC单片机组成的Web服务器源码
💻 H
字号:
/* CCS compiler-sepcific definitions for PIC16F877 or PIC18C452 */

#ID CHECKSUM                // ID bytes are checksum
#ZERO_RAM                   // Wipe RAM for safety

#define WORD unsigned long  // Data type definitions
#define BOOL short          // 'short' is very short (1 bit) in this compiler

#ifndef MIN
#define MIN(a, b) (a>b ? b : a)
#define MAX(a, b) (a>b ? a : b)
#endif

#define COMPILERID  "c"     // String to be displayed after signon

#define HASHBYTE #BYTE      // Other compilers have problem with #byte
#define HASHDEVICE #device  // ..and #device, so wrap them in these macros

#ifdef __PCH__
#include <18C452.H>             // PIC18C452
HASHDEVICE ADC=10               // Put ADC in 10-bit mode
#define _PIC18
#FUSES NOPROTECT,BROWNOUT       // Config fuse settings
#define PORTA_ADDR 0xf80        // Main I/O port addrs for PIC18
#define PORTB_ADDR 0xf81
#define PORTC_ADDR 0xf82
#define PORTD_ADDR 0xf83
#define PORTE_ADDR 0xf84
#byte T1CON=0xfcd
#byte TIMER_1_HIGH=0xfcf
#define LOCATE(var, addr)
#include <string.h>
#else
#include <16F877.h>             // PIC16F877
#device *=16
HASHDEVICE ADC=10               // Put ADC in 10-bit mode
#FUSES HS,NOWDT,NOPROTECT,PUT,NOLVP    // Config fuse settings
#define PORTA_ADDR 5            // Main I/O port addrs for PIC16
#define PORTB_ADDR 6
#define PORTC_ADDR 7
#define PORTD_ADDR 8
#define PORTE_ADDR 9
#byte T1CON=0x10
#ifndef TIMER_1_HIGH
HASHBYTE TIMER_1_LOW=0x0e       // New CCS compiler has no 8-bit defs for timer1
HASHBYTE TIMER_1_HIGH=0x0f
#define LOCATE(var, addr) #LOCATE var=addr
#endif
#endif

#include <stdlib.h>

#byte   PORTA = PORTA_ADDR      // I/O port definitions
#byte   PORTB = PORTB_ADDR
#byte   PORTC = PORTC_ADDR
#byte   PORTD = PORTD_ADDR
#byte   PORTE = PORTE_ADDR

#define SEPARATED #separate
#define BANK1
#define BANK2
#define BANK3
#define FAR

#define ALL_OUT 0
#define ALL_IN  0xff

// Bit I/O definition macros; rather strange, for CCS compatibility!
#define DEFBIT_7(reg, name) #BIT name = reg.7
#define DEFBIT_6(reg, name) #BIT name = reg.6
#define DEFBIT_5(reg, name) #BIT name = reg.5
#define DEFBIT_4(reg, name) #BIT name = reg.4
#define DEFBIT_3(reg, name) #BIT name = reg.3
#define DEFBIT_2(reg, name) #BIT name = reg.2
#define DEFBIT_1(reg, name) #BIT name = reg.1
#define DEFBIT_0(reg, name) #BIT name = reg.0
#define DEFBYTE(reg, name) #BYTE name = reg

#use fast_io(A)                                 // I'll set the direction bits
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

#define DELAY_ONE_CYCLE delay_cycles(1)

#use DELAY(CLOCK=CPU_CLK)
#use RS232 (BAUD=SER_BAUD, XMIT=PIN_C6, RCV=PIN_C7, ERRORS)

#ifdef _PIC18
#byte PIE1=0xf9d
#byte PIR1=0xf9e
#byte RCSTA=0xfab
#byte TXSTA=0xfac
#byte TXREG=0xfad
#byte RCREG=0xfae
#byte SPBRG=0xfaf
#byte INTCON=0xff2
#else
#byte PIE1=0x8c
#byte PIR1=0x0c
#byte RCSTA=0x18
#byte TXSTA=0x98
#byte TXREG=0x19
#byte RCREG=0x1a
#byte SPBRG=0x99
#byte INTCON=0x0b
#endif

#bit RCIF=PIR1.5
#bit TXIF=PIR1.4
#bit RCIE=PIE1.5
#bit TXIE=PIE1.4
#bit OERR=RCSTA.1
#bit FERR=RCSTA.2
#bit CREN=RCSTA.4
#bit TXEN=TXSTA.5

#define RX_INT_HANDLER #INT_RDA

#define init_serial()
#define init_i2c()

#define serial_putch(c) putchar(c)
//#define serial_kbhit(c) kbhit(c)

#define putstr(str) printf(putch, str)
#define put_ser(str) printf(str)
#define PRINTF2(str, val) printf(putch, str, val)

#use I2C(MASTER, SDA=PIN_C4, SCL=PIN_C3, RESTART_WDT, FAST)

/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -