📄 s8051.c.svn-base
字号:
/*** ============================================================================**** FILE** S8051.c**** DESCRIPTION** Contains all the low level, 8051 dependent functions **** CREATED** Silicon Laboratories Hungary Ltd**** COPYRIGHT** Copyright 2008 Silicon Laboratories, Inc. ** http://www.silabs.com**** ============================================================================*/#include "S8051.h"/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: void SetHwMasterSpi(void) + + DESCRIPTION: initialize the HW SPI + + INPUT: None + + RETURN: None + + NOTES: None + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void SetHwMasterSpi(void){ SPI1CFG = 0x40; //Master SPI, CKPHA=0, CKPOL=0 SPI1CN = 0x00; //3-wire Single Master, SPI enabled SPI1CKR = (SYSCLK/(2*SPI_CLOCK))-1; SPI1EN = 1; // Enable SPI interrupt RF_NSEL_PIN = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: void delay(uint8 delay) + + DESCRIPTION: wait + + INPUT: length of the delay (1 ... 255) + + RETURN: None + + NOTES: None + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void delay_ms(uint8 delay){ xdata uint8 j; xdata uint16 i; if( delay == 0 ) { return; } for(j=0;j<delay;j++) { for(i=0;i<2000;i++); }}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: void Timer2Init(void) + + DESCRIPTION: initialize the Timer2 + + INPUT: None + + RETURN: None + + NOTES: None + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void Timer2Init(void) //8051 Timer2 init { CKCON &= ~0x60; // Timer2 uses SYSCLK/12 TMR2CN &= ~0x01; TMR2CN = 0x04; // Enable Timer2 in auto-reload mode // Timer2 interrupt enabled TMR2L = 0x1A; TMR2RLL = 0x1A; TMR2H = 0x0A; TMR2RLH = 0x0A; ET2 = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: uint8 SpiReadWrite(uint8 data) + + DESCRIPTION: sends and read 8 length data through the SPI port + + INPUT: data + + RETURN: received byte + + NOTES: it doesn't control the nSEL pin + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/uint8 SpiReadWrite(uint8 spi_in){ SPI1DAT = spi_in; //write data into the SPI register while( SPIF1 == 0); //wait for sending the data SPIF1 = 0; //clear interrupt flag return SPI1DAT; //read received bytes}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: void SpiWriteAddressData(uint8 address, uint8 data1) + + DESCRIPTION: sends 16 length data through the SPI port (address and data) + + INPUT: address - register address + data - 8bit data + + RETURN: None + + NOTES: It controls the nSEL pin + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void SpiWriteAddressData(uint8 address, uint8 data1){ RF_NSEL_PIN = 0; SPI1DAT = address; //write data into the SPI register while( SPIF1 == 0); //wait for sending the data SPIF1 = 0; SPI1DAT = data1; //write data into the SPI register while( SPIF1 == 0); //wait for sending the data SPIF1 = 0; RF_NSEL_PIN = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: uint16 SpiReadWriteWord(uint16 spi_in) + + DESCRIPTION: sends and read 16 length data through the SPI port + + INPUT: data + + RETURN: received word + + NOTES: it controls the nSEL pin + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/uint16 SpiReadWriteWord(uint16 spi_in){ xdata uint16 temp16; RF_NSEL_PIN = 0; temp16 = (uint16) (SpiReadWrite( (uint8)((spi_in & 0xFF00) >> 8) )); temp16 <<= 8; temp16 += (uint16) (SpiReadWrite( (uint8)(spi_in & 0x00FF) )); RF_NSEL_PIN = 1; return temp16;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -