CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc Project-->Edit Project Development Mode----> Mplab SIM Simulator Language Tool Suite--->HI-TECH PICC Project Files Generate debug info Produce assembler list file Add Node 2 PICC
C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char TMR0 @ 0x01; static volatile unsigned char PCL @ 0x02; static volatile unsigned char STATUS @ 0x03; TMR0 EQU 0X01 PCL EQU 0X02 STATUS EQU 0X03 TMR0 MOVLW 200 MOVWF TMR0 0 C TMR0=200 // C C C C PORTA I/O RA0 RA1 RA2 RA7 OPTION PS0 PS1 PS2 PSA T0SE T0CS INTEDG RBPU RA0=0 RA2=1 BCF PORTA 0 BSF PORTA 2 2 C 16 C 16 C INT X=5000 INT Y=1000 INT Z=X/Y C RA0 LED #include<pic.h> void main()
{ int x; CMCON=0B111; // A ADCON1=0B110; // A/D A/D TRISA=0; //RA loop:ra0= RA0 for(x=60000;--x;){; // goto loop; RA0= RA0 PIC PORT ---- ---- RA0 3 PICC PIC BOOL C ********************************************* char x;x=x 0B00001000; char x;x=x&0b11011111; /* X 4 1 */ /* X 5 0 */ #define bitset(var,bitno)(var =1<<bitno) #define bitclr(var,bitno)(var &=~(1<<bitno)) char x;bitset(x,4) char x;bitclr(x,5) ************************************************* X 0-2 BOOL unsigned char x @ 0x20; /* X */ bit temperature@ (unsigned)&x*8+0; /* */ bit voltage@ (unsigned)&x*8+1; /* */ bit current@ (unsigned)&x*8+2; /* */ X 1 2 3 4 X char=255; temperature=0; if(voltage)... ***************************************************************** C struct struct cypok{ temperature:1; /* */ voltage:1; /* */ current:1; /* */
none:4; x @ 0x20; x.temperature=0; if(x.current)... ********************************************************** 2 LED C C C union cypok{ struct out{ motor:1; /* */ relay:1; /* */ speaker:1; /* */ led1:1; /* */ led2:1; /* */ out; struct in{ none:5; temperature:1; /* */ voltage:1; /* */ current:1; /* */ in; char x; ; union cypok an1; union cypok an2; an1 an2; in out): an1.in ; an1.out; an2.in; an2.out; an1.in.temperature; an1.out.motor; an2.in.voltage; an2.out.led2; 2 2
union cypok an3; union cypok an4; C 4 PICC C for(x=100;--x;){; x=100;while(--x){;; for(x=0;x<100;x++){; X=100 x=100;while(--x){; movlw 100 bcf 3,5 bcf 3,6 movwf _delay l2 decfsz _delay goto l2 return 303 8+3* X-1 99 x char x int X char void delay(char x,char y){ char z; do{ z=y; do{;while(--z); while(--x); 7+ 3* Y-1 +7 * X-1 call 7 14+ 3* Y-1 +7 * X-1 void delay(){ unsigned int d=1000; while(--d){; 4M 10003us 10MS D 2000 20003us, while(x--) X bcf 3,5 bcf 3,6 movlw 10 movwf _delay
l2 decf _delay incfsz _delay,w goto l2 return PICC for(x=100;--x;){; for(x=0;x<100;x++){; 2 PICC C PICC C 5 bit a,b,c; a,b,c. static volatile unsigned char myvar @ 0x25; static volatile bit b7 @ (unsigned)&myvar*8+7; static volatile bit b6 @ (unsigned)&myvar*8+6; static volatile bit b5 @ (unsigned)&myvar*8+5; static volatile bit b4 @ (unsigned)&myvar*8+4; static volatile bit b3 @ (unsigned)&myvar*8+3; static volatile bit b2 @ (unsigned)&myvar*8+2; static volatile bit b1 @ (unsigned)&myvar*8+1; static volatile bit b0 @ (unsigned)&myvar*8+0; #define testbit(var, bit) ((var) & (1 <<(bit))) #define setbit(var, bit) ((var) = (1 << (bit))) #define clrbit(var, bit) ((var) &= ~(1 << (bit))) #include<pic.h> #define testbit(var, bit) ((var) & (1 <<(bit))) #define setbit(var, bit) ((var) = (1 << (bit))) #define clrbit(var, bit) ((var) &= ~(1 << (bit))) char a,b; void main(){ char myvar; myvar=0b10101010;
a=testbit(myvar,0); setbit(myvar,0); a=testbit(myvar,0); clrbit(myvar,5); b=testbit(myvar,5); if(!testbit(myvar,3)) a=255; else a=100; while(1){; #include<pic.h> union var{ unsigned char byte; struct { unsigned b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1; bits; ; char a,b; void main(){ static union var myvar; myvar.byte=0b10101010; a=myvar.bits.b0; b=myvar.bits.b1; if(myvar.bits.b7) a=255; else a=100; while(1){; #include<pic.h> typedef struct { unsigned b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1; bits; // #define mybit0 (((bits *)&myvar)->b0) // myvar &myvar bits #define mybit1 (((bits *)&myvar)->b1) #define mybit2 (((bits *)&myvar)->b2) #define mybit3 (((bits *)&myvar)->b3) #define mybit4 (((bits *)&myvar)->b4) #define mybit5 (((bits *)&myvar)->b5) #define mybit6 (((bits *)&myvar)->b6) #define mybit7 (((bits *)&myvar)->b7)
char myvar; char a,b; void main(){ myvar=0b10101010; a=mybit0; b=mybit1; if(mybit7) a=255; else a=100; while(1){; #include<pic.h> typedef struct { unsigned b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1; bits; #define _paste(a,b) a##b #define bitof(var,num) (((bits *)&(var))->_paste(b,num)) char myvar; char a,b; void main(){ a=bitof(myvar,0); b=bitof(myvar,1); if(bitof(myvar,7)) a=255; else a=100; while(1){; #define _paste(a,b) a##b b a a=bitof(myvar,0); (((bits *)&(myvar))->_paste(b,0)) (((bits *)&(var))->b0) _paste(b,0) 0 b b0 6 PICC PICC 8 RAM 0x00): #define DBYTE ((unsigned char volatile *) 0)
16 RAM 0x00): #define CWORD ((unsigned int volatile *) 0) ((unsigned char volatile *) 0) 0 RAM DBYTE[x] x 1 char a1,a2,a3,a4; #define DBYTE ((unsigned char volatile *) 0) void main(void){ long cc=0x89abcdef; a1=dbyte[0x24]; a2=dbyte[0x25]; a3=dbyte[0x26]; a4=dbyte[0x27]; while(1); 2 char a1,a2,a3,a4; #define DBYTE ((unsigned char volatile *) 0) void pp(char y){ a1=dbyte[y++]; a2=dbyte[y++]; a3=dbyte[y++]; a4=dbyte[y]; void main(void){ long cc=0x89abcdef; char x; x=&cc; pp(x); while(1); 3 char a1,a2,a3,a4; #define DBYTE ((unsigned char volatile *) 0) void pp(char y){ a1=dbyte[y++]; a2=dbyte[y++]; a3=dbyte[y++]; a4=dbyte[y];
void main(void){ bank1 static long cc=0x89abcdef; char x; x=&cc; pp(x); while(1); 7 PICC unsigned signed unsigned signed PICC unsigned signed MCU PICC -SIGNED_CHAR PICC signed PICC char i; for(i=7;i>=0;i--){ ; // C movlw 7 loop movwf i // decf i goto loop // i 0 i 1 PICC char i; i=7; while(1){ i--; // if(i==0)break; // PICC i 0 movlw 7 loop movwf i // decfsz i goto loop // 0 8 for(i=8;i>0;i--){
; movlw 8 movwf i loop decfsz i // goto loop PICC -SIGNED_CHAR movlw 7 movwf i loop // decf i // btfss i,7 // i 7 goto l94 PICC for >=0 PICC PICC a char i,j[8]; i=7; while(1){ j[i]=0; i--; if(i==0)break; b char i,j[8]; for(i=8;i>0;i--){ j[i-1]=0; j[i-1] i-1 movlw 8 7 //a 7,b 8 movf i loop //a i j //i //b i j goto loop
b 7 0 0 for >0 PICC CCS (-100)+50 8 PICC 1-W unsigned char read_byte(void) { unsigned char i; unsigned char value = 0; for (i = 0; i < 8; i++) { if(read_bit()) value = 0 x 01<<i; // reads byte in, one byte at a time and then // shifts it left delay(10); // wait for rest of timeslot return(value); C C C C for (i = 0; i < 8; i++) for(i=8;i!=0;i--), CPU 0 3 value = 0 x 01<<i; value = 0 x 01<<i;, DALLAS NO1 <I; DALLAS NO1 < P> C C 0 0 0 for(i=8;i!=0;i--){ value>>=1; // value 0 if(read_bit()) value =0x80; // value 1 N C 8 16 32 64 128 256 MCU 128 sampling() unsigned int total; unsigned char i,val; for(i=0;i<128;i++){
total+=sampling(); val=total/128; C C 128 0B10000000, 7 1 0 7 128 128 N val=total/128 val=(unsigned char)(total>>7); (total<<1)>>8, 8 7 1 4 8 unsigned int total; unsigned char i=0 unsigned char val; while(!(i&0x80)){ // i 7 total+=sampling(); i++; val=(unsigned char)((total<<1)>>8); // 9 C 1 While for do while if elst switch case 2 ( a b x1 y1) ( ) count number1 red work 3 C C C ( )
4 5 (ifdef) 6 7 void Keil 8 MCU MCU MCU 9 ICCAVR Default Enable Code Compression CodeVisionAVR Tiny small IAR 7 GCCAVR 1. Keil 2 (char) (int) (long int) (float) C ICCAVR Options printf (%c %d %x
%X %u %s ) (%ld %lu %lx %lx ) (%f) C %f 3 ( a-=1 a+=1 ) inc dec a=a+1 a=a-1 C AVR ICCAVR GCCAVR IAR C inc dec 4 (1) a=a%8; a=a&7; C % 2n (2) a=pow(a,2.0); a=a*a; ( 51 ) AVR ATMega163 2 AVR 3 a=pow(a,3.0); a=a*a*a (3) a=a*4; b=b/4; a=a<<2; b=b>>2; 2n ICCAVR 2n a=a*9 a=(a<<3)+a 5 (1)
init (2) void delay (void) { unsigned int i; for (i=0;i<1000;i++) ; void delay (void) { unsigned int i; for (i=1000;i>0;i--) ; C 1~3 MCU 0 while 1~3 i (3)while do while while unsigned int i; i=0; while (i<1000) { i++; // unsigned int i; i=1000; do i--; // while (i>0); do while while 6
7