You are on page 1of 5

Ti liu AVR

Mr. Bamboo 0913492183

BI I : IN- OUT
I.TNG QUAN V GPIO CA AVR.
-Trong h vi iu khin AVR, cc PORT l cc ca ng then cht ca vi
iu khin. PORT c th giao tip vi cc thit b ngoi vi theo hai hng:
xut v nhp.
-S lng cc PORT ng vi mi loi vi iu khin trong h AVR l khc
nhau. S lng cc chn I/O trong mt PORT cng khc nhau.
-Ngoi chc nng xut/nhp thng thng, cc chn ca vi iu khin cn
mang nhng chc nng c bit khc nh: ADC, Ngt Ngoi, TIMER,
S iu khin chn vo ra ca AVR

TI LIU AVR

Ti liu AVR

Mr. Bamboo 0913492183

S GPIO ca ATMEGA16:

-H AVR cung cp cho chng ta 3 thanh ghi (8bit): PORTx, DDRx, PINx
(vi x l tn PORT) iu khin hng ca cc PORT mt cch d dng.
Mi bit ca cc thanh ghi tng ng vi mt chn ca PORT.
DDRx: y l thanh ghi nh hng cho cc chn ca vi iu khin.
DDRx = 0: cu hnh chn l INPUT.
DDRx = 1: cu hnh chn l OUTPUT.
PORTx: y l thanh ghi cho bit mc in p c xut ra chn
OUTPUT.
PORTx = 0: in p xut ra 0V.
PORTx = 1: in p xut ra 5V.
PINx: y l thanh ghi c trng thi ca chn INPUT.
Vi Atmega16 ta c 4 PORT I/O 8bit l PORTA, PORTB,PORTC,PORTD.
- Vi tnh nng IN/OUT th 4 PORT ny l tng ng v c th thay
th cho nhau.
II.BI TON V D.
gip cc bn hiu r cch cu hnh cc thanh ghi iu khin hng I/O
trong AVR, ti xin a ra bi ton:
S dng vi iu khin Atmega8, thay i trng thi (sng/tt) ca LED
bng nt bm. Mi ln nt c bm, trng thi ca LED s thay i.
-nh ngha I/O cho cc PORT:
#include <mega16.h>
TI LIU AVR

Ti liu AVR

Mr. Bamboo 0913492183

#include <delay.h>

// Declare your global variables here


#define SW1 PIND.0 // nh ngha nt nhn tng ng u vo
#define SW2 PIND.2 // nh ngha nt nhn tng ng u vo
#define SW3 PINA.0 // nh ngha nt nhn tng ng u vo
#define LED4 PORTC.0 // nh ngha u ra iu khin LED
#define LED3 PORTC.1 // nh ngha u ra iu khin LED
#define LED2 PORTC.2 // nh ngha u ra iu khin LED
#define LED1 PORTC.3 // nh ngha u ra iu khin LED

unsigned char
MALED[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90} ;
unsigned int so;
unsigned int x;
// chng trnh con iu khin hin th LED
/* thut ton qut LED 7 seg : LED ta s dng l led anot chung. Cc u
ra VCC ca 4 LED c ni ln lt vo cc chn PORTC.0, PORTC.1
,PORTC.2, PORTC.3. Cc chn a,b,c,d,e,f,g,h cuaR 4 LED ni chung tt c
vo PORTB.
- Qut LED y tc ta iu khin ln lt tng LED 1 sng bng
cch cp VCC vo ln lt tng LED 7 thanh. Trong cng 1 thi
im thc cht ch c 1 LED 7 thanh c cp VCC. Nhng v tn s
cp VCC qu nhanh, da vo hin tng lu nh ca mt ngi.
Trong khi mt cha kp nhn thy LED tt LED li c bt chu
k qut tip theo */.
void xuatso(unsigned int code)
{
unsigned int a,b,c,d;
a = code/1000;
b = (code - a*1000)/100;
c = (code - a*1000 - b*100)/10;
d = code%10;
LED1 = 1; // bt LED 1
PORTB = MALED[a]; // Xut m hin th ca s 1
TI LIU AVR

Ti liu AVR

Mr. Bamboo 0913492183

delay_ms(3);// Tr. Khi thi gian tr ln LED s c hin tng nhp


nhy
PORTB = 0xFF;
LED1 = 0; // tt LED1
LED2 = 1;
PORTB = MALED[b];
delay_ms(3);
PORTB = 0xFF;
LED2 = 0;
LED3 = 1;
PORTB = MALED[c];
delay_ms(3);
PORTB = 0xFF;
LED3 = 0;
LED4 = 1;
PORTB = MALED[d];
delay_ms(3);
PORTB = 0xFF;
LED4 = 0;
}
void main(void)
{
// Declare your local variables here
unsigned int i,j,number = 1000;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0xFF;
DDRD=0x00;
x=0;
TI LIU AVR

Ti liu AVR

Mr. Bamboo 0913492183

while (1)
{
xuatso(number);
if(SW1 == 0)
{
while(SW1 == 0); // ti sao li c while y ?
number ++;
}
if(SW2 == 0)
{
while(SW2 == 0);
number --;
}
}

}
Bi tp
1. Th hin vic iu khin c ma trn phm bm 4x4
2. Thc hin vic iu khin LED MATRIX 8x8 hin th cc ch ci
v ch s

TI LIU AVR

You might also like