📄 main.c
字号:
#include "mptpack.h"
#include "1327all.h"
#include "sfr62.h"
#include "mcu.h"
#include "os.h"
#include "..\crc\crch.h"
#include "..\aloha\aloha.h"
//#define LCD_EXIST
//#define KEY_EXIST
//#define IIC_EXIST
//#define UART_EXIST
#define PLL_EXIST
#ifdef LCD_EXIST
#include "..\lcd\lcd.h"
#include "..\display\display.h"
#endif
#ifdef KEY_EXIST
#include "..\key\key.h"
#endif
#ifdef IIC_EXIST
#include "..\iic\iic.h"
#endif
#ifdef UART_EXIST
#include "..\uart\uart.h"
#endif
#ifdef PLL_EXIST
#include "..\pll\pll.h"
#endif
//#include "..\lib\alohalib.h"
//const INT8U linecode1[]={" this is test!"};
//const INT8U linecode2[]={"please affirm"};
const INT8U linecode1[]={"跋巴芭百白摆败柏"};
const INT8U linecode2[]={"拜佰伯稗被北倍杯"};
const INT8U linecode3[]={"跋巴芭百白摆败柏"};
const INT8U linecode4[]={"跋巴芭百白摆败柏"};
const INT8U linecode5[]={"啊阿吧把八爸拔罢"};
const INT8U linecode6[]={"跋巴芭百白摆败柏"};
const INT8U linecode7[]={"拜佰伯稗被北倍杯"};
const INT8U linecode8[]={"跋巴芭百白摆败柏"};
const INT8U linecode9[]={"跋巴芭百白摆败柏"};
const INT8U linecode10[]={"啊阿吧把八爸拔罢"};
void far main(void);
void uart_test(void);
void iic_test(void);
void lcd_test(void);
void bs_oneslot_test(void);
void bs_twoslot_test(void);
void bs_test(void);
void ms_test(void);
void bs_frametest(void);
void ms_frametest(void);
void ms_test_rqr(void);
void move_to_buf(void);
void move_to_rcvbuf(void);
void move_to_trbuf(void);
void move_to_getframe(void);
void move_to_tmp(void);
void move_tmpto_buf(void);
void clear_trframe_buf(void);
void make_alh(void);
void make_rqr_ack(void);
void make_rqr_ackx(void);
void make_rqs_acki(void);
void make_rqs_ackq(void);
void make_rqs_ackx(void);
void make_rqs_ackv(void);
void make_rqt_ack(void);
void make_rqe_acki(void);
void make_rqe_ackq(void);
void make_rqe_ackx(void);
void make_rqe_ackv(void);
void make_rqx_ack(void);
void make_ahy(void);
void make_ahyx(void);
void make_ahyc(void);
void make_ahyd_build(void);
void make_ahyd_cancel(void);
void make_ahyk(void);
void make_ahyi(void);
void make_gtc(void);
void make_rqr(void);
GET_FRAME get_frame;
TR_FRAME tr_frame;
INT8U buf[40],rcvbuf[40],txtmp[8];
extern INT8U fskmt_buf[48];
extern test_fun();
INT8U *pframe,*pgetframe;
INT16U *ppframe,*pppframe;
INT16U crc;
INT16U result=0,ttt=0;
INT8U eedata;
INT8U eeedata[4];
INT8U N=4,counter =3;
const INT32U ChTxTable[4] = {0x73a0,0x7530,0x76c0,0x7850}; //370,375,380,385MHZ
const INT32U ChRxTable[4] = {0x6844,0x69d4,0x6bd4,0x69d4}; //380,385,390,385MHZ, IF 46.350MHZ
void far main(void)
{
InitPLLHW();
PLLSetChannel(ChTxTable[0],ChRxTable[0]);
HwOpenPTTTx();
do{
}while(1);
pframe = (INT8U *)&tr_frame;
ppframe = (INT16U *)&tr_frame;
pppframe = (INT16U *)&fskmt_buf;
pgetframe = (INT8U *)get_frame.Buf;
ENABLE_INT();
// uart_test();
// iic_test();
// lcd_test();
// bs_oneslot_test();
// bs_twoslot_test();
// bs_test();
ms_test();
// ms_test_rqr();
// bs_frametest();
// ms_frametest();
}
void bs_oneslot_test(void)
{
clear_trframe_buf();
tr_frame.Aloha.FILL0 = 0;
tr_frame.Aloha.PFIX = 0x11;
tr_frame.Aloha.IDENT1 = 0x1555;
tr_frame.Aloha.CAT = 1;
tr_frame.Aloha.TYPE = 0;
tr_frame.Aloha.FUNC = 1;
tr_frame.Aloha.CHAN4 = 1;
tr_frame.Aloha.WT = 4;
tr_frame.Aloha.M = 3;
tr_frame.Aloha.N = 2;
enstru_1327(pframe,3);
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 16) = crc;
*(pppframe +17) = *(ppframe);
*(pppframe +18) = *(ppframe + 1);
*(pppframe +19) = *(ppframe + 2);
aloha_init(0,0xaa,1);
aloha_tx(pframe+6,1,0,10);
do{
if(aloha_status() == FSKSTATUS_OVERWT) //FSKSTATUS_RCV_OK)
{
result = decode_crc((INT8U *)pppframe-1);
ttt=!ttt;
if(ttt) aloha_tx(pframe+6,1,0,0);
}
} while(1);
}
void bs_twoslot_test(void)
{
clear_trframe_buf();
tr_frame.Head.FILL0 = 1;
tr_frame.Head.PFIX = 0x35;
tr_frame.Head.IDENT1 = 0x1555;
tr_frame.Head.FILL1 = 1;
tr_frame.Head.CAT = 1;
tr_frame.Head.TYPE = 1;
tr_frame.Head.LEN = 4;
tr_frame.Head.PFIX2 = 0x1;
tr_frame.Head.IDENT2 = 0x1555;
enstru_1327(pframe,3);
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 16) = crc;
*(pppframe +17) = *(ppframe);
*(pppframe +18) = *(ppframe + 1);
*(pppframe +19) = *(ppframe+ 2);
*ppframe = 0x4321;
*(ppframe + 1) = 0x8765;
*(ppframe + 2) = 0x0ba9;
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 12) = crc;
*(pppframe +13) = *(ppframe);
*(pppframe +14) = *(ppframe + 1);
*(pppframe +15) = *(ppframe + 2);
*ppframe = 0x0fecd;
*(ppframe + 1) = 0x4321;
*(ppframe + 2) = 0x765;
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 8) = crc;
*(pppframe +9) = *(ppframe);
*(pppframe +10) = *(ppframe + 1);
*(pppframe +11) = *(ppframe + 2);
*ppframe = 0x0ba98;
*(ppframe + 1) = 0x0efcd;
*(ppframe + 2) = 0x321;
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 4) = crc;
*(pppframe +5) = *(ppframe);
*(pppframe +6) = *(ppframe + 1);
*(pppframe +7) = *(ppframe + 2);
*ppframe = 0x07654;
*(ppframe + 1) = 0x0ba98;
*(ppframe + 2) = 0x0ecd;
crc = aloha_encode_crc(pframe + 5);
*(pppframe + 0) = crc;
*(pppframe +1) = *(ppframe);
*(pppframe +2) = *(ppframe + 1);
*(pppframe +3) = *(ppframe + 2);
aloha_init(2,0xaa,1);
do{
if(aloha_status() == FSKSTATUS_RCV_OK)
{
result = decode_crc((INT8U *)pppframe-1);
if(!ttt)
{
ttt = !ttt;
aloha_set_rcvnum(5);
}
else{
ttt = !ttt;
result = 0;
result = decode_crc((INT8U *)pppframe-1);
result = decode_crc((INT8U *)pppframe-9);
result = decode_crc((INT8U *)pppframe-17);
result = decode_crc((INT8U *)pppframe-25);
result = decode_crc((INT8U *)pppframe-33);
}
}
} while(1);
}
#ifdef UART_EXIST
void uart_test(void)
{
if(!init_uart())
{
do{
crc = 0;
}while(1);
}
suart.txbuf[0] = 0;
suart.txbuf[1] = 1;
suart.txnum = 2;
enable_tx_uart();
// tx_uart = 1;
do{
}while(1);
}
#endif
#ifdef IIC_EXIST
void iic_test(void)
{
iic_init();
iic_reset();
result = ee_write_byte(1,0xaa);
result = ee_write_byte(2,0x55);
result = ee_write_byte(3,0xcc);
result = ee_write_byte(4,0x11);
result = ee_read_page(1,eeedata,4);
result = ee_read_page(1,eeedata,4);
result = ee_read_page(1,eeedata,4);
result = ee_read_byte(1,&eedata);
result = ee_read_byte(2,&eedata);
result = ee_read_byte(3,&eedata);
result = ee_read_byte(4,&eedata);
}
#endif
#ifdef LCD_EXIST
void lcd_test(void)
{
display_init();
// lcd_init();
display_putline_code(linecode1,0,0,0);
lcd_all();
display_setcursor(1,0);
display_sequence(0xa1a2);
display_symbol.cursor_open = 1;
// do{
// if(display_symbol.cursor_chang) display_cursor();
// }while(1);
//lcd_line(12);
init_key();
ENABLE_INT();
do{
if(key_buf_num)
{
display_keychar(key_code_buf[key_buf_end]);
key_buf_num--;
key_buf_end++;
if(key_buf_end >= KEY_BUF_LENGTH) key_buf_end=0;
}
if(display_symbol.cursor_chang) display_cursor();
}while(1);
/*
// lcd_write_command(LCD_LINE|32,0,0);
// lcd_write_command(LCD_REVERSE_ON,0,0);
put_code_lcd(linecode1,0,0);
put_code_lcd(linecode2,0,1);
put_code_lcd(linecode3,0,2);
put_code_lcd(linecode4,0,3);
put_code_lcd(linecode5,0,4);
lcd_all();
do{
}while(1);
*/
}
#endif
void bs_test(void)
{
INT8U rqr=0,rqs=0,rqe=0,status =0;
INT16U i = 0,numall = 0;
/*
buf[39] = 0xd5;
buf[38] = 0x00;
buf[37] = 0x0c;
buf[36] = 0x54;
buf[35] = 0x00;
buf[34] = 0x00;
buf[33] = 0x40;
buf[32] = 0xce;
crc = aloha_encode_crc(buf+39);
result = decode_crc(buf + 39);
*/
/*
make_alh();
aloha_init(2,0xaa,1);
aloha_tx(buf + 39,1,0,10);
do{
if(key_buf_num)
{
display_keychar(key_code_buf[key_buf_end]);
key_buf_num--;
key_buf_end++;
if(key_buf_end >= KEY_BUF_LENGTH) key_buf_end=0;
}
if(aloha_tx_status() == FSKSTATUS_TX_IDLE)
{
make_alh();
aloha_tx(buf + 39,1,0,0);
}
if(aloha_status() == FSKSTATUS_RCV_OK)
{
move_to_rcvbuf();
result = decode_crc(rcvbuf + 39);
move_to_getframe();
disstru_1327(pgetframe,3);
if(!get_frame.Type.Addr) continue;
// if(get_frame.Type.CAT) continue;
// if(get_frame.Type.TYPE!=0x2) continue;
switch(get_frame.Type.TYPE)
{
case 0x15: //rqr
if(rqr == 0)
{
make_rqr_ack();
}
if(rqr == 1)
{
make_rqr_ackx();
}
if(++rqr>1) rqr=0;
status = 0;
break;
case 0x10: //rqs
if(rqs == 0)
{
make_rqs_acki();
move_to_tmp();
make_ahy();
}
if(rqs == 1)
{
make_rqs_ackq();
move_to_tmp();
make_ahy();
}
if(rqs == 2)
{
make_rqs_ackx();
move_to_tmp();
make_ahyx();
}
if(rqs == 3)
{
make_rqs_ackv();
move_to_tmp();
make_ahyc();
}
if(++rqs>3) rqs=0;
status = 1;
break;
case 0x13: //rqt
make_rqt_ack();
status = 0;
break;
case 0x14: //rqe
if(rqe == 0)
{
make_rqe_acki();
move_to_tmp();
make_ahy();
}
if(rqe == 1)
{
make_rqe_ackq();
move_to_tmp();
make_ahy();
}
if(rqe == 2)
{
make_rqe_ackx();
move_to_tmp();
make_ahyx();
}
if(rqe == 3)
{
make_rqe_ackv();
move_to_tmp();
make_ahyc();
}
if(++rqe>3) rqs=0;
status = 1;
break;
case 0x12: //rqx
make_rqx_ack();
status = 0;
break;
default:
status = 0xff;
break;
}
if(status != 0xff)
{
do{
}while(aloha_tx_status() != FSKSTATUS_TX_IDLE);
aloha_tx(buf + 39,1,0,0);
}
if(status == 1)
{
move_tmpto_buf();
do{
}while(aloha_tx_status() != FSKSTATUS_TX_IDLE);
aloha_tx(buf + 39,1,0,0);
do{
}while(aloha_tx_status() != FSKSTATUS_TX_IDLE);
status == 0;
}
}
} while(1);
*/
}
void move_to_buf(void)
{
buf[39] = tr_frame.Buf[5];
buf[38] = tr_frame.Buf[4];
buf[37] = tr_frame.Buf[3];
buf[36] = tr_frame.Buf[2];
buf[35] = tr_frame.Buf[1];
buf[34] = tr_frame.Buf[0];
crc = aloha_encode_crc(pframe + 5);
buf[33] = crc>>8;
buf[32] = crc&0xff;
}
void move_to_rcvbuf(void)
{
INT8U * p;
p = (INT8U *)&fskmt_buf;
rcvbuf[39] = *(p-1);
rcvbuf[38] = *(p-2);
rcvbuf[37] = *(p-3);
rcvbuf[36] = *(p-4);
rcvbuf[35] = *(p-5);
rcvbuf[34] = *(p-6);
rcvbuf[33] = *(p-7);
rcvbuf[32] = *(p-8);
}
void move_to_getframe(void)
{
get_frame.Buf[5] = rcvbuf[39];
get_frame.Buf[4] = rcvbuf[38];
get_frame.Buf[3] = rcvbuf[37];
get_frame.Buf[2] = rcvbuf[36];
get_frame.Buf[1] = rcvbuf[35];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -