![]()  | 
| 		
			
			 | 
		#6 | 
| 
			
			
			
			 Đệ tử 4 túi 
			
		
			
				
			
			
								
		
	 | 
	
	
	
	
		
		
		
		 Cám ơn bạn success.tl mình đã copy chương trìh của bạn và về mô phỏng cho chạy thử .hình như là code phan MASTER thiếu lệnh set_tris_c(0x00); trong hàm main thì phải ,tưong tự trong SLAVE cũng thiếu lệnh set_tris_d(0x00); trong main .Vi mình thử bỏ 2 hàm này ra chương trình không chạy! 
		
	
		
		
		
		
			Mình đã dựa cva2o chưong trình trên và viết lại cái của mình:giao tiếp giữa 1 MASTER và 2 SLAVE CODE SLAVE: Code: 
	#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#define SS  PIN_A5
//#include <lcd_lib_4bit.c>
//*************************
int8 data;
//*************************
#int_ssp
void ssp_isr(void)
{
   if(input(SS)==0)
   {
      data = spi_read();     //doc tin hieu tu MASTER 
      set_tris_b(0);         //thiet lap PORTB la cong xuat du lieu 
      output_b(data);        //Hien thi ra port B
      delay_us(10);
   }
}
//*************************
void main()
{
set_tris_a(0xff);
setup_spi(SPI_SLAVE|SPI_L_TO_H|spi_clk_div_16 );
clear_interrupt(INT_SSP);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
while(1)
{
//Khong lam gi ,cho data den
}
}
//************************
CODE MASTER Code: 
	#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#define SS1    pin_C1                  //chan chon chip cho 2 SLAVE
#define SS2    pin_C2
//*********************************
int8 data,i,j;
//*********************************
void change_data()                    //dich tung bit trong bien data  
{
   i++;
   if(i<=8)data=(data<<1) ;           //dich 8 lan gia tri cua data 
   else 
   {   data=0x01;
       j=1;
   }   
}
void send_data()                     //gui du lieu den SLAVE     
{
while(1)
{
   spi_write(data);
   change_data();
   delay_ms(100);                    //Tao tre giua 2 lan truyen
   if (j==1)   break;                //sau 8 lan quet de truyen du lieu den SLAVE ,thoat khoi vong lap
}
}
void main()
{
   data = 0x01;                        //gia tri dau cua bien data
   set_tris_c(0);
   set_tris_e(0);
   setup_spi( SPI_MASTER | SPI_L_TO_H|spi_clk_div_16 );
   delay_ms(100);
While(1)
{
   output_low(SS1);                    //chon SLAVE 1 de gui du lieu
   output_high(SS2);
   send_data();
   j=0; 
   i=0;
   output_low(SS2);                   //chon SLAVE 2 de gui du lieu
   output_high(SS1); 
   send_data() ;           
   j=0; 
   i=0;
}
}
//*******************************
http://www.mediafire.com/?85a3byc85v2ag4h 
				__________________ 
		
		
		
		
		
			My blog: http://autumnneverreturn.blogspot.com/ Đối thủ khó chiến thắng nhất là bản thân !!! thay đổi nội dung bởi: hcmut.khoamaisi, 23-03-2011 lúc 12:28 AM.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
		
  | 
	
		
  |