PDA

View Full Version : help me!


inventor_bk
20-08-2008, 01:13 AM
Em mới học Pic, nhưng lại không biết cách mở rộng cổng Pic vơi 8255. Mong các anh giúp đỡ. Cảm ơn rất nhiều.

inventor_bk
20-08-2008, 01:19 AM
Em dùng pic 16f877a.
giải mã địa chỉ của 8255:
PortA=0x0000
PortB=0x0001
PortC=0x0002
CW=0x0003
chân WR, RD nối với chân của PIC
A0,A1 nối với RC0,RC1
CS nối với RD0
em chỉ làm thử giao tiếp với 8255 để nháy led ở cổng A. Nhưng không biết định nghĩa địa chỉ của 8255 trong ccs như thế nào.
Cảm ơn rất nhiều.

namqn
20-08-2008, 01:57 AM
Em dùng pic 16f877a.
giải mã địa chỉ của 8255:
PortA=0x0000
PortB=0x0001
PortC=0x0002
CW=0x0003
chân WR, RD nối với chân của PIC
A0,A1 nối với RC0,RC1
CS nối với RD0
em chỉ làm thử giao tiếp với 8255 để nháy led ở cổng A. Nhưng không biết định nghĩa địa chỉ của 8255 trong ccs như thế nào.
Cảm ơn rất nhiều.
Bạn mô tả thiếu hoặc chưa nối đủ các chân của 8255 với PIC. Để giao tiếp PIC với 8255, bạn cần nối PIC với các chân sau của 8255: D0 .. D7 (bus dữ liệu 8-bit), WR, RD, A0, A1, Reset và CS. D0 .. D7 là các chân vào/ra, còn các chân khác chỉ là ngõ ra.

Để ghi ra port A của 8255, bạn thực hiện lần lượt: Reset = "0", đặt địa chỉ A1A0 = "00", đặt dữ liệu ra D0 .. D7, RD = "1", WR = "0", và CS = "0". Bạn chỉ cần thao tác bit và byte, không có gì đặc biệt trong CCS C cho việc này cả. Đây chỉ là một ví dụ về cách thực hiện việc ghi ra port A của 8255. Để sử dụng được 8255, bạn cần phải đặt chế độ hoạt động cho các port của nó trước bằng việc ghi vào từ điều khiển (control word) ở địa chỉ A1A0 = "11".

Bạn tìm đọc datasheet của 8255 sẽ biết cách thực hiện các thao tác khác.

Thân,

inventor_bk
21-08-2008, 10:31 PM
cam ơn trưởng lão nhiều. em đã làm được rồi ạ

picpen
22-08-2008, 10:23 PM
Bác Nam cho em hỏi thêm tí nha !! Bên trong của IC 8255 còn có một thanh nghi điều khiển ,dùng để thiết lập các chế độ vào ra khác nhau cho 3 cổng Pa,Pb và Pc đó là các chế độ 1,chế độ 2,3 và chế độ BSR( trong datasheet nói rõ ).để có thể thiết lập thanh nghi điều khiển thì A0=1,A1=1 . Với cách kết nối phần cứng mà bác hướng dẫn thì làm thế nào để thiết lập được thanh nghi điều khiển...?????????????

namqn
22-08-2008, 11:36 PM
Bác Nam cho em hỏi thêm tí nha !! Bên trong của IC 8255 còn có một thanh nghi điều khiển ,dùng để thiết lập các chế độ vào ra khác nhau cho 3 cổng Pa,Pb và Pc đó là các chế độ 1,chế độ 2,3 và chế độ BSR( trong datasheet nói rõ ).để có thể thiết lập thanh nghi điều khiển thì A0=1,A1=1 . Với cách kết nối phần cứng mà bác hướng dẫn thì làm thế nào để thiết lập được thanh nghi điều khiển...?????????????
Bạn có 2 chân của PIC nối với A1 và A0, do đó bạn có thể xuất các giá trị địa chỉ khác nhau đến 8255. Do đó, bạn chỉ đặt dữ liệu cần ghi vào từ điều khiển, đặt địa chỉ A1A0 = "11", những phần còn lại giống như ví dụ ghi ra port A.

Thân,

picpen
23-08-2008, 09:08 AM
Nhưng bác ơi làm thế nào để xác định được địa chỉ của từ điều khiển và nghi dữ liệu vào đó.
Phải chăng khi ta cho 2 bit A0A1 = 11 , thì byte dữ liều đầu tiên ta gửi đến cổng vào của 8255 sẽ được nghi vào thanh nghi điều khiển ???? em vẫn mơ hồ ở vấn đề này ?

namqn
23-08-2008, 06:41 PM
Nhưng bác ơi làm thế nào để xác định được địa chỉ của từ điều khiển và nghi dữ liệu vào đó.
Phải chăng khi ta cho 2 bit A0A1 = 11 , thì byte dữ liều đầu tiên ta gửi đến cổng vào của 8255 sẽ được nghi vào thanh nghi điều khiển ???? em vẫn mơ hồ ở vấn đề này ?
Đúng vậy. Nhà sản xuất quy định rằng nếu các chân A1 và A0 của 8255 được đặt trạng thái '1' thì dữ liệu đặt vào các chân D7 .. D0 sẽ được ghi vào thanh ghi/từ điều khiển. Thanh ghi/từ điều khiển cũng chỉ là một thanh ghi như các thanh ghi cho các port A, B, và C.

Thân,

tallht
14-09-2008, 09:05 PM
đúng vậy. Nhà sản xuất quy định rằng nếu các chân a1 và a0 của 8255 được đặt trạng thái '1' thì dữ liệu đặt vào các chân d7 .. D0 sẽ được ghi vào thanh ghi/từ điều khiển. Thanh ghi/từ điều khiển cũng chỉ là một thanh ghi như các thanh ghi cho các port a, b, và c.

Thân,

như vậy ta chỉ cần chọn a1a0=00 và đưa dữ liệu muốn xuất thì sẽ xuất được ra porta hả pác? Sao em thấy bên 8051 lại phải dùng lệnh movx là sao ạ?
Thanks bác nhá!

picpen
15-09-2008, 09:15 AM
Giả sử em muốn cấu hình cho 8255 như sau: Pa là đầu vào ,Pb là đầu ra ,Pcl ( 4 biet thấp của Pc) là đầu vào _PCh (4 bit cao của Pc ) là đầu ra .vậy thì em phải cho A0A1 = 11 để nghi giá trị thiết lập vào thanh nghi điều khiển ,với yêu cầu trên thì cần phải nạp giá trị vào thanh nghi điều khiển là : 0b10010000 ( 90h )
sau khi thiết lập được như trên rồi em muốn xuất tín hiệu ra cổng Pb và đọc dữ liệu từ cổng PCl thì phải làm thế nào và khi đó 2 bit A0,A1 sẽ ở trạng thái như thế nào?
cổng dữ liệu chỉ có 1 ,làm thế nào để pic có thể hiểu được là em cần đọc giá trị tại PCl ....
trong 8051 khi giao tiếp với 8255 thì mỗi cổng PA,Pb,Pc và các chế độ khác nhau đều có một địa chỉ riêng để gửi và nhận dữ liệu lên rất rễ ràng sử dụng
Như bac Nam hướng dẫn thì em vẫn mơ hồ quá .
Mong bác và mọi người trên diễn đàn hiể u về vấn đề này chỉ bảo

************** Thanks....................

namqn
15-09-2008, 06:19 PM
Giả sử em muốn cấu hình cho 8255 như sau: Pa là đầu vào ,Pb là đầu ra ,Pcl ( 4 biet thấp của Pc) là đầu vào _PCh (4 bit cao của Pc ) là đầu ra .vậy thì em phải cho A0A1 = 11 để nghi giá trị thiết lập vào thanh nghi điều khiển ,với yêu cầu trên thì cần phải nạp giá trị vào thanh nghi điều khiển là : 0b10010000 ( 90h )
sau khi thiết lập được như trên rồi em muốn xuất tín hiệu ra cổng Pb và đọc dữ liệu từ cổng PCl thì phải làm thế nào và khi đó 2 bit A0,A1 sẽ ở trạng thái như thế nào?
cổng dữ liệu chỉ có 1 ,làm thế nào để pic có thể hiểu được là em cần đọc giá trị tại PCl ....
trong 8051 khi giao tiếp với 8255 thì mỗi cổng PA,Pb,Pc và các chế độ khác nhau đều có một địa chỉ riêng để gửi và nhận dữ liệu lên rất rễ ràng sử dụng
Như bac Nam hướng dẫn thì em vẫn mơ hồ quá .
Mong bác và mọi người trên diễn đàn hiể u về vấn đề này chỉ bảo

************** Thanks....................
Bạn sẽ tuần tự thực hiện các thao tác xuất ra PB và đọc về từ PCL.

- Xuất ra PB: A1 = '0', A0 = '1', RD = '0', WR = '1', CS = '0', ghi dữ liệu ra data bus (các chân PIC nối với data bus phải được thiết lập như ngõ ra, TRISx = 0x00)

- Đọc về từ PCL: A1 = '1', A0 = '0', RD = '1', WR = '0', CS = '0', đọc dữ liệu từ data bus (các chân PIC nối với data bus phải được thiết lập như ngõ vào, TRISx = 0xFF).

Như bạn có thể thấy, mỗi port vẫn có địa chỉ riêng (quy định bởi A1A0), và vẫn có thể đọc/ghi từ data bus (cần chú ý thiết lập các bit TRISx thích hợp).

Thông tin về cách làm việc của 8255 được nêu rõ ràng trong datasheet của 8255, đề nghị bạn xem lại kỹ hơn.

Thân,

napoleon2140
23-09-2013, 12:47 AM
bạn inventor_bk ơi, mình có thề xin code và file mô phỏng proteus của bạn dc ko. mình làm mà nó không chạy
mail mình là hoainam170392@gmai.com
thank bạn