sio.c

来自「DSP部分功能测试 串口」· C语言 代码 · 共 136 行

C
136
字号
#include    "f2407_c.h"


extern unsigned int data_rec[500];
extern void delay(unsigned int j11);

unsigned int assic(unsigned int source)
{
	switch(source)
	{
		case 0x000a:return(0x0041);
		case 0x000b:return(0x0042);
		case 0x000c:return(0x0043);
		case 0x000d:return(0x0044);
		case 0x000e:return(0x0045);
		case 0x000f:return(0x0046);
		default:return(source+0x30);
	}
}


void sio_write_data(unsigned int addr,unsigned data)
{
	enable();
	*SCITXBUF=0x001b;
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=0x0057;
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=assic(addr/0x1000);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x1000;
   	
   	*SCITXBUF=assic(addr/0x0100);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x0100;
   	
   	*SCITXBUF=assic(addr/0x0010);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x0010;
   	
   	*SCITXBUF=assic(addr);
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=assic(data/0x1000);
   	while((*SCICTL2&0x0080)==0);
   	
   	data=data%0x1000;
   	
   	*SCITXBUF=assic(data/0x0100);
   	while((*SCICTL2&0x0080)==0);
   	
   	data=data%0x0100;
   	
   	*SCITXBUF=assic(data/0x0010);
   	while((*SCICTL2&0x0080)==0);
   	
   data=data%0x0010;
   	
   	*SCITXBUF=assic(data);
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=0x000d;
   	while((*SCICTL2&0x0080)==0);
   	
   	
}



void sio_read_data(unsigned int addr,unsigned int num_data)
{
	
	enable();
	*SCITXBUF='';
	
	*SCITXBUF=0x001b;
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=0x0052;
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=assic(addr/0x1000);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x1000;
   	
   	*SCITXBUF=assic(addr/0x0100);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x0100;
   	
   	*SCITXBUF=assic(addr/0x0010);
   	while((*SCICTL2&0x0080)==0);
   	
   	addr=addr%0x0010;
   	
   	*SCITXBUF=assic(addr);
   	while((*SCICTL2&0x0080)==0);
   	
   	num_data=num_data%0x1000;
   	
   	*SCITXBUF=assic(num_data/0x0100);
   	while((*SCICTL2&0x0080)==0);
   	
   	num_data=num_data%0x0100;
   	
   	*SCITXBUF=assic(num_data/0x0010);
   	while((*SCICTL2&0x0080)==0);
   	
    num_data=num_data%0x0010;
   	
   	*SCITXBUF=assic(num_data);
   	while((*SCICTL2&0x0080)==0);
   	
   	*SCITXBUF=0x000d;
   	while((*SCICTL2&0x0080)==0);
   	
   	
  delay(60000);
   	
   	
   	
}
   	
   	
   	
   	
   	
   	
   	
   	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?