在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6714|回复: 14

[下载]AUDC812 的 tcpip 源代码 - 8019

[复制链接]
发表于 2004-5-22 08:27:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
LBSALE[9]LBSALE[这个贴子最后由wdy9927在 2004/06/01 03:17pm 第 1 次编辑]

来源 c51bbs

10_270.zip

38.42 KB, 下载次数: 44 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2004-5-22 08:32:28 | 显示全部楼层

[下载]AUDC812 的 tcpip 源代码 - 8019

//赚点小钱!
//给出main 函数源代码以供参考
//不错的说
#include <aduc812.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "reg_8019.h"
#include "depend.h"
#include "global.h"
#include "proto.h"
/*****************************************************************************/
/*Debug Mode                                                       */
/*****************************************************************************/
//#define STRING_TEST  /* sizeof(data type) */     
//#define RECEIVE_STATUS
//#define RTL8019AS_ID_CHECK
#define RECEIVE_TEST
/*****************************************************************************/
/*Global variable                                                  */
/*****************************************************************************/
byte EthRxBuf[NBUF][SBUFSIZ];
byte EthTxBuf[BUFSIZ];
union t {/* time out variable for interrupt */
word hl;
byte reg[2];
word watchdog_counter;
}time[2];

/*****************************************************************************/
/*Main routine start                                               */
/*****************************************************************************/
void main(void)
{
   
    system_init();
    ethernet_init();
    print_logo();
    print("\n\rInitialize OK ..");
   
    while(1){
    //EN_CMD = EN_PAGE0 + EN_NODMA + EN_START;
    print("\n\r'Y2K.11.20:\\>");
        switch(get_serial_echo()){
case '0': output_port0();break;
            case '1': output_port1();break;
            case '2': output_port2();break;
            case '3': output_port3();break;
            case '4': ethernet_register_test();break;
case '5': ethernet_packet_tx_test();break;
            //case 'a':
            //case 'S': alter_memory();
            case 'c':
case 'C': clear_external_ram();break;
case 'd': dump_auto = 1;
  dump_memory();break;
case 'D': dump_auto = 0;
  dump_memory();break;
            //case 'e':
            //case 'E': break;
            case 'H':
case 'h':
case '?': help_message();break;
case 'i':
case 'I': input_port1();break;
case ':': loading_ready = 1;
            case 'L':
case 'l': loading_program();break;
case 'q':
case 'Q': quit_program();break;
case 'r':
case 'R': reset();break;
case 't':
            case 'T': tiny_tcp_main();break;
case 'Z':
case 'z': DoS();break;
case '$': alter_memory();
  ethernet_test();break;
default : break;
}
}
}

/*****************************************************************************/
/*              INTERRUPT SERVICE ROUTINE                              */
/*****************************************************************************/
void RTL8019AS_INT0() interrupt 0   /* External Interrupt 0 */
{
    /* you have to use data(Internal RAM) to access faster */
    /* ENISR_ALL value must be modified when you detect error or success and so on.. */
    byte e_isr;
   
    disable();/*EA = 0 global interrupt flag disable   */
   
    e_isr = EN0_ISR;
    P1_1 = !P1_1;/* When it go into interrupt routine, this bit changes 1 and 0 */
    time[0].watchdog_counter = 0;/*  clear to zero to inhibit watchdog */
   
    EN_CMD = EN_PAGE0 + EN_NODMA;   
   
    if ( e_isr & ( ENISR_OVER ) ) {/* Receiver overwrote the ring */
ei_rx_overrun();
}
else if ( e_isr & (ENISR_RX) ) {/* Receive without error */
#ifdef RECEIVE_TEST
ei_receive();
#elif
receive_test();
#endif
EN0_ISR = ENISR_RX;
}
if ( e_isr & ENISR_RX_ERR ) {
/* Receiver with error(CRC, frame aligement,FIFO overflow, receive packet failure  */
//print_int("\n\rReceive error..");
EN0_ISR = ENISR_RX_ERR;
}
if ( e_isr & ( ENISR_TX ) ) {/* Transmit without error */
//print_int("\n\rTx OK!");
EN0_ISR = ENISR_TX;
}
if ( e_isr & ( ENISR_TX_ERR ) ) {/* Transmit with error(collision, FIFO underrun) */
//print_int("\n\rTx error..");
EN0_ISR = ENISR_TX_ERR;     /* ? */
}
if ( e_isr & ( ENISR_COUNTERS ) ) {
//print_int("\n\rCounter error..");
rx_frame_errors  += EN0_COUNTER0;
rx_crc_errors    += EN0_COUNTER1;
rx_missed_errors += EN0_COUNTER2;
EN0_ISR = ENISR_COUNTERS;/*  Counters need emptying               */
}
if ( e_isr & ( ENISR_RDC ) ) {/* Remote DMA complete */
EN0_ISR = ENISR_RDC;
}

EN_CMD = EN_PAGE0 + EN_NODMA + EN_START;
EN0_ISR = 0xff;
//EN0_ISR = ENISR_ALL;
enable();/*EA = 1 global interrupt flag enable    */
}
void TIMEOUT_T0_INT() interrupt 1
{
T0 = !T0;/* T0 pin*/
clock_MS++;/* I don't know yet ??*/
TH0 = time[0].reg[0];/* <-- TIMER0_INTERVAL_HIGH_BYTE  */
TL0 = time[0].reg[1];/* <-- TIMER0_INTERVAL_LOW_BYTE   */
if (time[0].watchdog_counter > WATCHDOG){
time[0].watchdog_counter = 0;
//print_int("S");
//ethernet_init();
//print_int("\n\rWatchDog bowwow~!!");
}
else{
time[0].watchdog_counter += 1;
}
}
发表于 2004-6-1 14:40:41 | 显示全部楼层

[下载]AUDC812 的 tcpip 源代码 - 8019

是aduc812
wdy9927 好像写的题目有问题吧?
 楼主| 发表于 2004-6-1 15:17:10 | 显示全部楼层

[下载]AUDC812 的 tcpip 源代码 - 8019

哈哈, 果然, 这就改过来
发表于 2005-7-16 11:52:11 | 显示全部楼层

[下载]AUDC812 的 tcpip 源代码 - 8019


上当了
发表于 2005-7-29 17:02:56 | 显示全部楼层

[下载]AUDC812 的 tcpip 源代码 - 8019

不错!
发表于 2007-1-17 21:43:50 | 显示全部楼层
:P :P :P
发表于 2007-1-17 21:45:10 | 显示全部楼层
还的在顶一个的!!!!!!!!!!!
发表于 2007-1-18 16:27:11 | 显示全部楼层

回复 #1 wdy9927 的帖子

thanks~~
发表于 2007-3-28 14:09:20 | 显示全部楼层
谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-26 13:34 , Processed in 0.077475 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表