📄 test.c
字号:
/**************************************************************
(for test only)
**************************************************************/
#include "hostmcu.h"
#include "card9346.h"
#include "my93c46.h"
#include "8019.h"
/**************************************************************/
void n2k_main(void);
/**************************************************************/
//At OSC_24
// 1 = 256 * 0.5us = 128 us = 0.128 ms
// 80 = 10 ms
#define OV_VAL 250
/**************************************************************/
uchar nodeid[6];
/**************************************************************/
uchar code VERSION_STR[]="\n>Test Program Run OK.\n";
//uchar code dummy[1024*20];
uchar rbuf[64];
ulong ticks=0;
/**************************************************************/
void trans_str(uchar *str)
{
uchar idx;
for(idx=0;idx<strlen(str);idx++)
trans_com(str[idx]);
}
/**************************************************************/
void delay(void)
{
uint idx;
for(idx=0;idx<(uint)0x1fff;idx++);
}
/**************************************************************/
void main(void)
{
uchar a,b;
uint dat;
uint idx;
init_serial();
trans_str(VERSION_STR);
//EA=1;
HARD_RST();
//write_93c46(0x02,0x5452);
/*
SET_PAGE(3);
myoutportb(0x01,0x80);
mw_init();
for(idx=0;idx<0x10;idx++)
{
dat=mw_read(idx);
trans_hex(dat&0xff);
trans_hex((dat>>8)&0xff);
}
myoutportb(0x01,0x00);
while(1);
for(idx=0;idx<0x40;idx++)
{
trans_hex(read_93c46(idx)&0xff);
trans_hex((read_93c46(idx)>>8)&0xff);
}
while(1);
*/
dma_read_nodeid(nodeid);
trans_str("\nnodeid: ");
for(idx=0;idx<6;idx++)
{
trans_hex(nodeid[idx]);
}
set_nodeid(nodeid);
SET_PAGE(0);
n2k_main();
/*
trans_com('\n');
for(a=0;a<4;a++)
{
SET_PAGE(a);
for(b=0;b<0x10;b++)
trans_hex(myinportb(b));
trans_com('\n');
}
HARD_RST();
*/
/*
trans_hex(myinportb(0x0a));
trans_hex(myinportb(0x0b));
trans_com('\n');
myoutportb(0x00,0xe1); delay();
trans_hex(myinportb(0x00));
trans_hex(myinportb(0x01));
trans_hex(myinportb(0x02));
trans_hex(myinportb(0x03));
myoutportb(0x01,0x70); delay();
trans_hex(myinportb(0x00));
trans_com('\n');
myoutportb(0x00,0x61); delay();
trans_hex(myinportb(0x01));
trans_hex(myinportb(0x02));
trans_hex(myinportb(0x03));
trans_hex(myinportb(0x04));
trans_hex(myinportb(0x05));
trans_hex(myinportb(0x06));
trans_hex(myinportb(0x07));
trans_hex(myinportb(0x08));
trans_hex(myinportb(0x09));
trans_hex(myinportb(0x0a));
trans_hex(myinportb(0x0b));
trans_hex(myinportb(0x0c));
trans_hex(myinportb(0x0d));
trans_com('\n');
trans_hex(myinportb(0x00));
trans_com('\n');
*/
while(1);
}
/**************************************************************/
void init_serial(void)
{
TMOD=0x22;
TH1 =0xf4; //22.1184:f4:9600,fa:19200,fd:38400
SCON=0x50;
PCON=0x80;
TR1=1;
TI=0;
RI=0;
//////////////////
TH0=256-OV_VAL;
TL0=256-OV_VAL;
ET0=1;
TR0=1;
//////////////////
EA=0;
}
/**************************************************************/
void trans_com(uchar byte)
{
SBUF=byte;
while(!TI);
TI=0;
}
/**************************************************************/
uchar rec_com(void)
{
uchar ch;
while(!RI);
ch=SBUF;
RI=0;
return ch;
}
/**************************************************************/
uchar* rec_str(uchar *str)
{
uchar idx;
for(idx=0;idx<12;idx++)
{
str[idx]=rec_com();
if(str[idx]==0 || str[idx]==0x0a || str[idx]==0x0d || str[idx]=='.')
{
break;
}
}
str[idx]=0;
return str;
}
/**************************************************************/
void timer0_isr(void) interrupt 1
{
EA=0;
ticks++;
EA=1;
}
/**************************************************************/
uint map_io(uchar io)
{
uint io_addr[]={
0x8000,0x8400,0x9000,0x9400,
0xc000,0xc400,0xd000,0xd400,
0x8800,0x8c00,0x9800,0x9c00,
0xc800,0xcc00,0xd800,0xdc00,
0xa000,0xa400,0xb000,0xb400,
0xe000,0xe400,0xf000,0xf400,
0xa800,0xac00,0xb800,0xbc00,
0xe800,0xec00,0xf800,0xfc00,
0 };
if(io>0x1f)
return 0xffff;
return io_addr[io];
//AEN SA19 ... SA10 SA9 SA8 SA7 SA6 SA5 SA4 SA3 SA2 SA1 SA0 ;RTL8019AS
// 1 1 0 0 0 x x x x x ;0x03XX
// 0 0 ... 0 A15 A15 0 0 0 A13 A11 A14 A12 A10 ;AT89C51
// 1 1 0 0 0 x x x x x ;0xXX00
//SA4 SA3 SA2 SA1 SA0
//A13 A11 A14 A12 A10 Offset A15 A14 A13 A12 | A11 A10 A9 A8 | A7...A0 AT89C51-Address
// 0 0 0 0 0 0x00 1 0 0 0 | 0 0 0 0 | 0 0x8000
// 0 0 0 0 1 0x01 1 0 0 0 | 0 1 0 0 | 0 0x8400
// 0 0 0 1 0 0x02 1 0 0 1 | 0 0 0 0 | 0 0x9000
// ..................................................................................
}
/**************************************************************/
void trans_hex(uchar ch)
{
uchar tmp[8];
sprintf(tmp,"%02x ",(uint)ch);
trans_str(tmp);
}
/**************************************************************/
uchar dma_read_nodeid(uchar *ptr)
{
uchar idx;
SET_PAGE(0);
myoutportb(0x09,0x00); //RSAR1 DMA read high address
myoutportb(0x08,0x00); //RSAR0 DMA read low address
myoutportb(0x0b,0x00); //RBCR1 read count high address
myoutportb(0x0a,0x0c); //RBCR0 read count low address
myoutportb(0x00,0x0a); //DMA read and start
for(idx=0;idx<6;idx++)
{
ptr[idx]=myinportb(0x10);
myinportb(0x10);
}
return TRUE;
}
/**************************************************************/
uchar set_nodeid(uchar *ptr)
{
uchar idx;
SET_PAGE(1);
for(idx=0;idx<6;idx++)
{
myoutportb(PAR0+idx,ptr[idx]);
}
return TRUE;
}
/**************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -