Professional Documents
Culture Documents
Avr 0059
Avr 0059
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
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:
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 :
f=fc/N*510
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>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
Gii thiu :
Sau 1 c ngt s dng ln 1 v bo cho bit c ngt , nhy n chng trnh con thc hin ngt .
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. {