Giáo trình thí nghiệm vi điều khin ng dng
1
BÀI 1 : XUT NHP I/O PORT:
I.MỤC ĐÍCH THÍ NGHIỆM :
Kiến thc sinh viên cần đạt được sau khi thc tp:
Liệt kê các thanh ghi liên quan đến vic x lý tính hiu s các chân vi điều khin .
Khi to các chân của vi điều khin là ngõ ra , vào s .
Gii thích được công dng ca hàm _delay(n) , cách dùngm delay để chng di cho
nút nhn.
Lập trình điều khin led theo yêu cu .
Gii thích ưu khuyết điểm ca ngt .
II.DNG C THÍ NGHIM :
Kít thí nghim + cáp USB.
Máy tính .
Ngun 12V/1A.
III.CƠ SỞ LÝ THUYT :
1.Thanh ghi qui định tín hiu x chân vi điều khin là tín hiu s hay tín hiệu tương
t:
Nhng chân có kí hiu ANX là nhng chân va có th x tín hiu s va có th x lý tín
hiệu tương tự . Do đó khi làm việc vi nhng chân này ta cần chú ý đến hai thanh ghi :
Giáo trình thí nghiệm vi điều khin ng dng
2
Hai thanh ghi này có tng cng 14bit t ANS0 đến ANS13 , s quy định tín hiu làm vic
ca các chân t AN0 đến AN13 là tín hiu s hay tín hiu analog .
ANSX=0 : Cho phép chân ANX x tín hiu s .
ANSX=1 : Cho phép chân ANX x lý tín hiệu tương tự .
Trong đó : X= 0 – 13
2.Chức năng của thanh ghi TRIS :
Trong các chân x lý tín hiu s , hoạt động ca chân có th là ngõ ra (làm cho led chp tt,
kích transistor , điều khin hoạt động IC....) , hay có th là ngõ vào c trng thái nút nhấn , đọc
encoder , đọc tín hiu t cm biến s....). Như vậy , để khi to cho các chân là ngõ ra hay ngõ
vào tín hiu s , chúng ta cần chú ý đến thanh ghi TRISX (X=A,B,C,D,E):
TRISXY=0:Quy định bit th Y ca PORTX là ngõ ra (0 = Output)
TRISXY=1:Quy định bit th Y ca PORTX là ngõ vào (1=Input)
(Trong đó :X=A,B,C,D,E ; Y=0-7)
Chú ý : PORTE ch có 4 bit thp : TRISE0, TRISE1, TRISE2 ,TRISE3.
3. Chức năng của thanh ghi PORT :
Trong trường hp x lý tín hiu s và là ngõ ra , thì có th là ngõ ra mức cao (điện áp chân
đó là VH) , hay ngõ ra là mc thấp (điện áp là VL) s do bit RXY ca thanh ghi PORTX quy
định .
RXY=0 : Quy định chân th Y ca PORTX là mc thp(VL).
RXY=1: Quy định chân th Y ca PORTX là mc cao(VH).
(Trong đó : X=A,B,C,D,E ; Y=0-7)
Giáo trình thí nghiệm vi điều khin ng dng
3
Tóm li ta có bng tóm tt sau :
ANSX
TRISXY
RXY
Kết qu
0
0
0
Ngõ ra mc thp(0V)
0
0
1
Ngõ ra mc cao(+5V)
0
1
0
Tng tr cao (R=)
0
1
1
Ngõ vào , tác động mc thp
1
x
x
X lý tín hiệu tương tự .
4.Những thanh ghi đặc bit ch có riêng PORTB:
4.1.Thanh ghi h tr đin tr treo bên trong:
Để tránh trng thái th ni (tín hiệu điện áp chân đó không rõ ràng) khi khi to PORTB là
ngõ vào s , PIC16f887 tích hợp thêm vào cho PORTB các điện tr kéo lên (pull-up), để s dng
các điện tr này ta chú ý đến thanh ghi :
WPUBy=0: Không cho phép điện tr kéo lên chân th y ca PORTB.
WPUBy=1: Cho phép điện tr kéo lên chân th y ca PORTB.
Khi s dụng điện tr kéo lên ngoài vic s dng thanh ghi WPUB còn phi khi to bit:
RBPU
Đin tr kéo lên nên khi to khi PORTB là ngõ vào s , các PORT khác không có h
tr điện tr treo trong , do đó nếu có nhu cu s dng ta có th mc thêm điện tr bên
ngoài.
4.2.Ngt ngoài chân RB0:
Để x lý được các tín hiệu tác động tc thi , chân RB0 có h tr x lý ngt (interrupt ) kí
hiu chân là INT, khi to ngt ngoài chân RB0 ta cần chú ý đến các bit sau :
INTE(Interrupt enable ) : bit cho phép ngt PORTB
Giáo trình thí nghiệm vi điều khin ng dng
4
INTF(Interrupt flag): c ngt , bit này t động bng 1 khi có s kin ngt (cnh lên hay
cnh xung) xy ra chân RB0, ta phi xóa bít này trong khi lp trình .
GIE(Global interrupt ) : bit cho phép ngt toàn cc.
INTEDG (interrupt edge select bit ) : Bit chn cạnh tác động để sinh ra s kin ngt
PORTB.
INTEDG=1: Xy ra ngt khi có tín hiu cnh lên PORTB
INTEDG=0: Xy ra ngt khi có tín hiu cnh xung PORTB
Các bước khi to ngt INT:
c 1 : Khi to chân RB0 là ngõ vào s , điện tr treo.
c 2 : Khi to ngt INT
INTE=1; //Cho phép ngt hoạt động
INTF=0; //Xóa c ngt thì ngt ln tiếp theo mi có th xy ra.
INTEDG=....; //Chn cạnh tác động ngt.
GIE=1; //Cho phép ngt toàn cc .
4.3.Ngt on-change PORTB:
Ngoài ngt INT ch duy nht chân RB0 , thì c PORTB (t RB0 đến RB7) còn h tr
ngt on-change , ngt on-change xy ra khi tín hiu logic chân ca PORTB thay đổi trng thái
logic.
Sơ đồ ngt on-change:
Giáo trình thí nghiệm vi điều khin ng dng
5
Các thanh ghi và các bit điều khin ngt on-change :
IOCBX=0 : Không cho phép ngt on-change chân th X ca PORTB.
IOCBX=1 : Cho phép ngt on-change chân th X ca PORTB.
Các bit khi to khác :
RBIF : C ngt on-change PORTB, cn phi xóa bít này trong lp trình.
RBIE : Bit cho phép ngt on-change ca PORTB.
GIE : Bit cho phép ngt toàn cc.
Các bước khi to ngt on-change :
c 1 : Khi to PORTB là ngõ vào s , có điện tr treo.
c 2 : Khi to ngt on-change PORTB
IOCB=0xFF; //khi to toàn b PORTB ngt on-change(có th khi to
mt hay c PORTB).
RBIE=1; //Cho phép ngt xy ra .
RBIF=0; //Xóa c ngt
GIE=1; //Cho phép ngt toàn cc
Chú ý : Đối vi ngt on-change , vic xóa c ngắt (RBIF=0) không đủ để cho ln ngt
tiếp theo được thc hin , mà còn phải thêm điều kiện đọc hoc viết vào thanh ghi PORTB.
Ví d :
unsigned char bien ;
bien = PORTB ; //đc thanh ghi PORTB.
hoc PORTB =5 ; //viết vào thanh ghi PORTB
4.4.Bng so sánh gia ngt INT và ngt on-change :
Ngt chân INT(RB0)
Ngt on-change
Chí có duy nht chân RB0
Xy ra trên c PORTB
Để xy ra ngt thì tín hiu logic cnh lên
hoc cnh xung.
Ch cn tín hiệu logic thay đổi xy ra ngt,
không phân bit cnh lên hay cnh xung.
Các bit khi to :
INTE , INTF , INTEDG , GIE
Các bit khi to :
IOCBx , RBIE , RBIF , GIE
Để cho ln ngt tiếp theo được thc hin thì
cn phi xóa c ngt INTF.
Để cho ln ngt tiếp theo được thc hin thì
cn phi xóa c ngắt INTF đọc ( hoc ghi)
vào thanh ghi PORTB.