picinfo16bit.cpp

00001 /***************************************************************************
00002  *   Copyright (C) 2003-2004 by David Saxton                               *
00003  *   david@bluehaze.org                                                    *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  ***************************************************************************/
00010 
00011 #include "micropackage.h"
00012 #include "picinfo16bit.h"
00013 
00014 #include <klocale.h>
00015 #include <kstaticdeleter.h>
00016 
00017 PicAsm16bit *PicAsm16bit::m_self = 0;
00018 static KStaticDeleter<PicAsm16bit> staticDeleter;
00019 
00020 PicAsm16bit *PicAsm16bit::self()
00021 {
00022         if ( !m_self ) staticDeleter.setObject( m_self, new PicAsm16bit() );
00023         return m_self;
00024 }
00025 
00026 PicInfo16bit::PicInfo16bit()
00027         : PicInfo()
00028 {
00029 }
00030 
00031 
00032 PicInfo16bit::~PicInfo16bit()
00033 {
00034 }
00035 
00036 
00037 
00038 PicAsm16bit::PicAsm16bit()
00039         : AsmInfo()
00040 {
00041         // TODO 16 bit Asm instructions for PICs
00042         
00043         // Byte-orientated file register operations
00044         addInstruction( "ADDWF",        0,                                      "000111dfffffff" );
00045         addInstruction( "ANDWF",        0,                                      "000101dfffffff" );
00046         addInstruction( "CLRF",         0,                                              "0000011fffffff" );
00047         addInstruction( "CLRW",         0,                                              "0000010xxxxxxx" );
00048         addInstruction( "COMF",         0,                                      "001001dfffffff" );
00049         addInstruction( "DECF",         0,                                      "000011dfffffff" );
00050         addInstruction( "DECFSZ",       0,                      "001011dfffffff" );
00051         addInstruction( "INCF",         0,                                      "001010dfffffff" );
00052         addInstruction( "INCFSZ",       0,                      "001111dfffffff" );
00053         addInstruction( "IORWF",        0,                      "000100dfffffff" );
00054         addInstruction( "MOVF",         0,                                                      "001000dfffffff" );
00055         addInstruction( "MOVWF",        0,                                      "0000001fffffff" );
00056         addInstruction( "NOP",          0,                                      "0000000xx00000" );
00057         addInstruction( "RLF",          0,      "001101dfffffff" );
00058         addInstruction( "RRF",          0,      "001100dfffffff" );
00059         addInstruction( "SUBWF",        0,                              "000010dfffffff" );
00060         addInstruction( "SWAPF",        0,                              "001110dfffffff" );
00061         addInstruction( "XORWF",        0,                      "000110dfffffff" );
00062         
00063         // Bit-orientated file register operations
00064         addInstruction( "BCF",          0,                                      "0100bbbfffffff" );
00065         addInstruction( "BSF",          0,                                              "0101bbbfffffff" );
00066         addInstruction( "BTFSC",        0,              "0110bbbfffffff" );
00067         addInstruction( "BTFSS",        0,              "0111bbbfffffff" );
00068         
00069         // Literal and control operations
00070         addInstruction( "ADDLW",        0,                              "11111xkkkkkkkk" );
00071         addInstruction( "ANDLW",        0,                              "111001kkkkkkkk" );
00072         addInstruction( "CALL",         0,                              "100kkkkkkkkkkk" );
00073         addInstruction( "CLRWDT",       0,                      "00000001100100" );
00074         addInstruction( "GOTO",         0,                                      "101kkkkkkkkkkk" );
00075         addInstruction( "IORLW",        0,      "111000kkkkkkkk" );
00076         addInstruction( "MOVLW",        0,                              "1100xxkkkkkkkk" );
00077         addInstruction( "RETFIE",       0,                      "00000000001001" );
00078         addInstruction( "RETLW",        0,              "1101xxkkkkkkkk" );
00079         addInstruction( "RETURN",       0,                      "00000000001000" );
00080         addInstruction( "SLEEP",        0,                      "00000000000011" );
00081         addInstruction( "SUBLW",        0,              "11110xkkkkkkkk" );
00082         addInstruction( "XORLW",        0,      "111010kkkkkkkk" );
00083 }
00084 
00085 
00086 PicInfo17C7xx::PicInfo17C7xx()
00087         : PicInfo16bit()
00088 {
00089         m_id = "P17C7xx";
00090 }
00091 PicInfo17C7xx::~PicInfo17C7xx()
00092 {
00093 }
00094 
00095 PicInfo17C75x::PicInfo17C75x()
00096         : PicInfo17C7xx()
00097 {
00098         m_id = "P17C75x";
00099 }
00100 PicInfo17C75x::~PicInfo17C75x()
00101 {
00102 }
00103 
00104 PicInfo17C752::PicInfo17C752()
00105         : PicInfo17C75x()
00106 {
00107         m_id = "P17C752";
00108 }
00109 PicInfo17C752::~PicInfo17C752()
00110 {
00111 }
00112 
00113 PicInfo17C756::PicInfo17C756()
00114         : PicInfo17C75x()
00115 {
00116         m_id = "P17C756";
00117 }
00118 PicInfo17C756::~PicInfo17C756()
00119 {
00120 }
00121 
00122 PicInfo17C756A::PicInfo17C756A()
00123         : PicInfo17C75x()
00124 {
00125         m_id = "P17C756A";
00126 }
00127 PicInfo17C756A::~PicInfo17C756A()
00128 {
00129 }
00130 
00131 PicInfo17C762::PicInfo17C762()
00132         : PicInfo17C75x()
00133 {
00134         m_id = "P17C762";
00135 }
00136 PicInfo17C762::~PicInfo17C762()
00137 {
00138 }
00139 
00140 PicInfo17C766::PicInfo17C766()
00141         : PicInfo17C75x()
00142 {
00143         m_id = "P17C766";
00144 }
00145 PicInfo17C766::~PicInfo17C766()
00146 {
00147 }
00148 
00149 PicInfo18Cxx2::PicInfo18Cxx2()
00150         : PicInfo16bit()
00151 {
00152         m_id = "P18Cxx2";
00153 }
00154 PicInfo18Cxx2::~PicInfo18Cxx2()
00155 {
00156 }
00157 
00158 PicInfo18C2x2::PicInfo18C2x2()
00159         : PicInfo16bit()
00160 {
00161         m_id = "P18C2x2";
00162 }
00163 PicInfo18C2x2::~PicInfo18C2x2()
00164 {
00165 }
00166 
00167 PicInfo18C242::PicInfo18C242()
00168         : PicInfo18C2x2()
00169 {
00170         m_id = "P18C242";
00171 }
00172 PicInfo18C242::~PicInfo18C242()
00173 {
00174 }
00175 
00176 PicInfo18C252::PicInfo18C252()
00177         : PicInfo18C242()
00178 {
00179         m_id = "P18C252";
00180 }
00181 PicInfo18C252::~PicInfo18C252()
00182 {
00183 }
00184 
00185 PicInfo18C4x2::PicInfo18C4x2()
00186         : PicInfo16bit()
00187 {
00188         m_id = "P18C4x2";
00189         
00190         delete m_package;
00191         m_package = new MicroPackage(40);
00192         
00193         m_package->assignPin( 2,        PicPin::type_bidir,     "RA0",  "PORTA", 0 );
00194         m_package->assignPin( 3,        PicPin::type_bidir,     "RA1",  "PORTA", 1 );
00195         m_package->assignPin( 4,        PicPin::type_bidir,     "RA2",  "PORTA", 2 );
00196         m_package->assignPin( 5,        PicPin::type_bidir,     "RA3",  "PORTA", 3 );
00197         m_package->assignPin( 6,        PicPin::type_open,      "RA4",  "PORTA", 4 );
00198         m_package->assignPin( 7,        PicPin::type_bidir,     "RA5",  "PORTB", 5 );
00199         
00200         m_package->assignPin( 33,       PicPin::type_bidir,     "RB0",  "PORTB", 0 );
00201         m_package->assignPin( 34,       PicPin::type_bidir,     "RB1",  "PORTB", 1 );
00202         m_package->assignPin( 35,       PicPin::type_bidir,     "RB2",  "PORTB", 2 );
00203         m_package->assignPin( 36,       PicPin::type_bidir,     "RB3",  "PORTB", 3 );
00204         m_package->assignPin( 37,       PicPin::type_bidir,     "RB4",  "PORTB", 4 );
00205         m_package->assignPin( 38,       PicPin::type_bidir,     "RB5",  "PORTB", 5 );
00206         m_package->assignPin( 39,       PicPin::type_bidir,     "RB6",  "PORTB", 6 );
00207         m_package->assignPin( 40,       PicPin::type_bidir,     "RB7",  "PORTB", 7 );
00208         
00209         m_package->assignPin( 15,       PicPin::type_bidir,     "RC0",  "PORTC", 0 );
00210         m_package->assignPin( 16,       PicPin::type_bidir,     "RC1",  "PORTC", 1 );
00211         m_package->assignPin( 17,       PicPin::type_bidir,     "RC2",  "PORTC", 2 );
00212         m_package->assignPin( 18,       PicPin::type_bidir,     "RC3",  "PORTC", 3 );
00213         m_package->assignPin( 23,       PicPin::type_bidir,     "RC4",  "PORTC", 4 );
00214         m_package->assignPin( 24,       PicPin::type_bidir,     "RC5",  "PORTC", 5 );
00215         m_package->assignPin( 25,       PicPin::type_bidir,     "RC6",  "PORTC", 6 );
00216         m_package->assignPin( 26,       PicPin::type_bidir,     "RC7",  "PORTC", 7 );
00217         
00218         m_package->assignPin( 19,       PicPin::type_bidir,     "RD0",  "PORTD", 0 );
00219         m_package->assignPin( 20,       PicPin::type_bidir,     "RD1",  "PORTD", 1 );
00220         m_package->assignPin( 21,       PicPin::type_bidir,     "RD2",  "PORTD", 2 );
00221         m_package->assignPin( 22,       PicPin::type_bidir,     "RD3",  "PORTD", 3 );
00222         m_package->assignPin( 27,       PicPin::type_bidir,     "RD4",  "PORTD", 4 );
00223         m_package->assignPin( 28,       PicPin::type_bidir,     "RD5",  "PORTD", 5 );
00224         m_package->assignPin( 29,       PicPin::type_bidir,     "RD6",  "PORTD", 6 );
00225         m_package->assignPin( 30,       PicPin::type_bidir,     "RD7",  "PORTD", 7 );
00226         
00227         m_package->assignPin( 8,        PicPin::type_bidir,     "RE0",  "PORTE", 0 );
00228         m_package->assignPin( 9,        PicPin::type_bidir,     "RE1",  "PORTE", 1 );
00229         m_package->assignPin( 10,       PicPin::type_bidir,     "RE2",  "PORTE", 2 );
00230         
00231         m_package->assignPin( 1,        PicPin::type_mclr,      "MCLR" );
00232         m_package->assignPin( 11,       PicPin::type_vdd,       "VDD" );
00233         m_package->assignPin( 12,       PicPin::type_vss,       "VSS" );
00234         m_package->assignPin( 13,       PicPin::type_osc,       "OSC1" );
00235         m_package->assignPin( 14,       PicPin::type_osc,       "OSC2" );
00236         m_package->assignPin( 31,       PicPin::type_vss,       "VSS" );
00237         m_package->assignPin( 32,       PicPin::type_vdd,       "VDD" );
00238 }
00239 
00240 PicInfo18C4x2::~PicInfo18C4x2()
00241 {
00242         delete m_package;
00243 }
00244 
00245 PicInfo18C442::PicInfo18C442()
00246         : PicInfo18C4x2()
00247 {
00248         m_id = "P18C442";
00249 }
00250 PicInfo18C442::~PicInfo18C442()
00251 {
00252 }
00253 
00254 PicInfo18C452::PicInfo18C452()
00255         : PicInfo18C442()
00256 {
00257         m_id = "P18C452";
00258 }
00259 PicInfo18C452::~PicInfo18C452()
00260 {
00261 }
00262 
00263 PicInfo18F442::PicInfo18F442()
00264         : PicInfo18C442()
00265 {
00266         m_id = "P18F442";
00267 }
00268 PicInfo18F442::~PicInfo18F442()
00269 {
00270 }
00271 
00272 PicInfo18F248::PicInfo18F248()
00273         : PicInfo18F442()
00274 {
00275         m_id = "P18F248";
00276 }
00277 PicInfo18F248::~PicInfo18F248()
00278 {
00279 }
00280 
00281 PicInfo18F452::PicInfo18F452()
00282         : PicInfo18F442()
00283 {
00284         m_id = "P18F452";
00285 }
00286 PicInfo18F452::~PicInfo18F452()
00287 {
00288 }
00289 
00290 PicInfo18Fxx20::PicInfo18Fxx20()
00291         : PicInfo16bit()
00292 {
00293         m_id = "P18Fxx20";
00294 }
00295 PicInfo18Fxx20::~PicInfo18Fxx20()
00296 {
00297 }
00298 
00299 PicInfo18F1220::PicInfo18F1220()
00300         : PicInfo18Fxx20()
00301 {
00302         m_id = "P18F1220";
00303         
00304         delete m_package;
00305         m_package = new MicroPackage(18);
00306         
00307         m_package->assignPin( 1,        PicPin::type_bidir,     "RA0",  "PORTA", 0 );
00308         m_package->assignPin( 2,        PicPin::type_bidir,     "RA1",  "PORTA", 1 );
00309         m_package->assignPin( 6,        PicPin::type_bidir,     "RA2",  "PORTA", 2 );
00310         m_package->assignPin( 7,        PicPin::type_bidir,     "RA3",  "PORTA", 3 );
00311         m_package->assignPin( 3,        PicPin::type_open,      "RA4",  "PORTA", 4 );
00312         m_package->assignPin( 4,        PicPin::type_open,      "RA5",  "PORTA", 5 );
00313         m_package->assignPin( 15,       PicPin::type_open,      "RA6",  "PORTA", 6 );
00314         m_package->assignPin( 16,       PicPin::type_open,      "RA7",  "PORTA", 7 );
00315         
00316         m_package->assignPin( 8,        PicPin::type_bidir,     "RB0",  "PORTB", 0 );
00317         m_package->assignPin( 9,        PicPin::type_bidir,     "RB1",  "PORTB", 1 );
00318         m_package->assignPin( 17,       PicPin::type_bidir,     "RB2",  "PORTB", 2 );
00319         m_package->assignPin( 18,       PicPin::type_bidir,     "RB3",  "PORTB", 3 );
00320         m_package->assignPin( 10,       PicPin::type_bidir,     "RB4",  "PORTB", 4 );
00321         m_package->assignPin( 11,       PicPin::type_bidir,     "RB5",  "PORTB", 5 );
00322         m_package->assignPin( 12,       PicPin::type_bidir,     "RB6",  "PORTB", 6 );
00323         m_package->assignPin( 13,       PicPin::type_bidir,     "RB7",  "PORTB", 7 );
00324         
00325         m_package->assignPin( 5,        PicPin::type_vss,       "VSS" );
00326         m_package->assignPin( 14,       PicPin::type_vdd,       "VDD" );
00327 }
00328 
00329 PicInfo18F1220::~PicInfo18F1220()
00330 {
00331         delete m_package;
00332 }
00333 
00334 PicInfo18F1320::PicInfo18F1320()
00335         : PicInfo18F1220()
00336 {
00337         m_id = "P18F1320";
00338 }
00339 PicInfo18F1320::~PicInfo18F1320()
00340 {
00341 }
00342 
00343 

Generated on Tue May 8 17:05:31 2007 for KTechLab by  doxygen 1.5.1