📄 main.c
字号:
/******************************************************************************************\
============================================================================================
* T905.c
*
* This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*
* NOTES:
* This program is for the nRF905 with 232 interface;
* $write date: 2004.4.7 ;time 11:00$
* $Revision: 1 $
*
/*******************************************************************************************/
//#include"HT48E50.h"
#include <ht46r232.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
/*******************************************************************************************/
typedef struct RFConfig
{
uchar n;
uchar buf[10];
}RFConfig;
#define RxTxConf_n 10
uchar const RxTxConf_buf[10] =
{
0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
};
// The content of this struct is nRF905's initialize data.
// CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
// RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
// 8 Bits CRC And enable
/*******************************************************************************************/
uchar TxBuf[32];
uchar RxBuf[32];
uchar RecFirChar;
/*******************************************************************************************/
#pragma rambank0
uchar DATA_BUF;
bit FlagRec;
unsigned long loopcnt;
uchar poscnt;
unsigned long alarmcnt;
bit FlagShowAlarm;
bit IsAlarm;
unsigned long keycnt;
bit signstar;
//#define flag DATA_BUF^7
//#define flag1 DATA_BUF^0
/*******************************************************************************************/
#define P0 _pa
#define TX_EN _pd1 // selection: 1 for tx and 0 for rx
#define TRX_CE _pd0 // enable chip transmit and receive,output
#define PWR_UP _pc4 // power switch output
#define MISO _pc3 // data output
#define MOSI _pc2 // data input
#define SCK _pc1 // output, master clock
#define CSN _pc0 // output for spi enable
#define AM _pa2
#define DR _pa3
#define CD _pa4
//#define TX_EN _pb3 // selection: 1 for tx and 0 for rx
/*******************************************************************************************/
void InitIO(void); // Initialize IO port
//void Inituart(void); // initialize 232 uart
//void timer1_init(); // initialize timer1
void Config905(void); // Config nRF905 module
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(uchar carcmd); // Scan key
//void TxData (uchar x); // Send key_value to CRT display
//**************************LCD***define****************************
#define LINE1 0
#define LINE2 1
#define LINE1_HEAD 0x80
#define LINE2_HEAD 0xC0
#define LCD_DELAY_TIME 40
#define DATA_MODE 0x38
#define OPEN_SCREEN 0x0C
#define DISPLAY_ADDRESS 0x80
#define CLEARSCREEN LCD_en_command(0x01)
#define HIGH 1
#define LOW 0
#define TRUE 1
#define FALSE 0
#define ZERO 0
//change this part at different board
#define LCD1602_RS _pa5 //data command select 1 data 0 command pin 4
#define LCD1602_RW _pa6 //read write select 1 read 0 write pin 5
#define LCD1602_EN _pa7 //LCD enable signal pin 6
/***********************announce LCD************************************/
void LCD_delay(void);//lcd delay function
void LCD_en_command(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
void LCD_set_xy( unsigned char x, unsigned char y );//set display address function
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character function
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string function
void LCD_init(void);//lcd initize function
/*******************************************************************************************/
//function main();
/*******************************************************************************************/
void main(void)
{
bit cd;
uchar j;
keycnt=0;
loopcnt=0;
poscnt=0;
FlagRec=0;
IsAlarm=0;
signstar=0;
InitIO(); // Initialize IO port
//Inituart(); // initialize 232 uart
// timer1_init(); // initialize timer1
LCD_init();
CLEARSCREEN;
Delay(100);
// _delay(60000);
LCD_write_string(0,LINE1," Car Partner");
LCD_write_string(0,LINE2," Ready");
Delay(100);
Config905(); // Config nRF905 module
SetTxMode(); // Set Tx Mode
TxPacket(); // Transmit Tx buffer data
Delay(500); // delay for led light
SetRxMode(); // Set nRF905 in Rx mode
// SetTxMode(); // Set nRF905 in Rx mode
FlagRec=0;
while(1) // circulation
{
if (_pa0==0)
{
Delay(10);
if (_pa0==0)
{
keycnt=0;
while(_pa0!=1)
{
if(keycnt<65000)
keycnt++;
}
if((keycnt>60000) && IsAlarm)
{
Scankey(0x02);
LCD_write_char(15,LINE1,'*');
}
else
Scankey(0x01);
signstar=1;
}
}
if(_pa1==0)
{
//LCD_write_char(13,LINE1,'r');
_delay(4000);
if (_pa1==0)
{
while(_pa1==0);
CLEARSCREEN;
loopcnt=0;
poscnt=0;
FlagRec=0;
IsAlarm=0;
signstar=0;
LCD_write_char(15,LINE1,' ');
_delay(1000);
LCD_write_string(0,LINE1," Car Partner");
_delay(1000);
}
}
if(DR)
{
//Scankey(); // Scan key
RxPacket(); // ... recive data
}
/*
if(FlagRec==1)
{_delay(100);
LCD_write_string(9,LINE2,"Call");
_delay(100);
// FlagRec=0;
}
*/
if((FlagRec==0) && (loopcnt++>20000))
{
loopcnt=0;
for(j=0;j<16;j++)
LCD_write_char(j,LINE2,' ');
if(!signstar)
LCD_write_char(poscnt,LINE2,'>');
else
LCD_write_char(poscnt,LINE2,'*');
if(poscnt++>15)
poscnt=0;
}
if((FlagRec==1)&&(alarmcnt++>10000))
{
if(FlagShowAlarm)
{
if(IsAlarm)
LCD_write_string(7,LINE2,"Alarm");
else
LCD_write_string(7,LINE2,"Ack ");
FlagShowAlarm=0;
}
else
{
LCD_write_string(7,LINE2," ");
FlagShowAlarm=1;
}
alarmcnt=0;
}
}
}
/*******************************************************************************************/
//function InitIO();
/*******************************************************************************************/
void InitIO(void)
{
_pac=0x1f;//low 2 bit for key ,no LED
_pbc=0X00;// change pin output for LCD data BUS
// PWR_UP _pc4 // output: power switch
// MISO _pc3 // input: data input
// MOSI _pc2 // output: data output
// SCK _pc1 // output, master clock
// CSN _pc0 // output for spi enable
_pcc=0x08;
// pd1 output for TX_EN // selection: 1 for tx and 0 for rx
// TRX_CE _pd0 // enable chip transmit and receive,output
_pdc=0xfc;
/*
P0 = P0 | 0xf0;
P0 = P0 & 0x0f; // led light
Delay(1000);
P0 = P0 | 0xf0;
_pa4 = 0;
Delay(2000);
_pa4 = 1;
_pa5 = 0;
Delay(2000);
_pa5 = 1;
_pa6 = 0;
Delay(2000);
_pa6 = 1;
_pa7 = 0;
Delay(2000);
_pa7 = 1;
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -