?? set.h
字號:
#ifndef __SET_H__
#define __SET_H__
#define uchar unsigned char
#define uint unsigned int
#define WC 0x00 // Write configuration register command
#define RC 0x10 // Read configuration register command
#define WTP 0x20 // Write TX Payload command
#define RTP 0x21 // Read TX Payload command
#define WTA 0x22 // Write TX Address command
#define RTA 0x23 // Read TX Address command
#define RRP 0x24 // Read RX Payload command
//////////////////////下面是t_mini.c里的copy過來的////////////////////////////////////////////////
#define V_TH0 0xee /* ~ 5ms , ! notice: crystal 11.0592MHz */
#define V_TL0 0x00
/* 數碼管段驅動寄存器地址 */
#define ADDR_8SEG XBYTE[0x2000]
/* 數碼管位驅動和指示燈驅動寄存器地址 */
#define ADDR_SEL XBYTE[0x4000]
#define PB8255 XBYTE[0xE001] //B口地址
unsigned char bdata output_sel;
// 數碼管掃描驅動指針
unsigned char digi_scaner;
//用于按鍵消抖
unsigned char p_counter=0;
// 測試用計數值十進制表示
unsigned char fir_dis=1;
unsigned char sec_dis=2;
unsigned char thi_dis=3;
unsigned char for_dis=4;
/* 按鍵 */
sbit KEY1= P1^0;
sbit KEY2= P1^1;
sbit KEY3= P1^2;
sbit KEY4= P1^3;
/*******************************************************************************************/
typedef struct RFConfig
{
uchar n;
uchar buf[10];
}RFConfig;
RFConfig temp={0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/*******************************************************************************************/
uchar xdata TxBuf[32];
uchar xdata RxBuf[32];
uchar xdata TmpBuf[32];
/*******************************************************************************************/
uchar key,rsbrf,delayf,tf;
int jsq=3; //計數器
/*******************************************************************************************/
uchar bdata DATA_BUF;
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
/*******************************************************************************************/
/**** receive_module nrf905 控制引腳 ****/
#define COM8255 XBYTE[0xE003] //命令口地址
/* 8255 reset */
sbit RST8255 = P1^4;
/* 輸出緩存,8255端口B ,定義了一個可位尋址的變量 */
unsigned char bdata PB;
sbit SCK = PB^7;
sbit TX_EN = PB^6;
sbit TRX_CE = PB^5;
sbit PWR_UP = PB^4;
sbit MOSI = PB^2;
sbit CSN = PB^0;
// sbit MISO = PB^3;
sbit AM =P3^2;
sbit DR =P3^3;
sbit MISO= P3^4;
sbit CD =P3^5;
/*******************************************************************************************/
void InitIO(void); // Initialize IO port
void Inituart(void); // initialize 232 uart
void Config905(void); // Config nRF905 module配置NRF905模式
void SetTxMode(void); // Set nRF905 in Tx mode
void SetRxMode(void); // Set nRF905 in Rx mode
void TxPacket(void); // Send data by nRF905
void RxPacket(void); // Recive data by nRF905
void SpiWrite(uchar); // Write data to nRF905
uchar SpiRead(void); // Read data to nRF905
void Delay(uchar n); // Delay 100us
//void Scankey(void); // Scan key
void TxData (uchar x); // Send key_value to CRT display
//void comdebug(void);
//////////////////////////////////////////////////////
/**** 7段數碼顯示譯碼
參數:
DATA: 需要顯示的數字或符號;
返回值: 7段譯碼結果 ( D7~0 = PGFEDCBA )
*****/
unsigned char NUMTOSEG7(unsigned char DATA)
{ unsigned char AA;
switch (DATA)
{ case 0: AA=0xc0;break; /* '0'*/
case 1: AA=0xf9;break; /* '1'*/
case 2: AA=0xa4;break; /* '2'*/
case 3: AA=0xb0;break; /* '3'*/
case 4: AA=0x99;break; /* '4'*/
case 5: AA=0x92;break; /* '5'*/
case 6: AA=0x82;break; /* '6'*/
case 7: AA=0xf8;break; /* '7'*/
case 8: AA=0x80;break; /* '8'*/
case 9: AA=0x90;break; /* '9'*/
case 10: AA=0x88;break; /* 'A'*/
case 11: AA=0x83;break; /* 'B'*/
case 12: AA=0xc6;break; /* 'C'*/
case 13: AA=0xa1;break; /* 'D'*/
case 14: AA=0x86;break; /* 'E'*/
case 15: AA=0x8e;break; /* 'F'*/
case 16: AA=0x48;break;//'n'
case '-':AA=0xdf;break; /* 破折號*/
case '_':AA=0xf7;break; /* 下劃線*/
case ' ':AA=0xff;break; /* 消隱*/
default: AA=0xff;
}
return(AA);
}
//////////////////////////////////////////////////////
void Display()
{ output_sel = 0xf0; /*初值,令數碼管驅動位無效,指示燈全滅*/
if (++digi_scaner>=5) digi_scaner = 1;
switch (digi_scaner)
{
case 1: /* 驅動第一個數碼管 */
output_sel |= 0x01;
ADDR_8SEG = NUMTOSEG7(fir_dis); /*輸出到鎖存器U5(在電路圖中找)*/
break;
case 2: /* 驅動第二個數碼管 */
output_sel |= 0x02;
ADDR_8SEG = NUMTOSEG7(sec_dis); /*輸出到鎖存器U5*/
break;
case 3: /* 驅動第三個數碼管 */
output_sel |= 0x04;
/*輸出到鎖存器U5*/
ADDR_8SEG = NUMTOSEG7(thi_dis);
break;
case 4: /* 驅動第四個數碼管 */
output_sel |= 0x08;
ADDR_8SEG = NUMTOSEG7(for_dis); /*輸出到鎖存器U5*/
break;
}
ADDR_SEL = output_sel; /*輸出到鎖存器U6(在電路圖中找)*/
}
void TxData (unsigned char x)
{
SBUF=x;
while(TI==0);
TI=0;
}
/*******************************************************************************************/
//function Delay100us();Delay 100us
/*******************************************************************************************/
void Delay(uchar n)
{
uchar i;
for(i=0;i<n;i++) _nop_();
}
/*******************************************************************************************/
void serial () interrupt 4
{
unsigned char temp;
if(RI)
{
temp=SBUF;
rsbrf=temp;
RI=0;
}
}
/*******************************************************************************************/
void SpiWrite(uchar byte)
{
uchar i;
DATA_BUF=byte; // Put function's parameter into a bdata variable
for (i=0;i<8;i++) // Setup byte circulation bits
{
if (flag) // Put DATA_BUF.7 on data line
{MOSI=1; PB8255=PB; }
else
{MOSI=0; PB8255=PB; }
Delay(10);
SCK=1;PB8255=PB;
// Delay(1);
Delay(10);
// Set clock line high
// Shift DATA_BUF
DATA_BUF=DATA_BUF<<1;
SCK=0; PB8255=PB; // Set clock line low
// Delay(10);
// _nop_();_nop_();_nop_();_nop_(); Delay(10);
}
}
/*******************************************************************************************/
//function SpiRead();
/*******************************************************************************************/
uchar SpiRead(void)
{
uchar i;
for (i=0;i<8;i++) // Setup byte circulation bits
{
DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
SCK=1; PB8255=PB; // Set clock line high
// _nop_();_nop_();_nop_();_nop_(); Delay(10);
if (MISO)
flag1=1; // Read data
else
flag1=0;
Delay(10);
SCK=0; PB8255=PB; // Set clock line low
Delay(10);
// _nop_();_nop_();_nop_();_nop_(); Delay(10);
}
return DATA_BUF; // Return function parameter
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -