共2条
1/1 1 跳转至页
Mega128 求助:用C语言开发的Mega128源码!
问
小弟初次使用AVR,对此了解甚少,希望各位大虾提供源码供小弟学习。
答 1:
ICC编译器自己就可生成简单的程序,主要包括硬件初始化
答 2:
谢谢谢谢,这个我已经看过了,都是初始化的东东,我想从程序整体看看
答 3:
推荐:《AVR单片机应用设计》几乎8535的每个硬件资源都有例子参考,挺好的
答 4:
哪里可以搞到电子版?
答 5:
用MEGA128实现TCP/IP的例子,很大,这是其中的一点点。#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <mega128.h>
#include <sleep.h>
#include "easyweb.h"
#include "tcpip.h"
#include "web_debug.h"
#include "measure.h"
#pragma regalloc-
unsigned char counter_10ms;
#ifdef WEB_DEBUG
unsigned int counter_10ms_16bit;
#endif
#pragma regalloc+
/*********************************************************************************
; Description : main routine to start the USER-Program
; Input : none
; Output : none
; Indication : none
;*********************************************************************************/
void main(void)
{
unsigned char counter_10ms_delay0=20;
unsigned char counter_10ms_old;
init_atmega128();
#ifdef WEB_DEBUG
web_debug_info();
cs8900_ok=FALSE;
if(easyweb_init())
cs8900_ok=TRUE;
#else
easyweb_init();
#endif
counter_10ms_old = counter_10ms;
LED1_OFF; // PortD.4 LED1
LED2_OFF; // PortD.5 LED2
LED3_OFF; // PortD.6 LED3
LED4_OFF; // PortD.7 LED4
while (1)
{
#ifdef MEASURE_DEBUG
MEASURE_SETTIME(MEA_MAIN_S)
measure_time();
#endif
#asm("wdr"); // Reset Watchdog
#ifndef WEB_DEBUG
easyweb_main();
idle(); // im NON-Debug-Mode evary time with IDLE-Mode
#endif
#ifdef WEB_DEBUG
uart_debug_command();
if(power_mode==POWER_IDLE)
idle();
if(power_mode==POWER_SAVE)
{
if(cs8900_ok==TRUE)
easyweb_main(); // execute with every WakeUP of Timer0
delay_ms(1); // wait until UART0 ready
powersave();
}
if(power_mode==POWER_EXTSTANDBY)
{
if(cs8900_ok==TRUE)
easyweb_main(); // execute with every WakeUP of Timer0
delay_ms(1); // wait until UART0 ready
extended_standby();
}
#endif
if(counter_10ms_old!=counter_10ms)
{
#ifdef WEB_DEBUG
if(cs8900_ok==TRUE)
easyweb_main();
#endif
counter_10ms_old=counter_10ms;
if(counter_10ms_delay0>0)
counter_10ms_delay0--;
else
{
counter_10ms_delay0=40;
led_toggle(LED1);
}
}
#ifdef MEASURE_DEBUG
MEASURE_SETTIME(MEA_MAIN_E)
measure_switch_time_frame();
#endif
}
} 答 6: cls9811,你好!你用的是什么编译环境? 答 7: cls9811大侠,能否有空指点一二?偶一直用硬件实现的,直接调用API。
很想知道具体的实现过程。能否有空指点指点?谢谢
cooperate508@sina.com 答 8: 共同学习用单片机实现TCP/IP是一件比较复杂过程,有很多编程思想和方法以及技巧。我也是刚刚入门。有空大家共同的深入研究一下。不过在做之钱要了解TCP/IP协议的知识。。。。。 答 9: To: cls9811你应该知道EthNut吧?
http://www.ethernet.de 答 10: 知道!并且做了一块板实验了一下,准备改进一下,有些协议不是很完善 答 11: 补充他有ICC和GCC的程序以及电路图,想学的可以去下载,不过电路图是EG格式的。必须重新画电路。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <mega128.h>
#include <sleep.h>
#include "easyweb.h"
#include "tcpip.h"
#include "web_debug.h"
#include "measure.h"
#pragma regalloc-
unsigned char counter_10ms;
#ifdef WEB_DEBUG
unsigned int counter_10ms_16bit;
#endif
#pragma regalloc+
/*********************************************************************************
; Description : main routine to start the USER-Program
; Input : none
; Output : none
; Indication : none
;*********************************************************************************/
void main(void)
{
unsigned char counter_10ms_delay0=20;
unsigned char counter_10ms_old;
init_atmega128();
#ifdef WEB_DEBUG
web_debug_info();
cs8900_ok=FALSE;
if(easyweb_init())
cs8900_ok=TRUE;
#else
easyweb_init();
#endif
counter_10ms_old = counter_10ms;
LED1_OFF; // PortD.4 LED1
LED2_OFF; // PortD.5 LED2
LED3_OFF; // PortD.6 LED3
LED4_OFF; // PortD.7 LED4
while (1)
{
#ifdef MEASURE_DEBUG
MEASURE_SETTIME(MEA_MAIN_S)
measure_time();
#endif
#asm("wdr"); // Reset Watchdog
#ifndef WEB_DEBUG
easyweb_main();
idle(); // im NON-Debug-Mode evary time with IDLE-Mode
#endif
#ifdef WEB_DEBUG
uart_debug_command();
if(power_mode==POWER_IDLE)
idle();
if(power_mode==POWER_SAVE)
{
if(cs8900_ok==TRUE)
easyweb_main(); // execute with every WakeUP of Timer0
delay_ms(1); // wait until UART0 ready
powersave();
}
if(power_mode==POWER_EXTSTANDBY)
{
if(cs8900_ok==TRUE)
easyweb_main(); // execute with every WakeUP of Timer0
delay_ms(1); // wait until UART0 ready
extended_standby();
}
#endif
if(counter_10ms_old!=counter_10ms)
{
#ifdef WEB_DEBUG
if(cs8900_ok==TRUE)
easyweb_main();
#endif
counter_10ms_old=counter_10ms;
if(counter_10ms_delay0>0)
counter_10ms_delay0--;
else
{
counter_10ms_delay0=40;
led_toggle(LED1);
}
}
#ifdef MEASURE_DEBUG
MEASURE_SETTIME(MEA_MAIN_E)
measure_switch_time_frame();
#endif
}
} 答 6: cls9811,你好!你用的是什么编译环境? 答 7: cls9811大侠,能否有空指点一二?偶一直用硬件实现的,直接调用API。
很想知道具体的实现过程。能否有空指点指点?谢谢
cooperate508@sina.com 答 8: 共同学习用单片机实现TCP/IP是一件比较复杂过程,有很多编程思想和方法以及技巧。我也是刚刚入门。有空大家共同的深入研究一下。不过在做之钱要了解TCP/IP协议的知识。。。。。 答 9: To: cls9811你应该知道EthNut吧?
http://www.ethernet.de 答 10: 知道!并且做了一块板实验了一下,准备改进一下,有些协议不是很完善 答 11: 补充他有ICC和GCC的程序以及电路图,想学的可以去下载,不过电路图是EG格式的。必须重新画电路。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |