![]() |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Apr 2009
Bài gửi: 18
: |
Em tra datasheet của PIC16F877A để tìm hiểu module SPI và xem cả example trong CCS nữa nhưng khi thử trên bo cắm với 5 con 595 thì 40 con LED sáng loạn cả lên. Liệu em có dùng sai hay không? Bác nào dùng SPI cứng của PIC ko chỉ cho em với?
Code:
#include <16F877A.h> #device *=16 ADC=8 #fuses NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=4000000) #use fast_io(b) #byte portb=0x6 #bit SCL = portb.0 void latch_data() { SCL=0; SCL=1; } main() { byte i; set_tris_b(0); setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16); // tham kha?o Help SCL=1; while (true) { for (i=1; i<=5; ++i) {spi_write(0xAA);} latch_data(); delay_ms(1000); for (i=1; i<=5; ++i) {spi_write(0x55);} latch_data(); delay_ms(1000); } } Theo như datasheet thì em dùng chân RC5 của PIC16F877A để xuất data ra chân 14 của con 595 đầu tiên, chân RC3 làm chân clock (SCK), chân RB0 chọn để chốt. Em xin cám ơn! |
![]() |
![]() |
![]() |
#2 | |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 3
: |
Trích:
các bạn cho mình hỏi là câu lệnh: #device *=16 ADC=8 #byte portb=0x6 có nghĩa gì vậy cho em mình hỏi thêm là làm sao mình mới có thể dùng lệnh các lệnh như trisb, portb, latb,... hay một số thanh ghi như ifs1, iec0,... Cám ơn các bạn nhiều |
|
![]() |
![]() |
![]() |
|
|