Giáo trình AVR - Chương 1: Giới thiệu - Cao Bá Vinh
Mục đích:
. Giúp cho sinh viên làm quen với vi điều khiển mới ATMEGA32.
. Tìm hiểu cấu trúc AVR.
. Làm quen với ngôn ngữ C.
. Làm quen với trình biên dịch Codvision AVR.
Yêu cầu :
Sinh viên cần phải nắm được:
1.các khái niệm PINx,PORTx,DDRx.
2. các chân có chức năng đặc biệt.
3. các tập lệnh C ( if-else, while ,do-while ,swich-case).
4. tạo dự án mới , tạo thư viện , sử dụng chức năng tạo code sẵn.
. Giúp cho sinh viên làm quen với vi điều khiển mới ATMEGA32.
. Tìm hiểu cấu trúc AVR.
. Làm quen với ngôn ngữ C.
. Làm quen với trình biên dịch Codvision AVR.
Yêu cầu :
Sinh viên cần phải nắm được:
1.các khái niệm PINx,PORTx,DDRx.
2. các chân có chức năng đặc biệt.
3. các tập lệnh C ( if-else, while ,do-while ,swich-case).
4. tạo dự án mới , tạo thư viện , sử dụng chức năng tạo code sẵn.
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình AVR - Chương 1: Giới thiệu - Cao Bá Vinh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- giao_trinh_avr_chuong_1_gioi_thieu_cao_ba_vinh.pdf
Nội dung text: Giáo trình AVR - Chương 1: Giới thiệu - Cao Bá Vinh
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng Chương I: Gi i thi u M c ñích: . Giúp cho sinh viên làm quen v i vi ñi u khi n m i ATMEGA32. . Tìm hi u c u trúc AVR. . Làm quen v i ngôn ng C. . Làm quen v i trình biên d ch Codvision AVR. Yêu c u : Sinh viên c n ph i n m ñư c: 1.các khái ni m PINx,PORTx,DDRx. 2. các chân có ch c năng ñ c bi t. 3. các t p l nh C ( if else, while ,do while ,swich case). 4. t o d án m i , t o thư vi n , s d ng ch c năng t o code s n. S ti t lên l p : 10 ti t. B n phân chia th i lư ng: Stt N i dung S ti t 1 1.1 gi i thi u vi ñi u khi n ATmega32. 4 2 1.2 T p l nh và c u trúc C. 5 3 1.3 gi i thi u trình biên d ch Codevision 1 Tr ng tâm bài gi ng: • B t bu c sinh viên ph i n m ñư c các PORTx,PINx, DDRx. • N m ñư c các chân ng t ngoài , chân ADC, chân PWM, counter • Sinh viên ph i n m ñư c t p l nh và c u trúc C. • Sinh viên ph i bi t cách t o Project m i trong trình biên d ch Codevision. 1.1 Gi i thi u vi ñi u khi n ATMEGA32. Biên so n : Ks.Cao Bá Vinh 1
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng g m có 3 thanh ghi DDRx, PORTx,PINx. 1.1.3.1 Thanh ghi hư ng DDRx(x=A,B,C,D). • Thanh ghi này có ch c năng ñi u khi n hu ng xu t hay nh p c a chân ñi u khi n. • N u bít tương ng là 0 thì là hư ng vào. • N u bit tương ng là 1 thì là hư ng ra. Vd1: • DDRA.0 =0 thì c ng A.0 này là ch là ngõ vào. • DDRA.7=1 thì c ng A.7 này là ngõ ra. 1.1.3.2 thanh ghi xu t PORTx(x=A,B,C,D) • Thanh ghi này có 2 ch c năng . ch c năng chính là xu t ngõ ra , ch c năng th 2 là cho phép ñi n tr kéo lên n i khi c ng ñi u khi n là ngõ vào. • ng d ng là ñi u khi n các ngõ ra như led ,lcd, ñ ng cơ Vd2 : • PORTC.5 =1 thì trên Pc.5 là m c 1 khi DDRC.5=1. • PORTC.5 =0 thì trên Pc.5 là m c 0 khi DDRC.5=1. • PORTC.0 =1 thì trên Pc.0 là m c 1 khi DDRC.0=1. 1.1.3.3 thanh ghi nh p PINx(x=A,B,C,D) • Thanh ghi này có ch c năng nh n tín hi u ngõ vào . • ng d ng như là nút nh n , ñ c các tín hi u adc , c m bi n Vd3 : • PORTD.0=PINC.0 thì trên chân PC.0 này b ng m c gì thì PD.0 b ng m c ñ y(chú ý là DDRC.0=0, DDRD.0=1,PORTC.0=1). Câu h i hi u bài: Câu 1 : vi ñi u khi n ATmega32 có m y ph n b nh . Câu 2 : vi ñi u khi n ATmega32 có bao nhiêu b nh chương trình. Câu 3 : vi ñi u khi n ATmega32 có bao nhiêu chân ñi u khi n I/O. Câu 4 : có m y timer , và nêu ñi m n i b t c a nó. Câu 5: thi t b ngo i vi c a ATmega32 g m có nh ng gì. Câu 6: hãy ñi u khi n 4 led ñơn và 4 nút nh n trên c ng PC. Câu 7: hãy cho bi t trong 1 th i ñi m 1 chân VðK có th v a là ngõ vào v a là ngõ ra ñư c không? Câu 8: khi nào thì dùng PINx , khi nào dùng PORTx, và thanh ghi DDRx dùng làm gì. Câu 9: trong ATMEGA32 có m y kênh adc? Biên so n : Ks.Cao Bá Vinh 3
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng #define data_led PORTC #define motor_left OCR1AL #define motor_right OCR1BL #define un unsigned #define high(x) (((x) & 0xFF00) >> 8) #define low(x) ((unsigned char)(x)) 1.2.3 . Thay Th Ki u : ð thay th ki u ta có th dung t khóa “typedef” C u trúc : typedef ki u d li u ñ t tên; Vd: typedef int so_nguyen; Typedef char byte; Typedef double so_thuc; Sau khi chúng ta ñ t tên thì chúng ta có th s d ng tên m i này mà ñ t tên cho khai báo bi n. Vd: so_nguyen I,j,k,l;// lúc này thì các bi n I,j,k,l là ki u s nguyên 16bit. 1.2.4 .L NH IF ELSE IF L nh if else if là l nh ki m tra ñi u ki n . If { ðúng ñi u ki n 1 thì làm.} Else {ði u ki n 1 sai thì làm.} . Chú ý n u th c hi n 1 dòng l nh thì không c n d u {}. Vd1: Int i=10; If (i>10) i=i+1; Else i=i 1; Vd2: int i=5,j; If (i==7) j=0; Else if(i==10) j=j+2; Else if(i==5) j=i+1; Else j=j+100; 1.2.4 .L NH WHILE(ñi u ki n). L nh while là l nh ki m tra ñi u ki n trư c r i m i th c thi kh i l nh . Biên so n : Ks.Cao Bá Vinh 5
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng khèi lÖnh 1 case n2 khèi lÖnh 2 case nk khèi lÖnh k [ default khèi lÖnh k+1 ] } Víi ni l c¸c sè nguyªn, h»ng ký tù hoÆc biÓu thøc h»ng. C¸c ni cÇn cã gi¸ trÞ kh¸c nhau. §o¹n ch−¬ng tr×nh n»m gi÷a c¸c dÊu { } gäi l th©n cña to¸n tö switch. default l mét th nh phÇn kh«ng b¾t buéc ph¶i cã trong th©n cña switch. Sù ho¹t ®éng cña to¸n tö switch phô thuéc v o gi¸ trÞ cña biÓu thøc viÕt trong dÊu ngoÆc ( ) nh− sau : Khi gi¸ trÞ cña biÓu thøc n y b»ng ni, m¸y sÏ nh¶y tíi c¸c c©u lÖnh cã nh n l case ni. Khi gi¸ trÞ biÓu thøc kh¸c tÊt c¶ c¸c ni th× c¸ch l m viÖc cña m¸y l¹i phô thuéc v o sù cã mÆt hay kh«ng cña lÖnh default nh− sau : Khi cã default m¸y sÏ nh¶y tíi c©u lÖnh sau nh n default. Khi kh«ng cã default m¸y sÏ nh¶y ra khái cÊu tróc switch. Chó ý : M¸y sÏ nh¶y ra khái to¸n tö switch khi nã gÆp c©u lÖnh break hoÆc dÊu ngoÆc nhän ®ãng cuèi cïng cña th©n switch. Ta còng cã thÓ dïng c©u lÖnh goto trong th©n cña to¸n tö switch ®Ó nh¶y tíi mét c©u lÖnh bÊt kú bªn ngo i switch. Biên so n : Ks.Cao Bá Vinh 7
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng case 6:printf("Trung binh\n");break; case 7: case 8:printf("Kha\n");break; case 9: case 10:printf("Gioi\n");break; default:printf(Vao sai\n); } printf("Tiep tuc 1, dung 0 :") scanf("%d",&diem); if (diem==1) goto tt; getch(); return; } 11 221.2.71.2 .7 . CÊu tróc lÆp víi to¸n tö for : To¸n tö for dïng ®Ó x©y dùng cÊu tróc lÆp cã d¹ng sau : for ( biÓu thøc 1; biÓu thøc 2; biÓu thøc 3) LÖnh hoÆc khèi lÖnh ; To¸n tö for gåm ba biÓu thøc v th©n for. Th©n for l mét c©u lÖnh hoÆc mét khèi lÖnh viÕt sau tõ kho¸ for. BÊt kú biÓu thøc n o trong ba biÓu thøc trªn cã thÓ v¾ng mÆt nh−ng ph¶i gi÷ dÊu ; . Th«ng th−êng biÓu thøc 1 l to¸n tö g¸n ®Ó t¹o gi¸ trÞ ban ®Çu cho biÕn ®iÒu khiÓn, biÓu thøc 2 l mét quan hÖ logic biÓu thÞ ®iÒu kiÖn ®Ó tiÕp tôc chu tr×nh, biÓu thøc ba l mét to¸n tö g¸n dïng ®Ó thay ®æi gi¸ trÞ biÕn ®iÒu khiÓn. Ho¹t ®éng cña to¸n tö for : To¸n tö for ho¹t ®éng theo c¸c b−íc sau : X¸c ®Þnh biÓu thøc 1 X¸c ®Þnh biÓu thøc 2 Tuú thuéc v o tÝnh ®óng sai cña biÓu thøc 2 ®Ó m¸y lùa chän mét trong hai nh¸nh : Biên so n : Ks.Cao Bá Vinh 9
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng { c=x[i];x[i]=x[j];x[j]=c; } fprintf(stdprn,“\n Day so dao la \n\n”); for (i=0;i<n;++i) fprintf(stdprn,“%8.2f”,x[i]); } C¸ch 2 : #include “stdio.h” float x[]={1.3,2.5,7.98,56.9,7.23}; int n=sizeof(x)/sizeof(float); main() { int i,j; float c; for (i=0,j=n 1;i<j;c=x[i],x[i]=x[j],x[j]=c,++i, j) fprintf(stdprn,“\n Day so dao la \n\n”); for (i=0;++i<n;) fprintf(stdprn,“%8.2f”,x[i]); } C¸ch 3 : #include “stdio.h” float x[]={1.3,2.5,7.98,56.9,7.23}; int n=sizeof(x)/sizeof(float); main() { int i=0,j=n 1; float c; for ( ; ; ) { c=x[i];x[i]=x[j];x[j]=c; Biên so n : Ks.Cao Bá Vinh 11
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng 1.2.8 C©u lÖnh break : C©u lÖnh break cho phÐp ra khái c¸c chu tr×nh víi c¸c to¸n tö for, while v switch. Khi cã nhiÒu chu tr×nh lång nhau, c©u lÖnh break sÏ ®−a m¸y ra khái chu tr×nh bªn trong nhÊt chøa nã kh«ng cÇn ®iÒu kiÖn g×. Mäi c©u lÖnh break cã thÓ thay b»ng c©u lÖnh goto víi nh n thÝch hîp. VÝ dô : BiÕt sè nguyªn d−¬ng n sÏ l sè nguyªn tè nÕu nã kh«ng chia hÕt cho c¸c sè nguyªn trong kho¶ng tõ 2 ®Õn c¨n bËc hai cña n. ViÕt ®o¹n ch−¬ng tr×nh ®äc v o sè nguyªn d−¬ng n, xem n cã l sè nguyªn tè. # include "stdio.h" # include "math.h" unsigned int n; main() { int i,nt=1; printf("\n cho n="); scanf("%d",&n); for (i=2;i<=sqrt(n);++i) if ((n % i)==0) { nt=0; break; } if (nt) printf("\n %d la so nguyen to",n); else printf("\n %d khong la so nguyen to",n); } 1.2.9 C©u lÖnh continue ::: Tr¸i víi c©u lÖnh break, lÖnh continue dïng ®Ó b¾t ®Çu mét vßng míi cña chu tr×nh chøa nã. Trong while v do while, lÖnh continue chuyÓn ®iÒu Biên so n : Ks.Cao Bá Vinh 13
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng ++soptd; } printf("\n So phan tu duong la : %d",soptd); printf("\n Tong cac phan tu duong la : %8.2f",tongduong); printf("\n Cuc dai phan tu duong la : %8.2f",cucdai); } 1.2.10 Hàm Mét ch−¬ng tr×nh viÕt trong ng«n ng÷ C l mét d y c¸c h m, trong ®ã cã mét h m chÝnh ( h m main() ). H m chia c¸c b i to¸n lín th nh c¸c c«ng viÖc nhá h¬n, gióp thùc hiÖn nh÷ng c«ng viÖc lÆp l¹i n o ®ã mét c¸ch nhanh chãng m kh«ng ph¶i viÕt l¹i ®o¹n ch−¬ng tr×nh. Thø tù c¸c h m trong ch−¬ng tr×nh l bÊt kú, song ch−¬ng tr×nh bao giê còng ®i thùc hiÖn tõ h m main(). 1.2.10.1 C¬ së : H m cã thÓ xem l mét ®¬n vÞ ®éc lËp cña ch−¬ng tr×nh. C¸c h m cã vai trß ngang nhau, v× vËy kh«ng cã phÐp x©y dùng mét h m bªn trong c¸c h m kh¸c. X©y dùng mét h m bao gåm: khai b¸o kiÓu h m, ®Æt tªn h m, khai b¸o c¸c ®èi v ®−a ra c©u lÖnh cÇn thiÕt ®Ó thùc hiÖn yªu cÇu ®Ò ra cho h m. Mét h m ®−îc viÕt theo mÉu sau : type tªn h m ( khai b¸o c¸c ®èi ) { Khai b¸o c¸c biÕn côc bé C¸c c©u lÖnh [return[biÓu thøc];] } Dßng tiªu ®Ò : Trong dßng ®Çu tiªn cña h m chøa c¸c th«ng tin vÒ : kiÓu h m, tªn h m, kiÓu v tªn mçi ®èi. Biên so n : Ks.Cao Bá Vinh 15
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng printf("\n Max cua ba so x=%8.2f y=%8.2f z=%8.2f la : %8.2f", x,y,z,max3s(x,y,z)); } /* KÕt thóc h m main*/ float max3s(float a,float b,float c) { float max; max=a; if (max<b) max=b; if (max<c) max=c; return(max); } /* KÕt thóc h m max3s*/ Quy t¾c ho¹t ®éng cña h m : Mét c¸ch tæng qu¸t lêi gäi h m cã d¹ng sau : tªn h m ([Danh s¸ch c¸c tham sè thùc]) Sè c¸c tham sè thùc tÕ thay v o trong danh s¸ch c¸c ®èi ph¶i b»ng sè tham sè h×nh thøc v lÇn l−ît chóng cã kiÓu t−¬ng øng víi nhau. Khi gÆp mét lêi gäi h m th× nã sÏ b¾t ®Çu ®−îc thùc hiÖn. Nãi c¸ch kh¸c, khi m¸y gÆp lêi gäi h m ë mét vÞ trÝ n o ®ã trong ch−¬ng tr×nh, m¸y sÏ t¹m dêi chç ®ã v chuyÓn ®Õn h m t−¬ng øng. Qu¸ tr×nh ®ã diÔn ra theo tr×nh tù sau : CÊp ph¸t bé nhí cho c¸c biÕn côc bé. G¸n gi¸ trÞ cña c¸c tham sè thùc cho c¸c ®èi t−¬ng øng. Thùc hiÖn c¸c c©u lÖnh trong th©n h m. Khi gÆp c©u lÖnh return hoÆc dÊu } cuèi cïng cña th©n h m th× m¸y sÏ xo¸ c¸c ®èi, biÕn côc bé v ra khái h m. NÕu trë vÒ tõ mét c©u lÖnh return cã chøa biÓu thøc th× gi¸ trÞ cña biÓu thøc ®−îc g¸n cho h m. Gi¸ trÞ cña h m sÏ ®−îc sö dông trong c¸c biÓu thøc chøa nã. C¸c tham sè thùc, c¸c ®èi v biÕn côc bé : Do ®èi v biÕn côc bé ®Òu cã ph¹m vi ho¹t ®éng trong cïng mét h m nªn ®èi v biÕn côc bé cÇn cã tªn kh¸c nhau. Biên so n : Ks.Cao Bá Vinh 17
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng if (max =0*/ { long int gtphu=1; int i; for (i=1;i 0 H m tÝnh n! theo ph−¬ng ph¸p ®Ö qui cã thÓ ®−îc viÕt nh− sau : long int gtdq(int n) { if (n==0 || n==1) return 1; else Biên so n : Ks.Cao Bá Vinh 19
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng n l¹i hiÓu l thø nhÊt, nã cã gi¸ trÞ b»ng 3, do vËy gi¸ trÞ cña biÓu thøc trong (*) l 3.2.1=6. ChÝnh gi¸ trÞ n y ®−îc sö dông trong c©u lÖnh printf cña h m main() nªn kÕt qu¶ in ra trªn m n h×nh l : 3!=6 Chó ý : H m ®Ö qui so víi h m cã thÓ dïng vßng lÆp th× ®¬n gi¶n h¬n, tuy nhiªn víi m¸y tÝnh khi dïng h m ®Ö qui sÏ dïng nhiÒu bé nhí trªn ng¨n xÕp v cã thÓ dÉn ®Õn tr n ng¨n xÕp. V× vËy khi gÆp mét b i to¸n m cã thÓ cã c¸ch gi¶i lÆp ( kh«ng dïng ®Ö qui ) th× ta nªn dïng c¸ch lÆp n y. Song vÉn tån t¹i nh÷ng b i to¸n chØ cã thÓ gi¶i b»ng ®Ö qui. 1.2.10.31.2.10.3.2 2. C¸c b i to¸n cã thÓ dïng ®Ö qui : Ph−¬ng ph¸p ®Ö qui th−êng ¸p dông cho c¸c b i to¸n phô thuéc tham sè cã hai ®Æc ®iÓm sau : B i to¸n dÔ d ng gi¶i quyÕt trong mét sè tr−êng hîp riªng øng víi c¸c gi¸ trÞ ®Æc biÖt cña tham sè. Ng−êi ta th−êng gäi l tr−êng hîp suy biÕn. Trong tr−êng hîp tæng qu¸t, b i to¸n cã thÓ qui vÒ mét b i to¸n cïng d¹ng nh−ng gi¸ trÞ tham sè th× bÞ thay ®æi. Sau mét sè h÷u h¹n b−íc biÕn ®æi dÖ qui nã sÏ dÉn tíi tr−êng hîp suy biÕn. B i to¸n tÝnh n giai thõa nªu trªn thÓ hiÖn râ nÐt ®Æc ®iÓu n y. 1.2.10.31.2.10.3.3 3. C¸ch x©y dùng h m ®Ö qui : H m ®Ö qui th−êng ®−îc x©y dùng theo thuËt to¸n sau : if ( tr−êng hîp suy biÕn) { Tr×nh b y c¸ch gi¶i b i to¸n khi suy biÕn } else /* Tr−êng hîp tæng qu¸t */ { Gäi ®Ö qui tíi h m ( ®ang viÕt ) víi c¸c gi¸ trÞ kh¸c cña tham sè } Biên so n : Ks.Cao Bá Vinh 21
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng # include "conio.h" void prind(int n); main() { int a; clrscr(); printf("n="); scanf("%d",&a); prind(a); getch(); } void prind(int n) { int i; if (n<0) { putchar(' '); n= n; } if ((i=n/10)!=0) prind(i); putchar(n%10+'0'); } 1.2.11 Bé tiÒn sö lý C ::: C ®−a ra mét sè c¸ch më réng ng«n ng÷ b»ng c¸c bé tiÒn sö lý macro ®¬n gi¶n. Cã hai c¸ch më réng chÝnh l #define m ta ® häc v kh¶ n¨ng bao h m néi dung cña c¸c file kh¸c v o file ®ang ®−îc dÞch. Bao h m file : §Ó dÔ d ng xö lý mét tËp c¸c #define v khai b¸o ( trong c¸c ®èi t−îng kh¸c ), C ®−a ra c¸ch bao h m c¸c file kh¸c v o file ®ang dÞch cã d¹ng : #include "tªn file" Biên so n : Ks.Cao Bá Vinh 23
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng Ta còng cã thÓ ®Þnh nghÜa c¸c macro cã ®èi, do vËy v¨n b¶n thay thÕ sÏ phô thuéc v o c¸ch gäi tíi macro. VÝ dô : §Þnh nghÜa macro gäi max nh− sau : #define max(a,b) ((a)>(b) ?(a):(b)) ViÖc sö dông : x=max(p+q,r+s); t−¬ng ®−¬ng víi : x=((p+q)>(r+s) ? (p+q):(r+s)); Nh− vËy ta cã thÓ cã h m tÝnh cùc ®¹i viÕt trªn mét dßng. Chõng n o c¸c ®èi cßn gi÷ ®−îc tÝnh nhÊt qu¸n th× macro n y vÉn cã gi¸ trÞ víi mäi kiÓu d÷ liÖu, kh«ng cÇn ph¶i cã c¸c lo¹i h m max kh¸c cho c¸c kiÓu d÷ liÖu kh¸c nh−ng vÉn ph¶i cã ®èi cho c¸c h m. TÊt nhiªn nÕu ta kiÓm tra l¹i viÖc më réng cña h m max trªn, ta sÏ thÊy r»ng nã cã thÓ g©y ra sè bÉy. BiÓu thøc ® ®−îc tÝnh l¹i hai lÇn v ®iÒu n y l kh«ng tèt nÕu nã g©y ra hiÖu qu¶ phô kiÓu nh− c¸c lêi gäi h m v to¸n tö t¨ng. CÇn ph¶i thËn träng dïng thªm dÊu ngoÆc ®Ó ®¶m b¶o trËt tù tÝnh to¸n. Tuy vËy, macro vÉn rÊt cã gi¸ trÞ. Chó ý : Kh«ng ®−îc viÕt dÊu c¸ch gi÷a tªn macro víi dÊu më ngoÆc bao quanh danh s¸ch ®èi. VÝ dô : XÐt ch−¬ng tr×nh sau : main() { int x,y,z; x=5; y=10*5; z=x+y; z=x+y+6; z=5*x+y; Biên so n : Ks.Cao Bá Vinh 25
- Giáo trình AVR Khoa ði n ði n T Trư ng ðH L c H ng Câu 5: c u trúc thay th ki u là gì. Câu 6: l nh if và elseif khác nhau ch nào. Câu 7: l nh if và switch case b n hãy so sánh chúng. Câu 8: l nh while {} , và do{}while b n hãy so sánh chúng. Câu 9: khi nào dùng l nh while. Câu 10 : khi nào dùng l nh do{}while. Câu 11: b n hãy cho bi t 3 ki u vi t này khác nhau gì không: a. while(++i 100;i=i+8) ; Câu 17: b n hãy nh n xét ñúng hay sai ch nào, t i sao? For(i=0,j=10,k=3;k<666;j++,k+=j+i,i=i+8) ; Câu 18: câu l nh break và continue ng d ng làm gì ,cho ví d . Câu 19: b n cho bi t th nào là bi n c c b và bi n toàn c c , trong C có bao nhiêu lo i bi n? Câu 20: hàm và macro gi ng và khác nhau ch nào?. Câu 21: b n hãy cho ví d hàm có ñ i s và không ñ i s . Câu 22: b n hãy cho ví d hàm có giá tr tr v và không giá tr tr v . Biên so n : Ks.Cao Bá Vinh 27