共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网站征稿正在进行时,欢迎踊跃投稿啦 |
打赏帖 | |
---|---|
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 | |
【换取手持示波器】树莓派PICO逻辑分析仪被打赏16分 |