![]() |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jun 2010
Bài gửi: 6
: |
![]() Chào cả nhà!
Mình đang gặp khó khăn lập trình giao tiếp PIC 16F877A với 74595 qua cổng SPI. Mình đã mô phỏng qua Proteus thì OK nhưng khi tiến hành chạy mạch thật thì không hiển thị được. Đoạn chương trình như sau : // Khai báo .... #use spi(DO=PIN_C5, CLK=PIN_B3, BITS=8) Void main() { ... setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_16); ... While(1) { spi_write(0xAA); latch_data();// Chốt dũ liệu hiển thị delay_ms(1000); spi_write(0xBB); latch_data();// Chốt dũ liệu hiển thị delay_ms(1000); } } Chạy mạch thật thì không có tín hiệu ra .Mình không hiểu đã sai chỗ nào mong các bạn giúp đỡ! Thanks! |
![]() |
![]() |
![]() |
#2 |
Đệ tử 6 túi
Tham gia ngày: Feb 2009
Bài gửi: 127
: |
mô fong chạy dc thì mạch thật của bạn có vấn đề bạn lên kiểm cha lại mạch xem .Ko biết bạn đang dùng con 74L595 hay 74HC595, các chân EN và MR mạch thực đã nối chuẩn chưa .Nếu bạn đang dùng con 74L595 thì nên chuyển qua con 74HC595
thay đổi nội dung bởi: hoc_picpicpic, 28-01-2011 lúc 08:40 AM. |
![]() |
![]() |
![]() |
#3 | |
Nhập môn đệ tử
Tham gia ngày: Jun 2010
Bài gửi: 6
: |
Trích:
Mình làm mạch thật với AVR chạy ngon lành. Vẫn phần cứng như vậy mình làm trên Pic thì lại không được. Mình nghĩ là chỉ tại phần mềm mình chưa khai báo đúng thư viện. Có ai đã làm qua rồi thì chỉ cho mình kiểu khai báo thư viện. #use spi(DO=PIN_C5, CLK=PIN_C3, BITS=8) ........ setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_16); Mình thiết lập như vậy có sai chỗ nào không? Mong câu trả lời của các bạn sớm! Thân! |
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 6 túi
Tham gia ngày: Feb 2009
Bài gửi: 127
: |
bạn làm thế này đảm bảo chạy .
#include <16F877.H> #fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP #use delay(clock = 20000000) #byte SSPBUF = 0x13 #byte SSPCON = 0x14 #bit BF = SSPSTAT.0 #bit SMP = SSPSTAT.7 #bit CKE = SSPSTAT.6 #bit CKP = SSPCON.4 #bit SSPM1 = SSPCON.1 #bit SSPEN = SSPCON.5 //------------------------------------------ char SPI(char d) { SSPBUF=d; while (!BF); return SSPBUF; } //------------------------------------------ void spi_init() { set_tris_c(0b11010011); // sck rc3-0, sdo rc5-0, CS rc2-0. SMP=0; CKE=0; CKP=1; SSPM1=1; //SSPM0=1; SSPEN=1; } |
![]() |
![]() |
![]() |
|
|