c j,ska uhsfl%da l%uf,alkh lsÍug fmr tn úiska c ndidj ms...

20
wm idudkHfhka MICRO CONTROLLER PROGRAM lsÍug Ndú;d lrk ASSEMBLER my, uÜgfï NdIdjla fia ie,fla' kuq;a my, uÜgfï NdIdjlska fÄ; ,sùfï§ l%uf,aLKhg wjYH mßÈ 100] fÄ;h yeisrùug bv ,efí' kuq;a ,sùfï myiqj fodaY fidhd .ekSfï (DEBUGGING ) myiqj wd§ lreKq /ila ksid by< uÜgfï NdId ckm%sh fjñka mj;S' PIC MICROCONTROLLER i|yd ie,iQ by, uÜgfï NdId /ils' tajd BASIC, C, PASCAL , JAVA hk NdId weiqßka ÈhQKq lr ;sfí' fuu .%ka:fhka Tng jvd ckm%sh C NdIdfjka MICRO CONTROLLER l%u f,aLKh lrk wdldrh .ek woyila ,nd §ug n,dfmdfrd;a;= fjñ' C NdIdj .;a l, MICRO CONTROLLER i|yd ÈhqKQ l, c j¾. (DIALECTS) lSmhls' MIKROC , PIC C, HI-TECH C CCS tajdhska lsysmhls' fuu .%ka:fhka Tng b.ekSug jvd myiq yd LIBRARIES /ila wka;¾.; MIKROC j,ska PIC PROGRAM lrk wdldrh b.ekaùug woyia lrñ' C j,ska uhsfl%da l%uf,aLKh lsÍug fmr Tn úiska C NdIdj ms<sn| yeoEÍu w;HdjYH fõ' flfia fj;;a C NdIdj ;rula ixlS¾K NdIdjls' my; fldgiska Tng w;HdjYH jk C NdIdfõ fldgia ms<sn| m% udKj;a ±kqula ,nd.; yel'

Upload: phamliem

Post on 23-Jul-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

 

wm idudkHfhka MICRO CONTROLLER PROGRAM lsÍug Ndú;d lrk ASSEMBLER my, uÜgfï NdIdjla fia ie,fla' kuq;a my, uÜgfï NdIdjlska fÄ; ,sùfï§ l%uf,aLKhg wjYH mßÈ 100] fÄ;h yeisrùug bv ,efí' kuq;a ,sùfï myiqj fodaY fidhd .ekSfï (DEBUGGING ) myiqj wd§ lreKq /ila ksid by< uÜgfï NdId ckm%sh fjñka mj;S' PIC MICROCONTROLLER i|yd ie,iQ by, uÜgfï NdId /ils' tajd BASIC, C, PASCAL , JAVA hk NdId weiqßka ÈhQKq lr ;sfí' fuu .%ka:fhka Tng jvd ckm%sh C NdIdfjka MICRO CONTROLLER l%u f,aLKh lrk wdldrh .ek woyila ,nd §ug n,dfmdfrd;a;= fjñ' C NdIdj .;a l, MICRO CONTROLLER i|yd ÈhqKQ l, c j¾. (DIALECTS) lSmhls' MIKROC , PIC C, HI-TECH C CCS tajdhska lsysmhls' fuu .%ka:fhka Tng b.ekSug jvd myiq yd LIBRARIES /ila wka;¾.; MIKROC j,ska PIC PROGRAM lrk wdldrh b.ekaùug woyia lrñ'                                                                                                                                                                                                 C j,ska uhsfl%da l%uf,aLKh lsÍug fmr Tn úiska C NdIdj ms<sn| yeoEÍu w;HdjYH fõ' flfia fj;;a C NdIdj ;rula ixlS¾K NdIdjls' my; fldgiska Tng w;HdjYH jk C NdIdfõ fldgia ms<sn| m%udKj;a ±kqula ,nd.; yel'  

                

 

WWHHIITTEE SSPPAACCEE White Space hkq ysia;eka i|yd fokq ,nk iuQy kduhls' Wod(- int i; float f;  int i; float f;

KKEEYYWWOORRDDSS fïjd mikroc NdIdfõ úfYaI wjYH;d i|yd fjka l, jpk fõ' fïjd Tn úiska variables i|yd mdúÉÑ fkdl, hq;=h' Wod(-

• asm • auto • break • case • char • const • continue • default • do • double • else • enum • extern • float • for • goto • if • int • long • register • return • short • signed • sizeof • static • struct • switch

 

• typedef • union • unsigned • void • volatile • while

IIDDEENNTTIIFFIIEERRSS Identifiers hkq hkdÈhg fokq ,nk fmdÿ kduhls' Wod(- temperature_V1 Pressure no_hit dat2string SUM3 _vtext

CCOOMMMMEENNTTSS hkqfjka kï flfrkafka fÄ;fha l%shdldÍ fkdjk hï jdlH LKavhhs' fÄ; fma<s ms<sn| l%uf,aLKhg hï ±kqj;a lsÍula ,nd .ekSug fïjd mdúÉÑ flf¾' Wod(- int i; // this is a comment int j;

PPUUNNCCTTUUAATTOORRSS mikroc j,È my; ±lafjk Punctuators fhdod .efka'

• [ ] – Brackets • ( ) – Parentheses • { } – Braces • , – Comma • ; – Semicolon • : – Colon • * – Asterisk • = – Equal sign • # – Pound sign

 

 

[ ] – Brackets (fldgq jryka ) (-

;ks yd nyqudk wrd (single and multidimensional arrays) ye¢kaùu i|yd m%fhdackhg .kS' Wod(- char ch, str[] = "mikro"; int mat[3][4]; /* 3 x 4 matrix */ ch = str[3]; /* 4th element */

( ) – Parentheses (jryka

hkdÈh ye¢kaùug Ndú;d lrhs' Wod(- d = c * (a + b); /* override normal precedence */ if (d == z) ++x; /* essential with conditional statement */ func(); /* function call, no args */ void func2(int n); /* function declaration with parameters */

{ } – Braces (iÕ, jryka

ixhqla; m%ldYk j, wdrïNh yd wjidkh ±laùug Ndú;d lrhs' Wod(- if (d == z) { ++x; func(); }

, – Comma ( fldudj )

fjka fldg ±laùu i|yd fhdod .kS' Wod(- void func(int n, float f, char ch);

 

  ; – Semicolon ( ;s;a fldudj )

ish¨u m%ldYk ;s;a fldudjlska wjika úh hq;=h' Wod(- a + b; /* Evaluate a + b, but discard value */ ++a;

 

: – Colon

f,an,a tlla i|yka lrhs'

start: x = 0; ...goto start;

* – Asterisk

.=K lsÍula fyda POINTER TYPE VARIABLE tlla i|yka lrhs'

= – Equal sign

úp,H yd tajdg ,ndfok w.hka w;r iudk;dj i|yka lrhs' int test[5] = { 1, 2, 3, 4, 5 }; int x = 5;

OOPPEERRAATTOORRSS Mikroc NdIdfõ operators j¾. lsysmhla Ndú;d lrhs'

• Arithmetic Operators  • Assignment Operators  • Bitwise Operators  • Logical Operators  • Relational Operators  • Conditional  Operators • Preprocessor  Operators  

 

                                                                   

 

                                                         

 

                                                              Arithmetic OperatorsArithmetic Operators

+ tl;= lsÍu - wvq lsÍu

* .=K lsÍu / fn§u + + iajhxl%Sh w.h jeäùu (auto increment) - - iajhxl%Sh w.h wvqùu (auto decrement) Wod(- /* Adding two integers */ 5 + 12 // equals 17 /* subtracting two integers */ 120 – 5 // equals 115 10 – 15 // equals – 5 /* Dividing two integers */ 5 / 3 // equals 1 12 / 3 // equals 4 /* Multiplying two integers */ 3 * 12 // equals 36 /* Adding two floating point numbers */ 3.1 + 2.4 // equals 5.5 /* Multiplying two floating point numbers */ 2.5 * 5.0 // equals 12.5 /* Dividing two floating point numbers */ 25.0 / 4.0 // equals 6.25 /* Remainder (not for float) */ 7 % 3 // equals 1 /* Post-increment operator */ j = 4; k = j++ ; // k = 4 , j = 5 /* Pre-increment operator */ j = 4; k =++ j ; // k = 5, j = 5 /* Post-decrement operator */ j = 12; k = j-- ; // k =12, j = 11

 

/* Pre-decrement operator */ j =12; k =-- j; // k =11, j =11

RELATIONAL OPERATORSRELATIONAL OPERATORS

ixikaOkh i|yd Ndú;d lrhs' ixikaOkh l, miq ms<s;=r true kï 1lao false kï 0 wdmiq tjhs'

• = = iudk • != wiudk • < úYd, • > l=vd • <= úYd, fyda iudk • >= l=vd fyda iudk

Wod(-

x = 10

x > 8 // returns 1

x == 10 // returns 1

x < 100 // returns 1

x > 20 // returns 0

x ! = 10 // returns 0

x >= 10 // returns 1

x <= 10 // returns 1

                                                

                                                 

 

 

                                                                           BITWISE OPERATORSBITWISE OPERATORS

• & ìÜ jhsiA wekAä • │ ìÜ jhsiA ´¾

• ^ ìÜ jhsiA tlAiA ´¾ • ~ wmj¾;kh • >> jï w;g shift lrhs' • << ol=Kq w;g shift lrhs'

ìÜ jhsiA Tmf¾Ika j, m%;sM, my; j.=fjka n,d.; yel' Wod(- i. 0xFA & 0xEE returns 0xEA 0xFA: 1111 1010 0xEE: 1110 1110 ---------------- 0xEA: 1110 1010 ================ ii. 0x01 | 0xFE returns 0xFF 0x08: 0000 0001 0xFE: 1111 1110 ---------------- 0xFE: 1111 1111 ================ iii. 0xAA ^ 0x1F returns 0xB5 0xAA: 1010 1010 0x1F: 0001 1111 --------------- 0xB5: 1011 0101 =============== iv. ~0xAA returns 0x55 0xAA: 1010 1010 ~ : 0101 0101 -------------------- 0x55: 0101 0101 ====================

 

v. 0x14 >> 1 returns 0x08 (shift 0x14 right by 1 digit) 0x14: 0001 0100 >>1 : 0000 1010 ---------------- 0x0A: 0000 1010 ================ vi. 0x14 >> 2 returns 0x05 (shift 0x14 right by 2 digits) 0x14: 0001 0100 >> 2: 0000 0101 ---------------- 0x05: 0000 0101 ================ vii. 0x235A << 1 returns 0x46B4 (shift left 0x235A left by 1 digit) 0x235A: 0010 0011 0101 1010 <<1 : 0100 0110 1011 0100 ----------------------------- 0x46B4 : 0100 0110 1011 0100 ============================= viii. 0x1A << 3 returns 0xD0 (shift left 0x1A by 3 digits) 0x1A: 0001 1010 <<3 : 1101 0000 ---------------- 0xD0: 1101 0000 ================

 

LOGICAL OPERATORSLOGICAL OPERATORS

• && wekAä ( logical and) • ║ ´¾ ( logical or) • ! fkdá ( logical not)

Wod(-

x = 7;

x > 0 && x < 10 // returns 1

x > 0 | | x < 10 // returns 1

x >=0 & & x < = 10 // returns 1

x >=0 & & x < 5 // returns 0

a = 10; b = 20; c = 30; d = 40;

a > b & & c > d // returns 0

b > a & & d > c // returns 1

a > b | | d > c // returns 1

ASSIGNMENT OPERATORSASSIGNMENT OPERATORS

Mikroc NdIdj ;=< Assignment Operators j¾. 2 ls' tajd kï

• Simple assignment • Compound assignment

 

SIMPLE ASSIGNMENT

Expression1 = Expression2

or

Result = Expression1 → operation→ Expression2

Wod(-

Temp = 10;

Cnt = Cnt +Temp;

CCOOMMPPOOUUNNDD AASSSSIIGGNNMMEENNTT

Result → operation = Expression1

fuys§ m<uq m%ldYkh iq¿ fldg ms<s;=re tu m%ldYkfha úp,Hhys ;=,u .nvd lrhs' Wod(-

j += k; is same as: j =j + k;

also

p*= m; is same as p =p*m;

                                                         

 

 

                                                     CCOONNDDIITTIIOONNAALL OOPPEERRAATTOORRSS

Conditional Operator tll wdldrh' (syntax of a conditional operator) Result = Expression1 ? Expression2 : Expression3 my; WodyrKfha§ x yd y fj;skA úYd, úp,H fidhd .kq ,nhs(max)' fuys§ x>y kñ max = x o ke;s kñ max = y o fõ' max =(x > y) ? x:y ;

PPRREEPPRROOCCEESSSSOORR  OOPPEERRAATTOORRSS    

fuh Ndú;d lsÍfuka my; myiqlï ,efnk w;r Tn ±kgu;a iuyrúg ASSEMBLER iuÕ fïjd Ndú;d lrkjd úh yel'

• fldkafoais iys;j PROGRAM tlla COMPILE lsÍu ^wjYH fldgia muKla l, yel'&

• ixfÄ; fjk;a ixfÄ; yd w.hkaf.ka m%;sia:dmkh l, yel' ;=<g we;=,a l, yel' WodyrK (- #define MAX =100 fuys§ MAX hk úp,H fhfok iEu ;eku variable tl 100 w.h uÕska m%;sia:dmkh lrhs' # undef MAX uÕska fuh bj;a l, yel' #ifndef MAX #define MAX 100 #endif uÕska MAX we;ae±hs mÍCId lr n,d we;akï muKla 100 uÕska m%;sia:dmkh lrhs' ke;skï tu fma<sh w;yer ouhs' #include

 

 

AArrrraayyss tlsfklg iïnkaO o;a; whs;u tlu memory block tlla hgf;a .nvd lsÍug Ndú;d lrhs' array tlla m%ldY lsÍug j¾.h" ku iy ta hgf;a Ndú;d jk uQ,hka .Kk m%ldY l, hq;=h' Wod( fuys§ uQ,hka 5 l wrdjla we;s w;r m<uq uQ,h 0 o wjika uQ,h 5 o fõ' fï w;r we;s ish¨u whs;uhka wkqhd; f,i fuußh ;=< msysghs' WodyrK (- unsigned int Total[ 5] ; SSttrruuccttuurreess hkq tlsfklg iïnkaO o whs;u j, tl;=jls' kuq;a wrdjl fuka fkdj fuhg úúO j¾.fh o;a; we;=,a l, yel' WodyrKhla jYfhka mqoa.,fhl=f.a Ôj o;a; i,ld n,uq' wdrïN jkafka structure hk keyword tl iuÕsks' bkamiq ku iy we;=<;a jk whs;u m%ldY l, yel' fuu whs;u j,g fuußfha bvla fjka lr fkd.kakd w;r l%shd;aul jk wjia:dfõ§ bv .ekSu i|yd compiler tl úiska template tlla ilia lr .kq ,efí' WodyrK (- structure Person { unsigned char name[20] ; unsigned char surname[20] ; unsigned char nationality[20] ; unsigned char age; }

 

UUnniioonn fïjd iEu w;skau j,g iudk jk w;r fjkilg we;af;a tlu memory area tl Ndú;d lsrSuhs' union flags { unsigned char x; unsigned int y; }P; Wod (- fuys§ memory area tfla m%udKh jkqfha byte 2 ka úYd,u byte tfla m%udKhhs' fuys§ Y =0 x AEFA hehs is;=jfyd;a túg X j, w.h = 0XFA ' Data types ( o;a; j¾.) mikroc o;a; j¾. lsysmhla Ndú;d lrhs' Tn mdúÉÑ lrk o;a; j¾.h ksjerÈj f;dard.ekSfuka memory b;sß lr.; yel'

D A T A T Y P E D E S C R I P T I O N S I Z E ( N U M B E R O F B I T S ) R A N G E O F V A L U E S

char Character 8 0 to 255

int Integer 16 -32768 to 32767

float Floating point 32 ±1.17549435082 ·10-38 to

±6.80564774407 ·1038

double Double precision floating

point 32

from ±1.17549435082 ·10-38 to ±6.80564774407 ·1038

D A T A T Y P E D A T A T Y P E W I T H P R E F I X

S I Z E ( N U M B E R O F B I T S ) R A N G E

char signed char 8 -128 to 128

int

unsigned int 16 0 to 65535

short int 8 0 to 255

signed short int 8 -128 to 127

long int 32 0 to 4294967295

signed long int 32 -2147483648 to 2147483647

 

SSStttaaattteeemmmeeennntttsss

Label f,an,a fÄ;hl hï fÄ; LKavhla kï lsÍug fhdod .kS' kej; kej; th l%shd;aul lrùu f,an, uÕska l, yel' Wod(- for (...) { for (...) { ... if (disaster) goto Error; ... } } . . Error: /* error handling code */

IIFF SSTTAATTEEMMEENNTT fÄ;fha hï lsis ;;a;ajhla fldkafoaishla jYfhka mÍCId lr th i;H fõ kï tl ld¾hhl=;a wi;H fõ kï tl ld¾hhl=;a bgq lrhs' Wod(- if (expression1) statement1 else statement2 /* this belongs to: if (expression3) */

SSWWIITTCCHH SSTTAATTEEMMEENNTT fuys§ switch expression tlg wod< value tl case table tflka ixikaOkh lr n,d wod< Case value tl ,nd.kS' data table i|yd Ndú;d lrhs' Wod(- switch (condition) { case condition1: Statements; break ; case condition2: Statements;

 

break ; ..................... .....................

WWHHIILLEE SSTTAATTEEMMEENNTT fuys§ While Condition tl False jk ;=re Statement tl execute ùu isÿfõ' Æma i|yd nyq,j mdúÉÑ lrhs' fldkafoais rys; while loop tlla while (1); endless loop tlla wdldrfhka yeisf¾' Wod(- while(PORTB.0 == 0) ; // Wait until PORTB.0 becomes 1 or while(PORTB.0) ; FFOORR SSTTAATTEEMMEENNTT fuys§ m<uq fldgiska fuh i|yd Ndú;d lrk úp,Hhla initialize lrk w;r bka miqj Condition tl mÍCId lrhs' f;jk fldgiska loop tl mÍlaId lrhs' fldkafoaish ix;Dma; jk ;=re fuh isÿfõ' fldkafoais rys; for loop tlla for(;;) endless loop tlla wdldrfhka yeisf¾' for(i = 0 ; i < 10; i ++) { Statements ; }

 

WWWOOORRRKKKIIINNNGGG WWWIIITTTHHH MMMIIIKKKRRROOOCCC c ia:dmkh lr.;a miq Project > New Project yryd kj jHdmD;shla weröfuka l%uf,aLKh wdrïN l, yel'

 

 

 

 

 

rEmfha ±lafjk wdldrhg Tng wjYH mrsoss SETTINGS idod .ekSu ;=<ska Tng ksjerÈj PIC tl

úkHdi.; lr .ekSug( CONFIGURE ) mq¿jk'

 

fufia ,shQ fla;h COMPILE l< úg Tng f.dkq lsysmhla ,efí'

 

túg ,efnk HEX FILE tl idudkH mßÈ Tfí PIC tlg FLASH lr .ekSug mq¿jk'

uhsfl%da C fÄ;hl iajNdjh uhsfl%da C j,ska fyda ´kEu NdIdjlska fÄ;kh lrk l, uq¿ fÄ;h l=vd fldgia j,g lvdf.k ,sùfuka fodaI fidhd .ekSu myiqh' fÄ;hla ks;ru FUNCTION DEFINE lsÍfuka wdrïN úh hq;= w;r Tn mdúÉÑ lrk VARIABLES bkamiqj DEFINE l< hq;=h' wk;=rej VOID MAIN hk FUNCTION tflka wdrïN lrk w;r fÄ;h wdrïNh yd wjidkh CURLY BRACKETS j,ska igyka fõ'

VOID (LEFT); \\ FUNCTION DEFINED

Unsigned char J = 1; \\ VARIABLE

VOID MAIN()

{ PROGRAM

}