Add lss file for cpp_obj program
[avr_serial_lcd.git] / serial_lcd.h
index d02e589c13c8ba6e7ee3889d4bb67850f8907fd0..9d4439836ca0b847ea223c1ccd707820216ef1a5 100644 (file)
@@ -43,13 +43,13 @@ typedef struct
   unsigned bit6:1;\r
   unsigned bit7:1;\r
 } _io_reg;\r
+#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)_SFR_MEM_ADDR(rg))->bit##bt\r
 \r
 #define FLASH_DECLARE(x) const x __attribute__((progmem))\r
 #define NO_INIT_DECLARE(x) x __attribute__((section (".noinit")))\r
 #define INLINE_FUNC_DECLARE(x) inline x __attribute__((always_inline))\r
 #define PGM_READ_BYTE(x) pgm_read_byte(x)\r
 #define NOP() asm volatile("nop");\r
-#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)_SFR_MEM_ADDR(rg))->bit##bt\r
 #define REGISTER_VAR(V,GNU,IAR) register volatile V asm(GNU)\r
 #define NO_RETURN_FUNC(fn) fn __attribute__((noreturn));        \\r
 fn\r
@@ -104,22 +104,11 @@ typedef __flash unsigned int prog_uint32_t;
 \r
 // Below #include requires ICC v7.16+\r
 #include <iccioavr.h>\r
-typedef struct {\r
-  unsigned bit0:1;\r
-  unsigned bit1:1;\r
-  unsigned bit2:1;\r
-  unsigned bit3:1;\r
-  unsigned bit4:1;\r
-  unsigned bit5:1;\r
-  unsigned bit6:1;\r
-  unsigned bit7:1;\r
-} _io_reg;\r
 \r
 #define NOP() asm("nop");\r
 // ImageCraft does not support inline functions\r
 #define inline\r
 #define INLINE_FUNC_DECLARE(x) x\r
-#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)&rg)->bit##bt\r
 #define NO_RETURN_FUNC(fn) fn\r
 #define MAIN_FUNC() void main(void)\r
 #define MAIN_FUNC_LAST()\r
@@ -136,44 +125,69 @@ typedef struct {
 \r
 // CodeVision Compiler\r
 #elif defined(__CODEVISIONAVR__)\r
+\r
 #include <io.h>\r
+#include <delay.h>\r
+#include <sleep.h>\r
 \r
-typedef struct {\r
-  unsigned bit0:1;\r
-  unsigned bit1:1;\r
-  unsigned bit2:1;\r
-  unsigned bit3:1;\r
-  unsigned bit4:1;\r
-  unsigned bit5:1;\r
-  unsigned bit6:1;\r
-  unsigned bit7:1;\r
-} _io_reg;\r
+#if defined(_CHIP_ATTINY2313_) || defined(_CHIP_ATTINY2313V_)\r
+  #if !defined(WDTCSR)\r
+    #define WDTCSR WDTCR\r
+  #endif\r
+// Below are bit position definitions for the ATtiny2313\r
+  #define UCSZ0   1\r
+  #define UCSZ1   2\r
+  #define TXEN    3\r
+  #define RXEN    4\r
+  #define DOR     3\r
+  #define FE      4\r
+  #define RXC    7\r
+  #define RXCIE   7\r
+  #define PD1     1\r
+  #define PD2     2\r
+  #define PD3     3\r
+  #define PD4     4\r
+  #define PD5     5\r
+  #define PD6     6\r
+  #define PB7     7\r
+  #define CS02    2\r
+  #define WGM01   1\r
+  #define OCIE0A  0\r
+  #define WDP0    0\r
+  #define WDP1    1\r
+  #define WDP2    2\r
+  #define WDE     3\r
+  #define WDCE    4\r
+  #define WDP3    5\r
+  #define WDRF    3\r
+  #define SM0     4\r
+  #define SM1     6\r
+  #define SE      5\r
+  #define USART_RX_vect USART_RXC\r
+  #define TIMER0_COMPA_vect TIM0_COMPA\r
+#endif\r
 \r
 #define FLASH_DECLARE(x) flash x\r
-#define ASM(a) asm(a)\r
-#define NOP() asm("nop");\r
+#define ASM(a) #asm(a)\r
+#define NOP() #asm("nop")\r
+#define cli() #asm("cli")\r
+#define sei() #asm("sei")\r
+#define wdt_reset() #asm("wdr")\r
+#define sleep_cpu() #asm("sleep")\r
+#define REGISTER_VAR(V,GNU,IAR) register V\r
 #define inline\r
 #define INLINE_FUNC_DECLARE(x) x\r
-#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)&rg)->bit##bt\r
 #define NEAR_VAR(x) x\r
 #define NO_RETURN_FUNC(fn) fn\r
-#define MAIN_FUNC(fn) fn\r
 #define MAIN_FUNC() void main(void)\r
 #define MAIN_FUNC_LAST()\r
+#define PGM_READ_BYTE(x) (*(x))\r
 \r
-// 2007/11/29 - ImageCraft states they will support _Pragma() like IAR\r
-// in a "few months". At that point, REGISTER_VAR and NO_INIT_DECLARE can\r
-// be supported. REGISTER_VAR will need to be expanded with 4th variable to\r
-// hold register number for ImageCraft.\r
-// noinit for ImageCraft requires #pragma data:noinit\r
-//#define NO_INIT_DECLARE(x) _Pragma(data:noinit); x; _Pragma(data:data);\r
 #define NO_INIT_DECLARE(x) x\r
-//#define REGISTER_VAR(V,GNUR,IAR,ICC) _Pragma(global_register V ## : ## ICC)\r
-#define REGISTER_VAR(V,GNUR,IAR) V\r
+#define ISR(vec) interrupt [ ## vec ## ] void vec ## _handler(void)\r
 \r
-#define cli() asm("cli")\r
-#define sei() asm("sei")\r
-#define wdt_reset() asm("wdr")\r
+#define _delay_us(us) delay_us(us)\r
+#define _delay_ms(ms) delay_ms(ms)\r
 \r
 #else\r
 #error Unsupported compiler\r