00001
00002
00003
00004
00005
00006
00007
00008
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
00042
00043
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
00064 addInstruction( "BCF", 0, "0100bbbfffffff" );
00065 addInstruction( "BSF", 0, "0101bbbfffffff" );
00066 addInstruction( "BTFSC", 0, "0110bbbfffffff" );
00067 addInstruction( "BTFSS", 0, "0111bbbfffffff" );
00068
00069
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