Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng Biên son : Ks.Cao Bá Vinh - 1 - Chương I: Gii thiu Mc ñích: . Giúp cho sinh viên làm quen vi vi ñiu khin mi ATMEGA32. . Tìm hiu cu trúc AVR. . Làm quen vi ngôn ngC. . Làm quen vi trình biên dch Codvision AVR. Yêu cu : Sinh viên cn phi nm ñưc: 1.các khái nim PINx,PORTx,DDRx. 2. các chân có chc năng ñc bit. 3. các tp lnh C ( if-else, while ,do-while ,swich-case). 4. to dán mi , to thư vin , sdng chc năng to code sn. Stit lên lp : 10 tit. Bn phân chia thi lưng: Stt Ni dung Stit 1 1.1 gii thiu vi ñiu khin ATmega32. 4 2 1.2 Tp lnh và cu trúc C. 5 3 1.3 gii thiu trình biên dch Codevision 1 Trng tâm bài ging: • Bt buc sinh viên phi nm ñưc các PORTx,PINx, DDRx. • Nm ñưc các chân ngt ngoài , chân ADC, c hân PWM, counter… • Sinh viên phi nm ñưc tp lnh và cu trúc C. • Sinh viên phi bit cách to Project mi trong trình biên dch Codevision. 1.1 Gii thiu vi ñiu khin ATMEGA32.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
7/31/2019 chuong1_lhu
http://slidepdf.com/reader/full/chuong1lhu 1/28
Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng
Biên son : Ks.Cao Bá Vinh - 1 -
Chương I: Gii thiu
Mc ñích:. Giúp cho sinh viên làm quen vi vi ñiu khin mi ATMEGA32.
. Tìm hiu cu trúc AVR.
. Làm quen vi ngôn ng C.
. Làm quen vi trình biên dch Codvision AVR.
Yêu cu :Sinh viên cn phi nm ñưc:
1.các khái nim PINx,PORTx,DDRx.2. các chân có chc năng ñc bit.3. các tp lnh C ( if-else, while ,do-while ,swich-case).4. to d án mi , to thư vin , s dng chc năng to code sn.
S tit lên lp : 10 tit.Bn phân chia thi lưng:
Stt Ni dung S tit1 1.1 gii thiu vi ñiu khin ATmega32. 42 1.2 Tp lnh và cu trúc C. 53 1.3 gii thiu trình biên dch Codevision 1
Trng tâm bài ging:• Bt buc sinh viên phi nm ñưc các PORTx,PINx, DDRx.• Nm ñưc các chân ngt ngoài , chân ADC, chân PWM, counter…• Sinh viên phi nm ñưc tp lnh và cu trúc C.• Sinh viên phi bit cách to Project mi trong trình biên dch
Codevision.
1.1 Gii thiu vi ñiu khin ATMEGA32.
7/31/2019 chuong1_lhu
http://slidepdf.com/reader/full/chuong1lhu 2/28
Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng
Biên son : Ks.Cao Bá Vinh - 2 -
1.1.1 gii thiu:• vi ñiu khin ATMEGA32 là loi vi ñiu khin do công ty
Atmel sn xut vi cu trúc RISC.• Hot ñng lên ti 16MIPS (16 triu lnh trong 1 giây).• Có 32kbyte flash b nh chương trình.• Có 2kbyte Sram.• Có 1kbyte eeprom.• Np xóa 100.000 ln ñi vi eeprom .• Np xóa 10.000 ln vi b nh flash.
1.1.2 Các chc năng ñc bit:• Có 2 timer/counter 8 bit (0-255) có b chia timer.• Có 1 timer/counter 16 bit(0-65535) có b chia.• Có 1 b thi gian thc vi b dao ñng riêng bit.• Có 1 input capture(bt gi ,ño ñ rng xung).• Có 4 kênh Pwm( ñiu ch ñ rng xung).• 8 kênh ADC 8-10 bit.• Có b watchdog timer .• Chun giao tip I2C, Spi,USART.• Có b dao ñng ni 1-2-4-8Mhz(không cn gn thch anh).• ðin áp hot ñng 2.7v-5.5v.• Có 21 ña ch phc v ngt trên chip ATMEGA32.
• Thanh ghi này có chc năng ñiu khin hung xut hay nhpca chân ñiu khin.
• Nu bít tương ng là 0 thì là hưng vào.• Nu bit tương ng là 1 thì là hưng ra.
Vd1:• DDRA.0 =0 thì cng A.0 này là ch là ngõ vào.• DDRA.7=1 thì cng A.7 này là ngõ ra.
1.1.3.2 thanh ghi xut PORTx(x=A,B,C,D)• Thanh ghi này có 2 chc năng . chc năng chính là xut ngõ
ra , chc năng th 2 là cho phép ñin tr kéo lên ni khi cng
ñiu khin là ngõ vào.• ng dng là ñiu khin các ngõ ra như led ,lcd, ñng cơ …
Vd2 :• PORTC.5 =1 thì trên Pc.5 là mc 1 khi DDRC.5=1.• PORTC.5 =0 thì trên Pc.5 là mc 0 khi DDRC.5=1.• PORTC.0 =1 thì trên Pc.0 là mc 1 khi DDRC.0=1.
1.1.3.3 thanh ghi nhp PINx(x=A,B,C,D)• Thanh ghi này có chc năng nhn tín hiu ngõ vào .• ng dng như là nút nhn , ñc các tín hiu adc , cm bin …
Vd3 :• PORTD.0=PINC.0 thì trên chân PC.0 này bng mc gì thì
PD.0 bng mc ñy(chú ý là DDRC.0=0,DDRD.0=1,PORTC.0=1).
Câu hi hiu bài:Câu 1 : vi ñiu khin ATmega32 có my phn b nh.Câu 2 : vi ñiu khin ATmega32 có bao nhiêu b nh chương trình.Câu 3 : vi ñiu khin ATmega32 có bao nhiêu chân ñiu khin I/O.Câu 4 : có my timer , và nêu ñim ni bt ca nó.
Câu 5: thit b ngoi vi ca ATmega32 gm có nhng gì.Câu 6: hãy ñiu khin 4 led ñơn và 4 nút nhn trên cng PC.Câu 7: hãy cho bit trong 1 thi ñim 1 chân VðK có th va là ngõ vào
va 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ó my kênh adc?
7/31/2019 chuong1_lhu
http://slidepdf.com/reader/full/chuong1lhu 4/28
Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng
Biên son : Ks.Cao Bá Vinh - 4 -
Câu 10 : ng dng ca ADC dùng làm gì? , cho 5 ví d ng dng.Câu 11: ATMEGA32 có máy cái ngt ngoài , hày lit kê ra.Câu 12 : ATMEGA32 có my chân ñiu xung , chúng nm chân nào.Câu 13 : chc năng Input capture là gì? Hãy nêu ng dng ca nó.Câu 14 : I2C là chun giao tip gì? SPI và USART ging và khác nhau ch
nào hãy so sánh .Câu 15: ATMEGA32 và AT89Sxx có gì ging và khác , hãy so sánh chúng.
1.2 Tp lnh và cu trúc C:
1.2.1 KHAI BÁO BIN:
Type Size (Bits) Range bit 1 0 , 1 bool, _Bool 8 0 , 1char 8 -128 to 127unsigned char 8 0 to 255signed char 8 -128 to 127int 16 -32768 to 32767short int 16 -32768 to 32767unsigned int 16 0 to 65535signed int 16 -32768 to 32767long int 32 -2147483648 to 2147483647unsigned long int 32 0 to 4294967295signed long int 32 -2147483648 to 2147483647float 32 ±1.175e-38 to ±3.402e38double 32 ±1.175e-38 to ±3.402e38
Ta có rt nhiu kiu khai báo bin , tùy ng dng mà ta s dng cho phù hp ñva tit kim b nh và tăng tc ñ s lý.
T khóa unsigned là không du .
1.2.2 ðNH NGHĨA :ðnh nghĩa có chc năng thay th cái gì ñó ñ tin cho ta thay ñi các ng
dng 1 cách nhanh chóng.T khóa “#define” dùng ñ ñnh nghĩa và cui dòng không có du “;”.
g¸n cho hm. Gi¸ trÞ cña hm 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ôcC¸c tham sè thùc, c¸c ®èi v biÕn côcC¸c tham sè thùc, c¸c ®èi v biÕn côcC¸c tham sè thùc, c¸c ®èi v biÕn côc bé :bé :bé :bé :
Do ®èi v biÕn côc bé ®Òu cã ph¹m vi ho¹t ®éng trong cïng mét hm nªn ®èi v
biÕn côc bé cÇn cã tªn kh¸c nhau.
7/31/2019 chuong1_lhu
http://slidepdf.com/reader/full/chuong1lhu 18/28
Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng
Biên son : Ks.Cao Bá Vinh - 18 -
§èi v biÕn côc bé ®Òu l c¸c biÕn tù ®éng. Chóng ®−îc cÊp ph¸t bé nhí khi
hm ®−îc xÐt ®Õn v bÞ xo¸ khi ra khái hm nªn ta kh«ng thÓ mang gi¸ trÞ cña ®èi ra
Chó ý :Chó ý :Chó ý :Chó ý :Hm ®Ö qui so víi hm 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 hm ®Ö qui sÏ dïng nhiÒu bé nhí trªn ng¨n xÕp v cã thÓ dÉn ®Õn trn
ng¨n xÕp. V× vËy khi gÆp mét bi 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 ny. Song vÉn tån t¹i nh÷ng bi to¸n chØ cã thÓ gi¶i b»ng ®Ö
qui.
1.2.10.31.2.10.31.2.10.31.2.10.3.2. C¸c bi to¸n cã thÓ dïng ®Ö qui :.2. C¸c bi to¸n cã thÓ dïng ®Ö qui :.2. C¸c bi to¸n cã thÓ dïng ®Ö qui :.2. C¸c bi to¸n cã thÓ dïng ®Ö qui :
Ph−¬ng ph¸p ®Ö qui th−êng ¸p dông cho c¸c bi to¸n phô thuéc tham sè cã hai
®Æc ®iÓm sau :
Bi to¸n dÔ dng 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, bi to¸n cã thÓ qui vÒ mét bi 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.
Bi to¸n tÝnh n giai thõa nªu trªn thÓ hiÖn râ nÐt ®Æc ®iÓu ny.
1.2.10.31.2.10.31.2.10.31.2.10.3.4. C¸c vÝ dô vÒ dïng hm ®Ö qui :.4. C¸c vÝ dô vÒ dïng hm ®Ö qui :.4. C¸c vÝ dô vÒ dïng hm ®Ö qui :.4. C¸c vÝ dô vÒ dïng hm ®Ö qui :
VÝ dô 1 :VÝ dô 1 :VÝ dô 1 :VÝ dô 1 :
Bi to¸n dïng ®Ö qui t×m USCLN cña hai sè nguyªn d−¬ng a v b.
Trong tr−êng hîp suy biÕn, khi a=b th× USCLN cña a v b chÝnh l gi¸ trÞ cña
chóng.Trong tr−êng hîp chung :
uscln(a,b)=uscln(a-b,b) nÕu a>b
uscln(a,b)=uscln(a,b-a) nÕu a<b
Ta cã thÓ viÕt ch−¬ng tr×nh nh− sau :
#include "stdio.h"
int uscln(int a,int b ); /* Nguyªn mÉu hm*/
main()
{ int m,n;
printf("\n Nhap cac gia tri cua a va b :");
scanf("%d%d",&m,&n);
printf("\n USCLN cua a=%d va b=%d la :%d",m,m,uscln(m,n))
}
int uscln(int a,int b)
{
if (a==b)
return a;
else
if (a>b)
return uscln(a-b,b);
else
return uscln(a,b-a);
}
VÝ dô 2 :VÝ dô 2 :VÝ dô 2 :VÝ dô 2 :
Ch−¬ng tr×nh ®äc vo mét sè råi in nã ra d−íi d¹ng c¸c ký tù liªn tiÕp.
# include "stdio.h"
7/31/2019 chuong1_lhu
http://slidepdf.com/reader/full/chuong1lhu 23/28
Giáo trình AVR Khoa ðin-ðin T-Trưng ðH Lc Hng
Biên son : Ks.Cao Bá Vinh - 23 -
# 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.111.2.111.2.111.2.11 Bé tiÒn sö lý CBé tiÒn sö lý CBé tiÒn sö lý CBé 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 hm néi dung cña