/******************************************* asm.h 2007.04.30 by Masaki Shinomiya for SDCC PIC16 port ********************************************/ #ifndef _PIC14_ASM_H #define _PIC14_ASM_H /*** usefull assembler codes ***/ #define Nop() do { _asm nop _endasm; } while(0) #define ClrWdt() do { _asm clrwdt _endasm; } while(0) #define Sleep() do { _asm sleep _endasm; } while(0) #define EEPROM_WRITE() do { \ EECON2=0x00; /* Get in right bank */ \ __asm MOVLW 0x55 __endasm; \ __asm MOVWF EECON2 __endasm; \ __asm MOVLW 0xaa __endasm; \ __asm MOVWF EECON2 __endasm; \ __asm BSF EECON1,1; __endasm; \ } while(0) /*** word <--> byte ******************/ struct hl { unsigned char low; unsigned char high; }; union uword { struct hl bytes; unsigned short word; }; static union uword work; /*** word <--> byte usage unsigned char lowerbyte, higerbyte; unsigned int value; work.bytes.low = lowerbyte; work.bytes.high = higherbyte; value = work.word; *****************************************/ #endif // _PIC14_ASM_H