⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ct-bot.h

📁 单片机上的java虚拟机 用winavr 编译
💻 H
字号:
////  c't-Bot-NanoVM, a tiny java VM for the c't-Bot////  Copyright (C) 2007 by Nils Springob <nils@nicai-systems.de>//  Based on work by Benjamin Benz(c't-Bot) and Till Harbaum(NanoVM)////  This program is free software; you can redistribute it and/or modify//  it under the terms of the GNU General Public License as published by//  the Free Software Foundation; either version 2 of the License, or//  (at your option) any later version.////  This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU General Public License for more details.////  You should have received a copy of the GNU General Public License//  along with this program; if not, write to the Free Software//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA/*! @file 	ct-Bot.h * @brief 	Demo-Hauptprogramm * @author 	Benjamin Benz (bbe@heise.de) * @author      modified by Nils Springob to work with nanoVM * @date 	26.12.05*/#ifndef CT_BOT_H_DEF#define CT_BOT_H_DEF#include "config.h"#define MCU/************************************************************* Module switches, to make code smaller if features are not needed************************************************************///#define LOG_CTSIM_AVAILABLE		/*!< Logging ueber das ct-Sim (PC und MCU) *///#define LOG_DISPLAY_AVAILABLE		/*!< Logging ueber das LCD-Display (PC und MCU) *///#define LOG_UART_AVAILABLE			/*!< Logging ueber UART (NUR für MCU) *///#define LOG_STDOUT_AVAILABLE 		/*!< Logging auf die Konsole (NUR für PC) *///#define LED_AVAILABLE		/*!< LEDs for local control */#define IR_AVAILABLE		/*!< Infrared Remote Control */#define RC5_AVAILABLE		/*!< Key-Mapping for IR-RC	 *///#define BOT_2_PC_AVAILABLE	/*!< Soll der Bot mit dem PC kommunmizieren? *///#define TIME_AVAILABLE		/*!< Gibt es eine Systemzeit im s und ms? */#define DISPLAY_AVAILABLE	/*!< Display for local control *///#define DISPLAY_REMOTE_AVAILABLE /*!< Sende LCD Anzeigedaten an den Simulator *///#define DISPLAY_SCREENS_AVAILABLE	/*!< Ermoeglicht vier verschiedene Screen *///#define DISPLAY_SCREEN_RESETINFO	/*!< Zeigt auf Screen 4 Informationen ueber Resets an *///#define DISPLAY_ODOMETRIC_INFO 	/*!< Zeigt auf Screen 4 Positions- und Geschwindigkeitsdaten *///#define DISPLAY_REGELUNG_AVAILABLE 3 /*!< Zeigt Reglerdaten auf Screen 4, wenn SPEED_CONTROL_AVAILABLE gesetzt ist*///#define DISPLAY_BEHAVIOUR_AVAILABLE  /*!< Anzeige der Verhalten im Display Screen 3, ersetzt Counteranzeige *///#define MEASURE_MOUSE_AVAILABLE			/*!< Geschwindigkeiten werden aus den Maussensordaten berechnet *///#define MEASURE_COUPLED_AVAILABLE		/*!< Geschwindigkeiten werden aus Maus- und Encoderwerten ermittelt und gekoppelt *///#define WELCOME_AVAILABLE	/*!< kleiner Willkommensgruss */#define ADC_AVAILABLE		/*!< A/D-Converter */#define MAUS_AVAILABLE		/*!< Maus Sensor */#define ENA_AVAILABLE		/*!< Enable-Leitungen */#define SHIFT_AVAILABLE		/*!< Shift Register *///#define TEST_AVAILABLE_ANALOG	/*!< Sollen die LEDs die analoge Sensorwerte anzeigen *///#define TEST_AVAILABLE_DIGITAL	/*!< Sollen die LEDs die digitale Sensorwerte anzeigen *///#define TEST_AVAILABLE_MOTOR	/*!< Sollen die Motoren ein wenig drehen *///#define TEST_AVAILABLE_COUNTER /*!< Gibt einen Endlos-Counter auf Screen 3 aus und aktiviert Screen 3 *///#define DOXYGEN		/*!< Nur zum Erzeugen der Doku, wenn dieser schalter an ist, jammert der gcc!!! *///#define BEHAVIOUR_AVAILABLE /*!< Nur wenn dieser Parameter gesetzt ist, exisitiert das Verhaltenssystem *///#define MAP_AVAILABLE /*!< Aktiviere die Kartographie *///#define SPEED_CONTROL_AVAILABLE /*!< Aktiviert die Motorregelung *///#define SRF10_AVAILABLE		/*!< Ultraschallsensor SRF10 vorhanden *//************************************************************* Some Dependencies!!!************************************************************/#ifdef DOXYGEN	#define PC			/*!< Beim generieren der Doku alles anschalten */	#define MCU		/*!< Beim generieren der Doku alles anschalten */	#define TEST_AVAILABLE_MOTOR	/*!< Beim generieren der Doku alles anschalten */#endif#ifndef DISPLAY_AVAILABLE	#undef WELCOME_AVAILABLE   #undef DISPLAY_REMOTE_AVAILABLE   #undef DISPLAY_SCREENS_AVAILABLE   #undef DISPLAY_SCREEN_RESETINFO#endif#ifndef IR_AVAILABLE	#undef RC5_AVAILABLE#endif#ifndef MAUS_AVAILABLE	#undef MEASURE_MOUSE_AVAILABLE	#undef MEASURE_COUPLED_AVAILABLE#endif#ifdef MCU	#ifdef LOG_CTSIM_AVAILABLE		#define BOT_2_PC_AVAILABLE	#endif	#ifdef BOT_2_PC_AVAILABLE		#define UART_AVAILABLE	/*!< Serial Communication */		#define COMMAND_AVAILABLE	/*!< High-Level Communication */	#endif//	#undef MAP_AVAILABLE#endif#ifdef TEST_AVAILABLE_MOTOR	#define TEST_AVAILABLE			/*!< brauchen wir den Testkrams */	#define TEST_AVAILABLE_DIGITAL /*!< Sollen die LEDs die digitale Sensorwerte anzeigen */#endif#ifdef TEST_AVAILABLE_DIGITAL	#define TEST_AVAILABLE			/*!< brauchen wir den Testkrams */	#undef TEST_AVAILABLE_ANALOG#endif#ifdef TEST_AVAILABLE_ANALOG	#define TEST_AVAILABLE			/*!< brauchen wir den Testkrams */#endif#ifdef TEST_AVAILABLE_COUNTER	#define TEST_AVAILABLE			/*!< brauchen wir den Testkrams */	#define DISPLAY_SCREENS_AVAILABLE	#define DISPLAY_SCREEN_RESETINFO#endif#ifdef DISPLAY_ODOMETRIC_INFO	#undef DISPLAY_SCREEN_RESETINFO		/*!< Wenn Odometrieinfos, dann keine Resetinfos */#endif#ifndef SPEED_CONTROL_AVAILABLE	#undef DISPLAY_REGELUNG_AVAILABLE#endif#ifdef LOG_UART_AVAILABLE	#define LOG_AVAILABLE#endif #ifdef LOG_CTSIM_AVAILABLE	#define LOG_AVAILABLE#endif #ifdef LOG_DISPLAY_AVAILABLE	#define LOG_AVAILABLE#endif #ifdef LOG_STDOUT_AVAILABLE	#define LOG_AVAILABLE#endif #ifdef LOG_AVAILABLE	#ifdef PC		/* Auf dem PC gibts kein Logging ueber UART. */		#undef LOG_UART_AVAILABLE	#endif		#ifdef MCU		/* Mit Bot zu PC Kommunikation auf dem MCU gibts kein Logging ueber UART.		 * Ohne gibts keine Kommunikation ueber ct-Sim.		 */		#undef LOG_STDOUT_AVAILABLE		/*!< MCU hat kein STDOUT */		#ifdef BOT_2_PC_AVAILABLE			#undef LOG_UART_AVAILABLE		#else			#undef LOG_CTSIM_AVAILABLE		#endif	#endif		/* Ohne Display gibts auch keine Ausgaben auf diesem. */	#ifndef DISPLAY_AVAILABLE		#undef LOG_DISPLAY_AVAILABLE	#endif		/* Logging aufs Display ist nur moeglich, wenn mehrere Screens	 * unterstuetzt werden.	 */	#ifndef DISPLAY_SCREENS_AVAILABLE		#undef LOG_DISPLAY_AVAILABLE	#endif		/* Es kann immer nur ueber eine Schnittstelle geloggt werden. */		#ifdef LOG_UART_AVAILABLE		#define UART_AVAILABLE		#undef LOG_CTSIM_AVAILABLE		#undef LOG_DISPLAY_AVAILABLE		#undef LOG_STDOUT_AVAILABLE	#endif		#ifdef LOG_CTSIM_AVAILABLE		#undef LOG_DISPLAY_AVAILABLE		#undef LOG_STDOUT_AVAILABLE	#endif		#ifdef LOG_DISPLAY_AVAILABLE		#undef LOG_STDOUT_AVAILABLE	#endif	// Wenn keine sinnvolle Log-Option mehr uebrig, loggen wir auch nicht	#ifndef LOG_CTSIM_AVAILABLE		#ifndef LOG_DISPLAY_AVAILABLE			#ifndef LOG_UART_AVAILABLE				#ifndef LOG_STDOUT_AVAILABLE					#undef LOG_AVAILABLE				#endif			#endif		#endif	#endif#endif#ifdef SRF10_AVAILABLE	#define TWI_AVAILABLE				/*!< TWI-Schnittstelle (I2C) nutzen */#endif//#define F_CPU 16000000L    /*!< Crystal frequency in Hz *///#define XTAL F_CPU	   /*!< Crystal frequency in Hz */#define LINE_FEED "\n\r"	/*!< Windows und Linux unterscheiden beim Linefeed. Windows erwarten \n\r, Linux nur \n */#include <avr/interrupt.h>#ifdef SIGNAL	#define NEW_AVR_LIB#endif#endif

⌨️ 快捷键说明

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