Trích:
Nguyên văn bởi bravesoldier
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);
}
}
Em lắp xen kẽ 20 con LED xanh với 20 con LED đỏ, viết code để cho chúng nó nhấp nháy.
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!
|
Chào các bạn
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