PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 29-07-2009, 12:28 PM   #3
Serenade
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 6
:
Đương nhiên là cấu hình byte rùi bạn.

Code:
#define EE_SSPIF_BIT IFS2bits.SPI2IF
#define SPIREAD     0x03
#define SPIWRITE    0x02
#define SPIWRDI     0x04
#define SPIWREN     0x06
#define SPIRDSR     0x05
#define SPIWRSR     0x01

/*********************************************************************/
void EE_SPIPut(BYTE v)
{
   BYTE dummy;

   EE_SSPIF_BIT = 0;
   dummy = EE_SSPBUF_REG; 
   EE_SSPBUF_REG = v;
   while(EE_SSPIF_BIT == 0 );
}
/*********************************************************************/
BYTE EE_SPIGet(void)
{
   EE_SPIPut(0x00);
   return EE_SSPBUF_REG; 
}
/*********************************************************************/

BYTE NVMRead(DWORD address)// read a 16-bit value starting at an even address
{
 	BYTE msb,lsb,temp;
	
	// wait until any work in progress is completed
	do 
	{
		SPISelectEEPROM();
		EE_SPIPut(SPIRDSR);
		temp = EE_SPIGet();//read status register
		SPIUnselectEEPROM();
	}while(temp & 0x03);
	
	// perform a 16-bit read sequence (two byte sequential read)
	SPISelectEEPROM();			// select the Serial EEPROM
	EE_SPIPut(SPIREAD);// read command
	EE_SPIPut(address >> 8);	// address MSB first
	EE_SPIPut(address & 0xff);// address LSB (word aligned)
	//msb = EE_SPIGet();
	lsb = EE_SPIGet();	
	SPIUnselectEEPROM();
	return (lsb);

}//ReadNVM
/*********************************************************************/
void NVMWrite( DWORD address, BYTE data)
{ // write a 16-bit value starting at an even address
	BYTE temp;
	// wait until any work in progress is completed
	do
	{
		SPISelectEEPROM();
		EE_SPIPut(SPIRDSR);
		temp = EE_SPIGet();//read status register
		SPIUnselectEEPROM();
	}while(temp & 0x03);
	// Set the Write Enable Latch
	SPISelectEEPROM();
	EE_SPIPut(SPIWREN);
	SPIUnselectEEPROM();
	
	// perform a 16-bit write sequence (2 byte page write)
	SPISelectEEPROM();					// select the Serial EEPROM
	EE_SPIPut(SPIWRITE);
	EE_SPIPut(address >> 8);		//address MSB first
	EE_SPIPut(address & 0xff);	// address LSB (word aligned)
	EE_SPIPut(data);
	SPIUnselectEEPROM();

}//WriteNVM

thay đổi nội dung bởi: namqn, 29-07-2009 lúc 05:43 PM. Lý do: định dạng code
Serenade vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 09:53 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam