ON 20020801@12:21:28 PM at page: http://www.piclist.org/techref/methods.htm JMN-EFP-786 James Newton added 'change ' ON 20020801@12:21:46 PM at page: http://www.piclist.org/techref/methods.htm JMN-EFP-786 James Newton added 'change ' ON 20020803@4:24:19 PM at page: http://techref.massmind.org/techref/quotes.htm JMN-EFP-786 James Newton added 'Says Mirrors, like guns, are not cruel... people who improperly use mirrors are cruel. You don't really see yourself until you look from the inside out... feel your heart beat, concentrate until you can feel each arm and leg from the bone out through the muscle and fat to the inner layers of the skin. What feels ugly in there? Go fix that first. Eat better food, drink more water, go for walks, see your doctor, dentist, nutritional advisor, join a hikeing group. Then start on the mind and liposuction all the bad thoughts and hurtful memories. Go to AA meetings, get in therapy, make better friends. THEN worry about what the outside looks like. These instructions should be part of a course required before purchase of a mirror. Like a gun safety class or a drivers license. ' ON 20020806@5:59:08 AM at page: http://www.piclist.org/techref/index.htm perhammer-spray- added 'Questions: Hi! Has anyone tried to drive a TRULY LCD Module (122x32 with two SED1520) with a PIC16F877? If you have please give me some help. It will not work. Is there something that I shuold think of.......HELP!!!!! THANKS!' ON 20020806@8:29:06 AM at page: http://www.sxlist.com/techref/quotes.htm JMN-EFP-786 James Newton added 'Says "Of all the enemies to public liberty war is, perhaps, the most to be dreaded because it comprises and develops the germ of every other. War is the parent of armies; from these proceed debts and taxes. And armies, and debts, and taxes are the known instruments for bringing the many under the domination of the few. In war, too, the discretionary power of the Executive is extended. Its influence in dealing out offices, honors, and emoluments is multiplied; and all the means of seducing the minds, are added to those of subduing the force of the people. The same malignant aspect in republicanism may be traced in the inequality of fortunes, and the opportunities of fraud, growing out of a state of war...and in the degeneracy of manners and morals, engendered by both. No nation could preserve its freedom in the midst of continual warfare." --James Madison, April 20, 1795 ' ON 20020809@9:03:04 PM at page: http://www.piclist.com/techref/index.htm YVS-hotmail-437 Yenni Veronica Setiawan added 'Code: This is listing program for AN828 (microchip's Appnote) 1. wdt.asm ;********************************************** #include list P=PIC16F84 errorlevel -302 ;********************************************** ;Configuration bit Code protect off,WDT on, ;Poweron Timer on, XT oscillator __CONFIG _CP_OFF & _XT_OSC & _WDT_ON & _PWRTE_ON ;********************************************** STARTUP CODE 0x00 goto STart INTERRUPT CODE 0x04 goto IntSrv ;********************************************** #include PROGRAM CODE STart banksel WDTCOUNT_HI btfsc CheckCalH ; Cek apakah program pada High calibration? call CalForHi btfsc CheckCalL ; Cek apakah program pada Low calibration? call CalForLow ;********************************************** movf WDTCOUNT_HI,w movwf TEMPH movf WDTCOUNT_LO,w movwf TEMPL call InitData ; inisialisasi variabel call InPort ; konfigurasi PORT B REFRESH btfss STATUS,NOT_TO ; 1. Jika reset oleh Power-on Reset, goto MeasureTemp ; maka cek untuk WDT count yang baru ; 2. Jika reset oleh WDT Reset. ; maka hitung temperatur dengan WDT count yang baru btfsc SET ; cek tombol SET goto WDTclr btfss SET ; cek apakah tombol sudah dilepas? goto $-1 call CalibrateSystem ;***loop untuk memperoleh WDTcount************* WDTclr call InitWDT ; menentukan prescaler untuk WDT di OPTION_REG clrf WDTCOUNT_HI clrf WDTCOUNT_LO clrwdt WDTLoop incfsz WDTCOUNT_LO,f ; menambah satu lower 8-bit dari WDT count goto CalWDT incf WDTCOUNT_HI,f ; menambah satu upper 8-bit dari WDT count CalWDT goto WDTLoop ;********************************************** MeasureTemp call EEDefault ; Membaca nilai HI & LO temperatur kalibrasi ; dari Eeprom untuk menghitung temperatur saat ini call TempCalc ; Menghitung temperatur dalam celcius call InitTmr0 ; Menginisialisasi TMR0 sebagai interrupt CheckSec clrwdt banksel Count0 btfsc SecBit goto OverSec btfsc TEMP ; tombol TEMP ditekan goto CheckSec btfss TEMP goto $-1 call DispTemp ; display temperatur goto CheckSec OverSec bcf SecBit banksel INTCON bcf INTCON,T0IE ; disable interrupt oleh timer bsf INTCON,RBIE ; enable interrupt oleh PORT B call InPort ; inisialisasi PortB <4:8> sebagai input Slip sleep ; enable scan key agar bangun dari SLEEP nop ; jika tombol ditekan goto WDTclr ; Meng-update WDT count untuk temperatur baru ;********************************************** ;Rutin interrupt IntSrv clrwdt movwf W_TEMP ; menyimpan register W dan swapf STATUS,W ; STATUS register movwf STATUS_TEMP btfsc INTCON,RBIF ; cek apakah interrupt yang terjadi oleh PortB? goto KeyProc btfss INTCON,T0IF goto RetStatus bcf INTCON,T0IF ; interrupt terjadi oleh TMR0 decfsz Count0,f ; untuk delay goto RetStatus decfsz Count1,f ; untuk delay goto RetStatus bsf SecBit goto RetStatus KeyProc bcf INTCON,RBIF ; clear flag bit dari 'RB port change interrupt' call ScanKey ; Membaca portB untuk mengakhiri mismatch condition RetStatus swapf STATUS_TEMP,W ; mengeluarkan kembali register w dan movf STATUS,w ; STATUS REGISTER swapf W_TEMP,f swapf W_TEMP,w retfie ;********************************************** ;Rutin untuk menampilkan temperatur pada display ;setelah tombol TEMP ditekan DispTemp clrwdt call OutPort ; inisialisasi PortB sebagai Output movf TempC,w ; temperatur saat ini call DisplayDigit ; display temperatur pada 7-segment return ;********************************************** ;Rutin ini untuk dispaly pada 7-segment DisplayDigit clrwdt call HexToBcd movf LSD,w call TABLE movwf PORTB bcf DIGIT0 ; LSB call IntDelay bsf DIGIT0 movf MSD,w call TABLE movwf PORTB bcf DIGIT1 ; MSB call IntDelay bsf DIGIT1 movf USD,w ; display untuk tanda negatif andlw 0xff btfsc STATUS,Z goto NoDispU movf USD,w call TABLE movwf PORTB bcf DIGIT2 call IntDelay bsf DIGIT2 NoDispU btfss Neg,0 ; jika nilainya bukan negatif maka return goto LastClr NegSign movlw B'01111111' ; menampilkan tanda negatif movwf PORTB ; bcf DIGIT2 call IntDelay LastClr bsf DIGIT0 bsf DIGIT1 bsf DIGIT2 return ;********************************************** ;Rutin untuk mengubah bil.Hex menjadi BCD HexToBcd clrwdt clrf USD clrf MSD movwf LSD BCD1 movlw .10 subwf LSD,W btfss STATUS,C goto OVER_1 movwf LSD incf MSD,f goto BCD1 OVER_1 movlw .10 subwf MSD,W btfss STATUS,C goto OVER movwf MSD incf USD,f goto OVER_1 OVER retlw 0 ;********************************************** ;Pola 8-bit untuk display digit pada 7-segment TABLE addwf PCL,f retlw B'10000001' ; 0 retlw B'11110011' ; 1 retlw B'01001001' ; 2 retlw B'01100001' ; 3 retlw B'00110011' ; 4 retlw B'00100101' ; 5 retlw B'00000101' ; 6 retlw B'11110001' ; 7 retlw B'00000001' ; 8 retlw B'00110001' ; 9 ;********************************************** ;Menulis Default = 1 di lokasi 0x03 EEPROM SetDefault clrwdt banksel Default bsf Default,0 movlw 0x03 banksel EEADR movwf EEADR movf Default,w banksel EEDATA movwf EEDATA call WriteEeprom return ;********************************************** ;Menulis Default = 0 di lokasi 0x03 EEPROM ClrDefault clrwdt banksel Default clrf Default movlw 0x03 banksel EEADR movwf EEADR movf Default,w banksel EEDATA movwf EEDATA call WriteEeprom return ;********************************************** ;Rutin untuk meng-set nilai HI dan LO dari temperatur ;untuk kalibrasi sistem CalibrateSystem CalibrationPt clrwdt banksel Count1 movlw 0x03 movwf Count1 movlw 0x97 movwf Count0 call InitTmr0 TimeOut btfsc SecBit ; selesai?? return call InPort btfss TEMP ; jika TEMP ditekan, Default Flag diclear goto DoTempKey ;*display 'HI' dan temperatur HI bergantian**** movlw 0x40 ; time delay untuk menampilkan 'HI' pada display movwf C1 disp1 call OutPort movlw 0xf3 ; display 'I' movwf PORTB bcf DIGIT0 call IntDelay ; delay bsf DIGIT0 movlw 0x13 ; display 'H' movwf PORTB bcf DIGIT1 call IntDelay bsf DIGIT1 decfsz C1,f goto disp1 clrwdt call Delay_1 Disp_hi movlw 0x30 ; display nilai Hi untuk beberapa delay movwf C2 DisLimit movf TEMP_HI,w call DisplayDigit decfsz C2,f goto DisLimit clrwdt call Delay_1 call InPort btfss UP goto IncDigit btfss DOWN goto DecDigit btfss SET goto HI_out goto TimeOut IncDigit btfss UP goto $-1 clrwdt movf TEMP_HI,w sublw 0x32 btfss STATUS,Z incf TEMP_HI,f call Delay1 bsf Default,0 goto Disp_hi DecDigit btfss DOWN goto $-1 clrwdt movf TEMP_HI,w iorlw 00 btfss STATUS,Z decf TEMP_HI,f call Delay1 bsf Default,0 goto Disp_hi HI_out bsf CheckCalH return CalForHi bcf CheckCalH clrwdt movf WDTCOUNT_HI,w movwf WDT_H1 movf WDTCOUNT_LO,w movwf WDT_H0 ;*********menulis ke EEPROM******************** clrf EEADR movlw TEMP_HI movwf FSR movlw 0x03 movwf C3 LOOP1 clrwdt movf INDF,w movwf EEDATA call WriteEeprom incf EEADR,f incf FSR,f decfsz C3,f goto LOOP1 ;*****untuk kalibrasi LO*********************** clrwdt movlw 0x11 movwf Count1 movlw 0xF3 movwf Count0 call InitTmr0 TMOutL btfsc SecBit ; selesai?? return ; ya call InPort btfss TEMP ; jika TEMP ditekan, Default Flag diclear goto DoTempKey lo_set movlw 0x40 movwf C1 disp1_l clrwdt call OutPort movlw 0x81 movwf PORTB bcf DIGIT0 call IntDelay bsf DIGIT0 movlw 0x8f movwf PORTB bcf DIGIT1 call IntDelay bsf DIGIT1 decfsz C1,f goto disp1_l clrwdt call Delay_1 DISP_lo clrwdt call OutPort movlw 0x30 movwf C1 Dis_lo movf TEMP_LO,w call DisplayDigit clrwdt decfsz C1,f goto Dis_lo call Delay_1 clrwdt call InPort clrwdt btfss UP goto inc_digit btfss DOWN goto dec_digit btfss SET goto LO_out goto TMOutL inc_digit btfss UP goto $-1 clrwdt movf TEMP_LO,w sublw 0x32 btfss STATUS,Z incf TEMP_LO,f call Delay1 bsf Default,0 goto DISP_lo dec_digit btfss DOWN goto $-1 clrwdt movf TEMP_LO,w iorlw 00 btfss STATUS,Z decf TEMP_LO,f call Delay1 bsf Default,0 goto DISP_lo LO_out bsf CheckCalL return CalForLow bcf CheckCalL clrwdt movf WDTCOUNT_HI,w movwf WDT_L1 movf WDTCOUNT_LO,w movwf WDT_L0 clrwdt ;******menulis ke EEPROM*********************** movlw 0x03 movwf EEADR movlw 0x04 movwf C4 movlw Default movwf FSR LOOP_1 clrwdt movf INDF,w movwf EEDATA call WriteEeprom incf EEADR,f incf FSR,f decfsz C4,f goto LOOP_1 ;********************************************** call SetDefault return DoTempKey btfss TEMP goto $-1 call ClrDefault return ;********************************************** END ;********************************************** ; eeprom.asm #include errorlevel -302 ;********************************************** UDATA TEMP_HI res 1 ;00 WDT_H0 res 1 ;01 WDT_H1 res 1 ;02 Default res 1 ;03 TEMP_LO res 1 ;04 WDT_L0 res 1 ;05 WDT_L1 res 1 ;06 global ReadEeprom global WriteEeprom global DefaultValue global EEDefault global TEMP_HI,WDT_H0,WDT_H1 global Default,TEMP_LO,WDT_L0,WDT_L1 CODE ;********************************************** ;sekuens untuk membaca eeprom ReadEeprom banksel EECON1 bsf EECON1,RD movf EEDATA,w return ;********************************************** ;rutin untuk menulis data ke suatu lokasi dari alamat eeprom WriteEeprom banksel INTCON bcf INTCON,GIE banksel EECON1 bsf EECON1,WREN movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1,WR banksel INTCON bsf INTCON,GIE banksel EECON1 CheckIF:btfss EECON1,EEIF goto CheckIF bcf EECON1,EEIF return ;********************************************** ;baca data dari alamat 00h s/d 08h pada eeprom ;dan menyimpannya di register pada lokasi di daerah GPR EEDefault clrwdt banksel TEMP_HI movlw TEMP_HI movwf FSR banksel EEADR clrf EEADR read: call ReadEeprom movwf INDF banksel EEADR incf EEADR,f incf FSR,f btfss EEADR,3 goto read banksel Default btfsc Default,0 return DefaultValue movlw 0x55 movwf TEMP_HI movlw 0x0F movwf WDT_H0 movlw 0x5A movwf WDT_H1 movlw 0x19 movwf TEMP_LO movlw 0x65 movwf WDT_L0 movlw 0x1E movwf WDT_L1 return ;********************************************** end ;********************************************** ; init.asm ;********************************************** #include ;********************************************** global InitData global InitWDT global InPort global OutPort global ScanKey global InitTmr0 global InitInt global IntDelay global Delay1 global Delay_1 global Delay20 global Switch,Switch1 extern Count0,Count1 extern Neg,TEMPFlag UDATA Switch res 1 Switch1 res 1 DB1 res 1 DB2 res 1 DB3 res 1 CODE ;********************************************** ;inisialisasi prescaler ke WDT InitWDT banksel OPTION_REG movlw 0x09 movwf OPTION_REG bcf STATUS,RP0 return ;********************************************** ;inisialisasi interrupt InitInt clrwdt BANKSEL OPTION_REG movlw 0x09 movwf OPTION_REG BANKSEL TMR0 clrf TMR0 BANKSEL INTCON clrf INTCON bsf INTCON,T0IE bsf INTCON,GIE return ;********************************************** InPort clrwdt banksel Switch movlw 0xf0 movwf Switch1 movwf Switch BANKSEL PORTA movlw 0xE7 movwf PORTA movlw 0xFF movwf PORTB BANKSEL TRISB movlw 0xf0 movwf TRISB BANKSEL PORTB bcf PORTB,0 return ;********************************************** OutPort clrwdt banksel TRISA clrf TRISA clrf TRISB banksel PORTA movlw 0xE7 movwf PORTA movlw 0xFF movwf PORTB return ;********************************************** InitData clrwdt banksel Count0 movlw 26h movwf Count0 bsf Count1,0 clrf Neg movlw 0xf0 movwf Switch clrf TEMPFlag return ;********************************************** InitTmr0 clrwdt banksel OPTION_REG movlw 07 movwf OPTION_REG BANKSEL TMR0 clrf TMR0 clrf INTCON bsf INTCON,GIE bsf INTCON,T0IE return ;********************************************** ;memeriksa jika ada switch yang ditekan, ;jika ada maka nilainya disimpan di register Switch dan Switch1 ScanKey clrwdt banksel Switch movlw 0xf0 movwf Switch andwf PORTB,w movwf Switch sublw 0xf0 btfsc STATUS,Z return CHANGE movf Switch,w movwf Switch1 return ;********************************************** IntDelay clrwdt movlw 0x10 movwf DB1 movwf DB3 DELY2 clrwdt decfsz DB3,F goto DELY2 movlw 0xff movwf DB2 decfsz DB1,f goto DELY2 return ;********************************************** Delay1 clrwdt movlw 0x60 movwf DB2 DLY1 decfsz DB2,F goto DLY1 return ;********************************************** Delay_1 clrwdt movlw 0x60 movwf DB1 movwf DB3 DLY2 clrwdt decfsz DB3,F goto DLY2 movlw 0xff movwf DB2 decfsz DB1,f goto DLY2 return ;********************************************** Delay20 clrwdt movlw .20 movwf DB1 DLAY1 clrwdt clrf DB2 decfsz DB1,f goto DLAY2 retlw 0 DLAY2 clrwdt decfsz DB2,f goto DLAY1 return ;********************************************** end ;********************************************** ;calc.asm #include ;********************************************** UDATA ;untuk rutin pembagian AARGB1 res 1 AARGB0 res 1 AARGB5 res 1 BARGB0 res 1 BARGB1 res 1 REMB1 res 1 REMB0 res 1 LOOPCOUNT res 1 ;untuk rutin penghitungan SLOP_LO res 1 SLOP_HI res 1 TEMP res 1 TempC res 1 ;temperatur akhir dalam Celcius TempP res 1 Neg res 1 ;harga negatif global TempCalc global FXD1616U global TempC,TempP,Neg extern WDTCOUNT_HI,WDTCOUNT_LO,TEMP_HI,TEMP_LO extern WDT_H1,WDT_H0,WDT_L1,WDT_L0 CODE ;********************************************** ; Perhitungan untuk temperatur (Celcius) ; input: ; WDT timeout count(16-bit) -WDTCOUNT_HI,WDTCOUNT_LO ; Temperatur kalibrasi high -TEMP_HI ; Temperatur kalibrasi low -TEMP_LO ; WDTCount(16-bit): ; untuk Temp high -WDT_H1,WDT_H0 ; untuk Temp low -WDT_L1,WDT_L0 ; Temperatur akhir -TempC ; jika negatif -Neg = 01 ; jika positif -Neg = 00 ;********************************************** TempCalc ; perhitungan slope untuk 2 temperatur kaibrasi ; M = (y2-y1)/(x2-x1) ; x1 ->TEMP_LO ->0x04 ; x2 ->TEMP_HI ->0x00 ; y1 ->WDT_L0 ->0x05 ; ->WDT_L1 ->0x06 ; y2 ->WDT_H0 ->0x02 ; ->WDT_H1 ->0x01 ; x1 = x2 - [(y2-y1)/M] NEW_VALUE clrwdt movf TEMP_LO,w subwf TEMP_HI,w ; [(TEMP_HI) - (TEMP_LO)] movwf BARGB1 clrf BARGB0 ; [ - ] movf WDT_L0,w subwf WDT_H0,w movwf AARGB1 ;lower 8-bit dari hasil pengurangan btfss STATUS,C incf WDT_L1,f movf WDT_L1,w subwf WDT_H1,w high_val movwf AARGB0 ;upper 8-bit dari hasil pengurangan call FXD1616U movf AARGB1,w movwf BARGB1 movwf SLOP_LO ;lower 8-bit dari slope movf AARGB0,w movwf BARGB0 ;upper 8-bit dari slope movwf SLOP_HI ;********************************************** ; x1 = x2 - [(y2-y1)/M] ; y2 = ; y1 = ; x2 = TEMP_HI ; x1 = temperatur yang diukur ;********************************************** movf WDTCOUNT_HI,w subwf WDT_H1,w btfss STATUS,C goto CHANGEseq movf WDTCOUNT_LO,w subwf WDT_H0,w movwf AARGB1 ;low 8-bit btfss STATUS,C incf WDTCOUNT_HI,f movf WDTCOUNT_HI,w subwf WDT_H1,w high_val1 movwf AARGB0 ;upper 8-bit ; / = ; AARG,REM <-- AARG / BARG call FXD1616U ;pembagian 16 bit movf AARGB1,w movwf TEMP ;********************************************** ; x1 = x2 - [(y2-y1)/SLOPE] ; x2 = TEMP_HI btfsc Neg,0 goto ADDvalue subwf TEMP_HI,w btfss STATUS,C goto ChangeSign PossSign movwf TempC ;temperatur akhir dalam Celcius movwf TempP bcf Neg,0 return ChangeSign movf TEMP_HI,w subwf TEMP,w movwf TempC movwf TempP bsf Neg,0 bsf Neg,2 return CHANGEseq bsf Neg,0 movf WDT_H0,w subwf WDTCOUNT_LO,w movwf AARGB1 movf WDT_H1,w btfss STATUS,C incf WDT_H1,w subwf WDTCOUNT_HI,w goto high_val1 ADDvalue addwf TEMP_HI,w goto PossSign ;********************************************** ; Rutin untuk pembagian 16/16 UDIV1616L macro MOVLW D'16' MOVWF LOOPCOUNT LOOPU1616 RLF AARGB0,W RLF REMB1,F RLF REMB0,F MOVF BARGB1,W SUBWF REMB1,F MOVF BARGB0,W BTFSS STATUS,C INCFSZ BARGB0,W SUBWF REMB0,F BTFSC STATUS,C GOTO UOK66LL MOVF BARGB1,W ADDWF REMB1,F MOVF BARGB0,W BTFSC STATUS,C INCFSZ BARGB0,W ADDWF REMB0,F BCF STATUS,C UOK66LL RLF AARGB1,F RLF AARGB0,F DECFSZ LOOPCOUNT,F GOTO LOOPU1616 endm ;********************************************** FXD1616U CLRF REMB0 CLRF REMB1 UDIV1616L RETLW 0x00 ;********************************************** end ;***************************************************************************** ; data.h ;***************************************************************************** ; PORT B 1 s/d 7 --> output untuk 7-segment ; PORT A 0 s/d 2 --> output #define DIGIT0 PORTA,2 ; DIGIT0 - LSB #define DIGIT1 PORTA,1 ; DIGIT1 - MSB #define DIGIT2 PORTA,0 ; DIGIT2 - USD atau tanda 'negatif' ;#define UP SW1,4 ; Tombol UP terhubung dengan PORTB,4 ;#define DOWN SW1,5 ; Tombol DOWN terhubung dengan PORTB,5 ;#define SET SW1,6 ; Tombol SET terhubung dengan PORTB,6 ;#define TEMP SW1,7 ; Tombol TEMP terhubung dengan PORTB,7 #define UP PORTB,4 #define DOWN PORTB,5 #define SET PORTB,6 #define TEMP PORTB,7 #define SecBit TEMPFlag,0 ; bit untuk mencek apakah 5 detik sudah selesai atau belum #define CheckCalH TEMPFlag,1 #define CheckCalL TEMPFlag,2 ;***************************************************************************** UDATA WDTCOUNT_HI res 1 WDTCOUNT_LO res 1 TEMPL res 1 TEMPH res 1 TEMPFlag res 1 Count0 res 1 Count1 res 1 W_TEMP res 1 STATUS_TEMP res 1 USD res 1 MSD res 1 LSD res 1 C1 res 1 C2 res 1 C3 res 1 C4 res 1 ;***************************************************************************** extern InitTmr0 extern TempCalc extern ReadEeprom extern WriteEeprom extern EEDefault extern InitWDT extern InPort extern OutPort extern InitData extern ScanKey extern InitInt extern IntDelay extern Delay1 extern Delay_1 extern Delay20 ;for EEPROM extern TEMP_HI,WDT_H0,WDT_H1,Default,TEMP_LO extern WDT_L0,WDT_L1,TempP,TempC,Neg extern Switch,Switch1 global WDTCOUNT_HI,WDTCOUNT_LO,TEMPFlag,Count0,Count1 ' ON 20020811@12:52:14 PM at page: http://www.piclist.com/techref/files.htm JSA-hotmail-EC3 John Paul Santos Aguiling added 'I have agreed to maintain this page. ' : 553 Null recipient not accepted ON 20020821@2:55:38 PM at page: http://www.sxlist.com/techref/breadboards.htm JMN-EFP-786 James Newton added 'change ' ON 20020821@3:00:51 PM at page: http://www.sxlist.com/techref/breadboards.htm JMN-EFP-786 James Newton added 'Questions: Good question and your fear must be confirmed...

There are sockets for SMT chips, but generally, the sockets are more trouble than they are worth; the pinout of the socket is usually just as bad as the pins on the SMT chip. In either case, you end up soldering something to an adapter PCB and then prototyping from that.

Search the internet for Surface Mount AND surfboard or see adapters.com if you are rich. If you end up makeing your own prototype adapter, please share the design to save others the work... or make extra and sell them!' ON 20020821@3:02:33 PM at page: http://www.sxlist.com/techref/breadboards.htm JMN-EFP-786 James Newton edited the page ON 20020827@2:20:01 PM at page: http://www.sxlist.com/techref/glossary.htm JMN-EFP-786 James Newton added 'delete ' ON 20020827@2:20:16 PM at page: http://massmind.org/techref/construction.htm JMN-EFP-786 James Newton added 'change ' ON 20020827@6:26:13 PM at page: http://techref.massmind.org/techref/ideas.htm JMN-EFP-786 James Newton added 'See also: http://techref.massmind.org/techref/idea/mc-heat-inject.htm Internal injection flash steam heat engine.' ON 20020828@4:22:49 AM at page: http://www.piclist.com/techref/apps.htm pT-PT-UG8 Paulo Theodoro added 'See: /techref/piclist/questions.htm '