* device/include/pic16/pic18f25j10.h,
[fw/sdcc] / device / lib / pic16 / libio / adc / adcsetch.c
index 5a98cb0c920dd627521df0b00fa251a60ab550f9..f61200a1b6c042a4dc41b58bdd4e9fe96f9612fd 100644 (file)
@@ -4,11 +4,6 @@
  *
  * written by Vangelis Rokas, 2004 <vrokas AT otenet.gr>
  *
- * Devices implemented:
- *     PIC18F[24][45][28]
- *     PIC18F2455-style
- *
- *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License
  * as published by the Free Software Foundation; either version 2
  * 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.
- *
- * $Id$
  */
 
 #include <pic18fregs.h>
 #include <adc.h>
 
 
-void adc_setchannel(unsigned char channel) __naked
+void adc_setchannel(unsigned char channel)
 {
-#if 0
-#if defined(__SDCC_ADC_STYLE2455) || defined(__SDCC_ADC_STYLE97J60)
-  ADCON0 &= ~(0xf << 2);
-  ADCON0 |= channel << 2;
-#else /* all other devices */
-  ADCON0 &= ~(0x7 << 3);
-  ADCON0 |= channel << 3;
-#endif
-#else
-  (void)channel;
-
-  __asm
-#if defined(__SDCC_ADC_STYLE2455) || defined(__SDCC_ADC_STYLE97J60)
-    movlw       0xc3
-#else /* all other devices */
-    movlw       0xc7
-#endif
-    andwf       _ADCON0, f
-    
-    movlw       0x01
-    movf        _PLUSW1, w
-#if defined(__SDCC_ADC_STYLE2455) || defined(__SDCC_ADC_STYLE97J60)
-#else /* all other devices */
-    rlcf        _WREG, w
+#if defined(__SDCC_ADC_STYLE242)
+  ADCON0 = (ADCON0 & ~(0x07 << 3)) | ((channel & 0x07) << 3);
+#elif defined(__SDCC_ADC_STYLE1220)
+  ADCON0 = (ADCON0 & ~(0x07 << 2)) | ((channel & 0x07) << 2);
+#elif defined(__SDCC_ADC_STYLE2220)
+  ADCON0 = (ADCON0 & ~(0x0f << 2)) | ((channel & 0x0f) << 2);
+#else /* unsupported ADC style */
+#error Unsupported ADC style.
 #endif
-    rlcf        _WREG, w
-    rlcf        _WREG, w
-
-    iorwf       _ADCON0, f
-
-    return
-  __endasm;
-#endif    
 }