📄 main._c
字号:
//*01. 本程序的晶体为 7.3728mHz ATMEGA128
//*02. 网卡板UDP的IP: 192.168.1.201
//*03. 网卡板UDP的端口: 9000
//*04. 网卡板MAC: { 0, 0, 'a', 'b', 'c', 'd' }
//*05. 网卡板: 192.168.1.201 9000
//*06. 远程电脑IP: 192.168.1.160
//*07. 远程电脑端口: 9000
//*08. 远程电脑MAC: { 0, 0x10, 0xB5, 0xAC, 0xF1, 0x31 }
//*09. 无网关(GATE)
//*10. 无子网掩码(MASK)
//#include <string.h>
//#include <stdio.h>
#include <iom128v.h>
#include <macros.h>
#include "Delay_7.37M.h"
#include "Lcd7920.h"
#include "Usart1_M128.h"
#include "Rtl8019as_Ethernet_M128.h"
#include "Rtl8019as_M128.h"
//设置网络默认值
unsigned char MY_IP[4] = { 192,168,1,201 };
unsigned char MY_PORT[2] = { 0x23,0x28 }; //端口9000
unsigned char MY_MAC[6] = { 0,0,'a','b','c','d' };
unsigned char REMOTE_IP[4] = { 192,168,1,160};
unsigned char REMOTE_PORT[2] = { 0x23,0x28 }; //端口9000
unsigned char REMOTE_MAC[6] = { 0,0x10,0xB5,0xAC,0xF1,0x31 };
#define set_packet32(d,s) packet[d] = make8(s,3); \
packet[d+1] = make8(s,2); \
packet[d+2] = make8(s,1); \
packet[d+3]= make8(s,0);
#define make8(var,offset) (var >> (offset * 8)) & 0xFF
#define make16(varhigh,varlow) ((varhigh & 0xFF)* 0x100) + (varlow & 0xFF)
#define make32(var1,var2,var3,var4) \
((unsigned long)var1<<24)+((unsigned long)var2<<16)+ \
((unsigned long)var3<<8)+((unsigned long)var4)
unsigned char flg_arp;
void DoWithUart(void); //处理串口接收
void main(void)
{
CLI();
UART1_Init(); //串口初始化要放在8019初始化前面,以免向串口发空乱数据
LCD_Init();
Rtl8019as_Init();
//网络数据初始化 (--改用memcpy)
nodRemote.cIp[0]= REMOTE_IP[0];
nodRemote.cIp[1]= REMOTE_IP[1];
nodRemote.cIp[2]= REMOTE_IP[2];
nodRemote.cIp[3]= REMOTE_IP[3];
nodRemote.cPort[0]=REMOTE_PORT[0];
nodRemote.cPort[1]=REMOTE_PORT[1];
nodRemote.cMac[0]= REMOTE_MAC[0];
nodRemote.cMac[1]= REMOTE_MAC[1];
nodRemote.cMac[2]= REMOTE_MAC[2];
nodRemote.cMac[3]= REMOTE_MAC[3];
nodRemote.cMac[4]= REMOTE_MAC[4];
nodRemote.cMac[5]= REMOTE_MAC[5];
nodLoc.cIp[0]=MY_IP[0];
nodLoc.cIp[1]=MY_IP[1];
nodLoc.cIp[2]=MY_IP[2];
nodLoc.cIp[3]=MY_IP[3];
nodLoc.cPort[0]=MY_PORT[0];
nodLoc.cPort[1]=MY_PORT[1];
nodLoc.cMac[0]= MY_MAC[0];
nodLoc.cMac[1]= MY_MAC[1];
nodLoc.cMac[2]= MY_MAC[2];
nodLoc.cMac[3]= MY_MAC[3];
nodLoc.cMac[4]= MY_MAC[4];
nodLoc.cMac[5]= MY_MAC[5];
flg_arp='f';
//delay_ms(1500); //keep it, wait for arp
LCD_WriteStrAuto("Wan tst 080123B");
SEI();
UART1_Puts("12345abc");
//******************************************************************
//* Look for a packet in the receive buffer ring
//******************************************************************
while(1)
{
//Delay_nms_Preci(1500);
//串口接收处理
if (flg_Received )
{
DoWithUart();
}
/* //start the NIC
write_rtl(CR,0x22);
//wait for a good packet
while(!(PIND & INT0_pin)) //循环, 直到INT0为高电平, 执行后面的程序
{
//if (flg_arp=='f')
//{
// sendarp(); delay_ms(350);
// }
//串口接收处理
if (flg_Received )
{
DoWithUart();
}
}
//read the interrupt status register
read_rtl(ISR);
//if the receive buffer has been overrun
if(byte_read & OVW)
overrun();
//if the receive buffer holds a good packet
if(byte_read & PRX)
get_frame();
//make sure the receive buffer ring is empty
//if BNRY = CURR, the buffer is empty
read_rtl(BNRY);
data_L = byte_read;
write_rtl(CR,0x62);
read_rtl(CURR);
data_H = byte_read;
write_rtl(CR,0x22);
//buffer is not empty.. get next packet
if(data_L != data_H)
get_frame();
//reset the interrupt bits
write_rtl(ISR,0xFF);
*/
}
}
void DoWithUart(void)
{
UART1_Puts("uart in ok");
Delay_nus(5);
//UdpSendoutStr("12345",5);
Delay_nus(5);
flg_Received=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -