; CC7A Ver 1.0D, Copyright (c) B Knudsen Data ; C compiler for the PIC18 microcontrollers ; ************ 24. Feb 2011 12:28 ************* processor 17C766 radix DEC WREG EQU 0x0A TBLPTR EQU 0x0D Carry EQU 0 ug24 EQU 0x320 table1 EQU 0x23 cgt EQU 0x29 pro EQU 0x124 ov0 EQU 0 ov1 EQU 0x22 ov2 EQU 0x22 ov3 EQU 7 uu16 EQU 0x321 uu24 EQU 0x26 table2 EQU 0x23 i EQU 0x120 ci EQU 0x121 GOTO main ; FILE 17\demo-var.c ;// DEFINING RAM VARIABLES ; ;#pragma chip PIC17C766 // select device ; ; ;bit bt; // a bit variable ;char ga, c8; // two 8 bit unsigned char variables ; ;bank1 char a; // stating the RAM bank directly ; ;bank3 uns24 ug24; // 24 bit unsigned integer in bank 3 ; ;uns16 table1[3]; // a table with 3 elements of 16 bit ; ; ;struct { // a structure of 2 char variables ; char b; ; char c; ;} cgt; ; ; ;typedef struct { // a typedef ; int tab[2]; ; struct { ; uns8 l1; ; uns8 l2; ; } vx; ;} Txx; ; ;bank2 Txx ax, bx[2]; // using the defined type ; ; ;#pragma rambank 3 // defining the RAM bank for following definitions ;char m1; ;bank0 char uu1; ;int24 m2; ; ;#pragma rambank - // unbanked RAM ;char yy; ; ;#pragma rambank 1 ;char pp; ;shrBank int16 ir; // unbanked RAM ; ; ;const char *pro[3]; // a table in RAM of pointers to 'const' data ; ; ;// OVERLAY DEFINITIONS ;// variables overlaying another variable or table ;bit ov0 @ bt; // full overlay ;char ov1 @ c8; // full overlay ; ;int8 ov2 @ c8; // full overlay, different type ; ;bit ov3 @ ug24.23; // partial overlay ;uns16 uu16 @ ug24.high16; // partial overlay ;uns24 uu24 @ table1[1].high8; // partial overlay ;char table2[5] @ table1[0]; // partial overlay ; ; ; ;void main(void) ;{ main ; cgt.c = 0; MOVLR 0 CLRF cgt+1,1 ; ; ov0 = 0; BCF 0x20,ov0 ; ov1 = 0; CLRF ov1,1 ; ov2 = 0; CLRF ov2,1 ; ov3 = 0; MOVLR 3 BCF 0x322,ov3 ; ; ug24 = 0; CLRF ug24,1 CLRF ug24+1,1 CLRF ug24+2,1 ; uu16 = 0; CLRF uu16,1 CLRF uu16+1,1 ; ; uu24 = 0; MOVLR 0 CLRF uu24,1 CLRF uu24+1,1 CLRF uu24+2,1 ; table1[2] = 0; CLRF table1+4,1 CLRF table1+5,1 ; table1[0] = 0; CLRF table1,1 CLRF table1+1,1 ; table2[0] = 0; CLRF table2,1 ; ; pro[0] = "Hello"; MOVLR 1 CLRF pro,1 ; pro[1] = "News"; MOVLW 6 MOVWF pro+1 ; ; char i = *pro[0]; MOVFP pro,WREG CALL _const1 MOVWF i ;} SLEEP GOTO main _const1 MOVWF ci MOVLW 0 MOVWF TBLPTR+1 RRCF ci,W ANDLW 127 ADDLW 45 MOVWF TBLPTR BTFSC 0x04,Carry INCF TBLPTR+1,1 TABLRD 0,0,WREG TLRD 0,WREG BTFSC ci,0 TLRD 1,WREG RETURN DW 0x6548 DW 0x6C6C DW 0x6F DW 0x654E DW 0x7377 DW 0x0 END ; *** KEY INFO *** ; 0x0001 P0 30 word(s) 0 % : main ; 0x001F P0 20 word(s) 0 % : _const1 ; RAM usage: 41 bytes (2 local), 861 bytes free ; Maximum call level: 1 ; Codepage 0 has 51 word(s) : 0 % ; Codepage 1 has 0 word(s) : 0 % ; Total of 51 code words (0 %)