You are on page 1of 10

Bi 1 - Lp trnh cho led -nt bm

y l bi u tin ca lot bi v AVR. Sau khi kt thc bi u tin bn d dng


lp trinh input v output cho AVR.
Tm tt : Lp trnh iu khin led bt tt ,s dng cch nh ngha PIN v
PORT ,cch dng th vin delay.h ca codevision.

Gii thiu:

Cu trc chn ca AVR c th phn bit r chc nng (vo ra) trng thi (0 1) t
ta c 4 kiu vo ra cho mt chn ca avr.Khc vi 89 l ch c 2 trng thi duy
nht (0 1) . c bit ngun t chn ca AVR kho iu khin Led trc tip
(mA) cn 89 ch l vi uA .
iu khin cc chn ny chng ta c 2 thanh ghi
->PORTx :gi tr ti tng chn (0 1) c th truy cp ti tng bit PORTx.n
->DDRx : thanh ghi ch trng thi ca tng chn , vo hoc l ra .Gi tr 1 l ra v
0 l vo .
V d 1 : Nhp nhy ln lt n xanh v n , khi n nt bm ch c n
sng.
Phn cng : n xanh PORTB.4 , n PORTB.5 , nt bm PINB.7

Ch :
nh ngha 1 chn l chn vo PIN x.x
#define nut_bam PINB.7
nh ngha 1 chn l chn vo PORT x.x
#define den_do PORTB.5

Trong bi ny PORT B c 2 bin u ra l PB5 v PB6


DDRB=0b00110000 =0x30
Khi to chn PB7 cn c treo ln 5V , khi n nt bm s thng GND(0V) nn
ta c PORTB=0b10000000=0x80;
Sau khi nh ngha , nu bn den_do=1; n led s tt
den_do=0; n s sng .
( do cch thit k mch u dng led ni 5V cn u m ni vo VK)

delay.h c 2 cch gi l tr theo ms v us


delay_ms(time);
delay_us(time);

1.
2. /*****************************************************
3. This program was produced by the
4. CodeWizardAVR V1.24.8d Professional
5. Automatic Program Generator
6. Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
7. http://www.hpinfotech.com
8.
9. Project :
10. Version :
11. Date : 12/27/2007
12. Author : LENGOCTUAN
13. Company : VAGAM
14. Comments:
15.
16.
17. Chip type : ATmega16
18. Program type : Application
19. Clock frequency : 8.000000 MHz
20. Memory model : Small
21. External SRAM size : 0
22. Data Stack size : 256
23. *****************************************************/
24.
25. #include <mega16.h>
26. #include <delay.h>
27.
28. // Declare your global variables here
29.
30. #define den_xanh PORTB.5
31. #define den_do PORTB.6
32. #define nut_bam PINB.7
33.
34. void main(void)
35. {
36.
37. // Port B initialization
38. // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In
Func0=In
39. // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T
State0=T
40. PORTB=0x80;
41. DDRB=0x30;
42.
43.
44.
45. while (1)
46. {
47. // Place your code here
48. //khi nut bam chua duoc bam logic nut_bam=1
49. if(nut_bam)
50. {
51. den_xanh=1;den_do=0;
52. delay_ms(500);
53. den_xanh=0;den_do=1;
54. delay_ms(500);
55. }
56. //khi nut bam duoc an nut_bam=0 chi den do sang
57. else
58. {den_xanh=1;den_do=0;}
59. };
60. }
61.
62.
63.
Bi 2 - AVR Timer
c tnh:

- Bao gm cc b timer 8bit 16 bit, thng c t 3 4 b Timer


- C cc knh PWM (t 4 n 8 knh tu loi )
- Bao gm nhiu ch ngt v PWM
- C th l mt knh m ring bit
- T ng xo Timer trong ch so snh(t ng np li)
- C ch PWM
- To ra tn s
- m cc d kin ngt ngoi
- To ra cc ngt trn v ngt so snh
....

Introduction

Cc ch hot ng ca timer:

Ch Thng Thng:
y l ch hot ng n gin nht ca Timer .B m s lin tc m tng ln cho n khi vt
qu gi tr ln nht TOP v sau s c khi ng li ti gi tr Bottom.Trong cc hot ng thng
thng th c trn s c thit lp khi gi tr trong Timer t gi tr khng v khng b xo i.Tuy
nhin nu m ngt trn c chp nhn th c ngt s t ng b xo khi ngt c thc hin.Gi tr
trong Timer c th c vit vo bt c lc no

Ch So Snh (CTC):
y l ch m gi tr trong Timer lun c so snh vi gi tr trong thanh ghi ORC .Khi gi tr
trong Timer bng gi tr trong thanh ghi ORC th gi tr trong Timer s b xo i.Gi tr trong ORC
ng vai tr l gi tr TOP cho b m.Ch ny cng cho php to ra tn s so snh u ra.Tuy
nhin trong ch ny nu gi tr mi ghi vo thanh ghi ORC m nh hn gi tr tc thi ca b m
th th 1 so snh s b l, khi b m s m n gi tr ln nht sau ri xung gi tr 0 trc khi
so snh tip theo xut hin.
S thi gian ca ch CTC

Ch Fast PWM:
Cho php to ra sng vi tn s cao.S khc bit c bn gia Fast PWM vi cc loi PWM khc l n
ch s dng 1 sn dc.B m s m t Bottom n Max sau khi ng li t bottom. Trong ch
khng o u ra ca chn so snh OCx s bi xo khi c php ton so snh gia TCNTx v thanh
ghi ORC l bng nhau. V s c st ln 1 khi gi tr t Bottom. Trong ch o ,u ra o s
c set ln 1 khi s so snh gia thanh ghi ORC v gi tr trong Timer bng nhau v s b xo khi gi
tr t Bottom.Trong c hai trng hp ny tn s ca ch Fast PWM u gp i so vi ch
phase correct PWM s dng hai sn dc
Vi tn s cao ny ch Fast PWM rt tt cho cc ng dng nh ADC hay chnh lu.Ngoi ra
vi tn s cao gip lm gim kch thc ca thit b ngoi nh cun dy t t gip lm gim ton
b chi ph cho h thng
S di y m t chu k thi gian ca ch :

Biu thi gian ch Fast PWM

Ch Phase correct PWM:


Ch ny hot ng da trn hai sn ln xung.B m s m lin tc t gi tr BOTTOM n
gi tr MAX v sau t gi tr MAX n gi tr BOTTOM.Trong ch so snh khng o chn so
snh (OCx) s b xa khi gi tr TCNTx bng gi tr OCRx trong qu trnh m ln v s c set
bng 1 khi gi tr so snh xut hin trong qu trnh m xung.Ch so snh o th cc gi tr l
ngc li.Vi hot ng hai sn xung ny th ch ny khng to ra c tn s nh nh ch
mt sn xung .Nhng do tnh cn i ca hai sn xung th n tt hn cho iu khin ng c
Ch phase correct PWM hot ng c nh l 8 bt.Trong ch ny b m s tng cho n khi
t gi tr MAX ,khi n s i chiu m.Biu thi gian y m t hot ng ca ton b qu
trnh:
T biu thi gian ta nhn thy vic thay i tn s trong hot ng ca phase correct PWM c th
thay th bng hai gi tr l MAX v BOTTOM. N linh hot hn so vi ch Fast PWM.
Tn s c th tnh theo cng thc nh sau:

f=fc/N*510

Trong N to ra bi b chia n c cc gi tr l:1,8,64,256 hoc 1024

Cc thanh ghi trong b Timer/ Counter:

Thanh ghi iu khin - TCCRx:

Bt 3,6 WG00-WG01: y l cc bt chn ch trong Timer.Cc gi tr c m t trong bng sau.

Bng chn ch Timer:


Bt 5-4 : COM00-COM01: Quy nh gi tr u ra trong cc php so snh
Bt 2: 0 CS2:0 :y l cc bt quy nh xung cp cho hot ng ca Timer.Bng di y m t ton
b cc gi tr

Chn ch cho xung Clock

Thanh ghi c ngt-TIFR:

Bt 1-OCFx : Khi hai gi tr bng nhau bt ny c set ln bng 1


Bt 1-TVOx : Khi b m vt qu gi tr Top th bt ny c set bng 1

Thanh ghi mt n ngt-TIMSK:

Bt 1 OCIEx: khi bt ny c set ln bng 1 th cho php ngt so snh


Bt 0 TOIEX : Khi bt ny c set ln bng 1 th cho php ngt trn

on chng trnh trn dng timer1. Timer ny l b m 16bit nn gi tr m c ti a l FFFF.


Trong phn khi to Timer ta khi to xung clock cho b m l 125Khz = 125000 c ngha l b
m s m c 125000 gi tr trong 1 giy. Ta lm php tnh nh sau:

125000 s ----1 giy


? s----- 0,02 giy (20ms)
ta tnh c trong 20ms b timer s m c l: 125000x0.02= 2500 s.
Ta cn l lm sao cho timer1 m c 2500 s s trn c ngha l cn phi np v n mt gi
tr xc nh trc (mc nh n s m t 0000>FFFF v b trn) gi tr ny s nh hn
65535(FFFF) l 2500 (9C4 Hexa) vy ta tnh c gi tr cn np li sau mi ln trn l FFFF- 9C4 =
F63B.

1. #include <mega8.h>
2.
3. unsigned char count=0;
4.
5. interrupt [TIM1_OVF] void timer1_ovf_isr(void) //ngat xay ra sau
20ms
6. {
7. TCNT1H=0xF6; //gi tr np li TCNT1L=0x3B;
8. // goi ham can xu li sau 20mscount++;
9. if (count&gt;10)
10. {
11. count=0;
12. //goi ham can xu li sau 2s }
13. }
14.
15. void main(void)
16. {
17. // Timer/Counter 1 initialization
18. // Clock source: System Clock
19. // Clock value: 125.000 kHz
20. // Mode: Normal top=FFFFh
21. // OC1A output: Discon.
22. // OC1B output: Discon.
23. // Noise Canceler: Off
24. // Input Capture on Falling Edge
25. // Timer 1 Overflow Interrupt: On
26. // Input Capture Interrupt: Off
27. // Compare A Match Interrupt: Off
28. // Compare B Match Interrupt: OffTCCR1A=0x00;
29. TCCR1B=0x03;
30. TCNT1H=0xF6;
31. TCNT1L=0x3B;
32. ICR1H=0x00;
33. ICR1L=0x00;
34. OCR1AH=0x00;
35. OCR1AL=0x00;
36. OCR1BH=0x00;
37. OCR1BL=0x00;
38. #asm("sei") //bat co cho phep ngat toan cuc neu khong thi khong co
ngat xay ra
39. while (1)
40. {
41. ..........................
42. };
43. }
Bi 3 : To cnh bo s dng ngt ngoi

Tm tt : Qua bi hc ny bn s bit c th no l ngt ngoi .Cch s dng ngt ngoi ca AVR

Gii thiu :

Atmega16 c 3 ngt ngoi INT0(PORTD.2) INT1(PORTD.3) v INT2(PORTB.2)


Khi xy ra mt trong cc s kin i vi cc chn ny :

Low level - in p chn ngt xung mc logic 0 V


Any change - Bt k s thay i in p t chn ngt
Falling Edge - Khi c 1 sn in p xung (5V->0V)
Rising Edge -Khi c 1 sn in p ln (0V->5V)

Sau 1 c ngt s dng ln 1 v bo cho bit c ngt , nhy n chng trnh con thc hin ngt .

V d : Dng ngt bo ng khi xy ra s c ca h thng .


Khi h thng xy ra s c , chn PORTD3(INT1 ) s c gi tr l 0V chng trnh s bt n
cnh bo .Khi kt thc s c bt tr li n xanh .

Ban u khi to ta s n xanh bt tt , PORTD.3 treo ln 5V , l port vo


PORTD=0x08;
DDRD=0x00;

Chn ngt INT1 ch Low level (khi no chn PD3 c mc logic 0V l xy ra ngt )

GICR|=0x80;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x80;

1.
2. /*****************************************************
3. This program was produced by the
4. CodeWizardAVR V1.24.8d Professional
5. Automatic Program Generator
6. Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
7. http://www.hpinfotech.com
8.
9. Project :
10. Version :
11. Date : 12/29/2007
12. Author : le ngoc tuan
13. Company : vagam
14. Comments:
15.
16.
17. Chip type : ATmega16
18. Program type : Application
19. Clock frequency : 8.000000 MHz
20. Memory model : Small
21. External SRAM size : 0
22. Data Stack size : 256
23. *****************************************************/
24.
25. #include <mega16.h>
26. #include <delay.h>
27.
28. // Declare your global variables here
29.
30. #define den_xanh PORTB.4
31. #define den_do PORTB.5
32.
33.
34.
35. // External Interrupt 1 service routine
36. interrupt [EXT_INT1] void ext_int1_isr(void)
37. {
38. // Place your code here
39. den_xanh=1;den_do=0;//bat den do ,tat den xanh
40. }
41.
42.
43.
44. void main(void)
45. {

You might also like