PIC
C
11.1
PIC
C
C
C
C
PC
PIC
PC
PC
C
PIC
PIC
Microchip
Hitech CCS IAR Bytecraft
PIC
PIC
PIC
C
Hitech
C
C
PICC
C
C
Hitech
PIC
PICC-Lite
PIC16F84 PIC16F877
PIC16F628
Flash
PIC
C
PIC
PICC-Lite
Hitech-PICC
IAR
CCS
ByteCraft
PIC
C
www.htsoft.com
www.iar.com
www.ccsinfo.com/picc.shtml
www.bytecraft.com/mpccaps.html
Hitech-PICC
C
PIC
11.2
Hitech-PICC
PICC
PIC
ANSI
PIC
PIC
2004-4-7
1 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
PIC
C
PICC
<10%
4K
PIC
C
C
11.3
MPLAB-IDE
PICC
PICC
MPLAB-IDE
MPLAB-IDE
ICE2000 ICD2
MPLAB-IDE
Locations…
PICC
IDE
11-1
Project
Set Language Tool
11-1 MPLAB-IDE
HI-TECH PICC Toolsuite
MPLAB-IDE
PICC Assembler C
PICC Compiler
Executable
PICC Linker
Browse…
PICC.EXE
3.1.3
Location
PICC
PICC.EXE
PICC.EXE
C
.c
.as
HI-TECH PICC
C
C
C
2004-4-7
2 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
11-2
C
I2C
C
11.4
PIC
C
PICC
PIC
#include
pic.h
__CONFIG
11-2 C
C
PICC
main
11-1
C
#include
//
#include “pc68.h” //
//
__CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS);
//
void SetSFR(void);
void Clock(void);
void KeyScan(void);
void Measure(void);
void LCD_Test(void);
void LCD_Disp(unsigned char);
//
unsigned char second, minute, hour;
bit flag1,flag2;
//
2004-4-7
3 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
void main(void)
{
SetSFR();
PORTC = 0x00;
TMR1H += TMR1H_CONST;
LED1 = LED_OFF;
LCD_Test();
//
while(1) {
asm(“clrwdt”);
//
Clock();
//
KeyScan(); //
Measure(); //
SetSFR();
//
}
}
11-1 C
11-1
0
1
PICC
char
11.5
PICC
11.5.1
PICC
PICC
bit 1
char 8
unsigned char 8
short 16
unsigned short 16
int 16
unsigned int 16
long 32
unsigned long 32
float 24
double
24 32
PICC
double
24
32
11-1 PICC
PICC
Little-endian
2004-4-7
4 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
11.5.2
PICC
11-1
bit
PICC
C
unsigned int data[10];
struct commInData {
unsigned char inBuff[8];
unsigned char getPtr, putPtr;
};
union int_Byte {
unsigned char c[2];
unsigned int i;
};
11-2 C
11.5.3
PICC
bank
PICC
bank0
bank
bank
unsigned char buffer[32];
bit flag1,flag2;
float val[8];
bank0
bank
bank1 unsigned char buffer[32]; //
bank2 bit flag1,flag2;
//
bank3 float val[8];
//
bank
bank1
bank2
bank3
PIC
bank
128
C
bank
RAM
bank
Error[000] : Can't find 0x12C words for psect rbss_1 in segment BANK1
bank1
bank
bank1
0x12C 300
bank1
bank
C
bank
bank
bank
bank
bank
bank
2004-4-7
5 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
11.5.4
PICC
PICC
auto
bank0
PIC
11.5.5
PICC
bit
PICC
8
bank0
PICC
bank0
PICC
bank
8
PIC
0x000
0
0x0000
flag1
0x123
flag1
tmp
PICC
0x123/8 = 0x24
0x123%8 = 3
flag1
0x24
0x24
3
0x123
PIC
0x20
C
tmp |= 0x80
=> bsf 0x20,7
tmp &= 0xf7
=> bcf 0x20,3
if (tmp&0xfe)
=> btfsc 0x20,0
C
2004-4-7
6 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
union {
struct {
unsigned b0: 1;
unsigned b1: 1;
unsigned b2: 1;
unsigned b3: 1;
unsigned b4: 1;
unsigned b5: 1;
unsigned : 2; //
} oneBit;
unsigned char allBits;
} myFlag;
11-3
myFlag.oneBit.b3=1; //b3
1
myFlag.allBits=0; //
0
ANSI-C
0
0
0
1
11.5.6
PICC
PICC
IEEE-754
4
24
float
24
24
11.5.7
PICC
C
PICC
1
32
PICC
24
double
double
32
bank
PICC
PICC
2004-4-7
7 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com
unsigned char tmpData @ 0x20; //tmpData
0x20
PICC
0x20
0x20
tmpData
unsigned char tmpData @ 0x20; //tmpData
0x20
bit tmpBit0 @ tmpData*8+0; //tmpBit0
bit tmpBit1 @ tmpData*8+1; //tmpBit0
bit tmpBit2 @ tmpData*8+2; //tmpBit0
tmpData
tmpData
tmpData
0
1
2
tmpData
11.5.8
PICC
extern
C
extern
code1.c
bank1 unsigned char var1, var2;
//
bank1
code2.c
extern bank1 unsigned char var1, var2; //
bank1
volatile
PICC
volatile
C
IO
volatile
volatile unsigned char STATUS @ 0x03;
volatile bit commFlag;
volatile
C
volatile
volatile
2004-4-7
8 of 26
PDF created with pdfFactory Pro trial version www.pdffactory.com