1unit ATmega64C1; 2 3{$goto on} 4 5interface 6 7var 8 // PORTB 9 PORTB : byte absolute $00+$25; // Port B Data Register 10 DDRB : byte absolute $00+$24; // Port B Data Direction Register 11 PINB : byte absolute $00+$23; // Port B Input Pins 12 // PORTC 13 PORTC : byte absolute $00+$28; // Port C Data Register 14 DDRC : byte absolute $00+$27; // Port C Data Direction Register 15 PINC : byte absolute $00+$26; // Port C Input Pins 16 // PORTD 17 PORTD : byte absolute $00+$2B; // Port D Data Register 18 DDRD : byte absolute $00+$2A; // Port D Data Direction Register 19 PIND : byte absolute $00+$29; // Port D Input Pins 20 // CAN 21 CANGCON : byte absolute $00+$D8; // CAN General Control Register 22 CANGSTA : byte absolute $00+$D9; // CAN General Status Register 23 CANGIT : byte absolute $00+$DA; // CAN General Interrupt Register Flags 24 CANGIE : byte absolute $00+$DB; // CAN General Interrupt Enable Register 25 CANEN2 : byte absolute $00+$DC; // Enable MOb Register 2 26 CANEN1 : byte absolute $00+$DD; // Enable MOb Register 1(empty) 27 CANIE2 : byte absolute $00+$DE; // Enable Interrupt MOb Register 2 28 CANIE1 : byte absolute $00+$DF; // Enable Interrupt MOb Register 1 (empty) 29 CANSIT2 : byte absolute $00+$E0; // CAN Status Interrupt MOb Register 2 30 CANSIT1 : byte absolute $00+$E1; // CAN Status Interrupt MOb Register 1 (empty) 31 CANBT1 : byte absolute $00+$E2; // CAN Bit Timing Register 1 32 CANBT2 : byte absolute $00+$E3; // CAN Bit Timing Register 2 33 CANBT3 : byte absolute $00+$E4; // CAN Bit Timing Register 3 34 CANTCON : byte absolute $00+$E5; // Timer Control Register 35 CANTIML : byte absolute $00+$E6; // Timer Register Low 36 CANTIMH : byte absolute $00+$E7; // Timer Register High 37 CANTTCL : byte absolute $00+$E8; // TTC Timer Register Low 38 CANTTCH : byte absolute $00+$E9; // TTC Timer Register High 39 CANTEC : byte absolute $00+$EA; // Transmit Error Counter Register 40 CANREC : byte absolute $00+$EB; // Receive Error Counter Register 41 CANHPMOB : byte absolute $00+$EC; // Highest Priority MOb Register 42 CANPAGE : byte absolute $00+$ED; // Page MOb Register 43 CANSTMOB : byte absolute $00+$EE; // MOb Status Register 44 CANCDMOB : byte absolute $00+$EF; // MOb Control and DLC Register 45 CANIDT4 : byte absolute $00+$F0; // Identifier Tag Register 4 46 CANIDT3 : byte absolute $00+$F1; // Identifier Tag Register 3 47 CANIDT2 : byte absolute $00+$F2; // Identifier Tag Register 2 48 CANIDT1 : byte absolute $00+$F3; // Identifier Tag Register 1 49 CANIDM4 : byte absolute $00+$F4; // Identifier Mask Register 4 50 CANIDM3 : byte absolute $00+$F5; // Identifier Mask Register 3 51 CANIDM2 : byte absolute $00+$F6; // Identifier Mask Register 2 52 CANIDM1 : byte absolute $00+$F7; // Identifier Mask Register 1 53 CANSTML : byte absolute $00+$F8; // Time Stamp Register Low 54 CANSTMH : byte absolute $00+$F9; // Time Stamp Register High 55 CANMSG : byte absolute $00+$FA; // Message Data Register 56 // ANALOG_COMPARATOR 57 AC0CON : byte absolute $00+$94; // Analog Comparator 0 Control Register 58 AC1CON : byte absolute $00+$95; // Analog Comparator 1 Control Register 59 AC2CON : byte absolute $00+$96; // Analog Comparator 2 Control Register 60 AC3CON : byte absolute $00+$97; // Analog Comparator 3 Control Register 61 ACSR : byte absolute $00+$50; // Analog Comparator Status Register 62 // DA_CONVERTER 63 DACH : byte absolute $00+$92; // DAC Data Register High Byte 64 DACL : byte absolute $00+$91; // DAC Data Register Low Byte 65 DACON : byte absolute $00+$90; // DAC Control Register 66 // CPU 67 SPMCSR : byte absolute $00+$57; // Store Program Memory Control Register 68 SREG : byte absolute $00+$5F; // Status Register 69 SP : word absolute $00+$5D; // Stack Pointer 70 SPL : byte absolute $00+$5D; // Stack Pointer 71 SPH : byte absolute $00+$5D+1; // Stack Pointer 72 MCUCR : byte absolute $00+$55; // MCU Control Register 73 MCUSR : byte absolute $00+$54; // MCU Status Register 74 OSCCAL : byte absolute $00+$66; // Oscillator Calibration Value 75 CLKPR : byte absolute $00+$61; // 76 SMCR : byte absolute $00+$53; // Sleep Mode Control Register 77 GPIOR2 : byte absolute $00+$3A; // General Purpose IO Register 2 78 GPIOR1 : byte absolute $00+$39; // General Purpose IO Register 1 79 GPIOR0 : byte absolute $00+$3E; // General Purpose IO Register 0 80 PLLCSR : byte absolute $00+$49; // PLL Control And Status Register 81 PRR : byte absolute $00+$64; // Power Reduction Register 82 // PORTE 83 PORTE : byte absolute $00+$2E; // Port E Data Register 84 DDRE : byte absolute $00+$2D; // Port E Data Direction Register 85 PINE : byte absolute $00+$2C; // Port E Input Pins 86 // TIMER_COUNTER_0 87 TIMSK0 : byte absolute $00+$6E; // Timer/Counter0 Interrupt Mask Register 88 TIFR0 : byte absolute $00+$35; // Timer/Counter0 Interrupt Flag register 89 TCCR0A : byte absolute $00+$44; // Timer/Counter Control Register A 90 TCCR0B : byte absolute $00+$45; // Timer/Counter Control Register B 91 TCNT0 : byte absolute $00+$46; // Timer/Counter0 92 OCR0A : byte absolute $00+$47; // Timer/Counter0 Output Compare Register 93 OCR0B : byte absolute $00+$48; // Timer/Counter0 Output Compare Register 94 GTCCR : byte absolute $00+$43; // General Timer/Counter Control Register 95 // TIMER_COUNTER_1 96 TIMSK1 : byte absolute $00+$6F; // Timer/Counter Interrupt Mask Register 97 TIFR1 : byte absolute $00+$36; // Timer/Counter Interrupt Flag register 98 TCCR1A : byte absolute $00+$80; // Timer/Counter1 Control Register A 99 TCCR1B : byte absolute $00+$81; // Timer/Counter1 Control Register B 100 TCCR1C : byte absolute $00+$82; // Timer/Counter1 Control Register C 101 TCNT1 : word absolute $00+$84; // Timer/Counter1 Bytes 102 TCNT1L : byte absolute $00+$84; // Timer/Counter1 Bytes 103 TCNT1H : byte absolute $00+$84+1; // Timer/Counter1 Bytes 104 OCR1A : word absolute $00+$88; // Timer/Counter1 Output Compare Register Bytes 105 OCR1AL : byte absolute $00+$88; // Timer/Counter1 Output Compare Register Bytes 106 OCR1AH : byte absolute $00+$88+1; // Timer/Counter1 Output Compare Register Bytes 107 OCR1B : word absolute $00+$8A; // Timer/Counter1 Output Compare Register Bytes 108 OCR1BL : byte absolute $00+$8A; // Timer/Counter1 Output Compare Register Bytes 109 OCR1BH : byte absolute $00+$8A+1; // Timer/Counter1 Output Compare Register Bytes 110 ICR1 : word absolute $00+$86; // Timer/Counter1 Input Capture Register Bytes 111 ICR1L : byte absolute $00+$86; // Timer/Counter1 Input Capture Register Bytes 112 ICR1H : byte absolute $00+$86+1; // Timer/Counter1 Input Capture Register Bytes 113 // AD_CONVERTER 114 ADMUX : byte absolute $00+$7C; // The ADC multiplexer Selection Register 115 ADCSRA : byte absolute $00+$7A; // The ADC Control and Status register 116 ADC : word absolute $00+$78; // ADC Data Register Bytes 117 ADCL : byte absolute $00+$78; // ADC Data Register Bytes 118 ADCH : byte absolute $00+$78+1; // ADC Data Register Bytes 119 ADCSRB : byte absolute $00+$7B; // ADC Control and Status Register B 120 DIDR0 : byte absolute $00+$7E; // Digital Input Disable Register 0 121 DIDR1 : byte absolute $00+$7F; // Digital Input Disable Register 0 122 AMP0CSR : byte absolute $00+$75; // 123 AMP1CSR : byte absolute $00+$76; // 124 AMP2CSR : byte absolute $00+$77; // 125 // LINUART 126 LINCR : byte absolute $00+$C8; // LIN Control Register 127 LINSIR : byte absolute $00+$C9; // LIN Status and Interrupt Register 128 LINENIR : byte absolute $00+$CA; // LIN Enable Interrupt Register 129 LINERR : byte absolute $00+$CB; // LIN Error Register 130 LINBTR : byte absolute $00+$CC; // LIN Bit Timing Register 131 LINBRRL : byte absolute $00+$CD; // LIN Baud Rate Low Register 132 LINBRRH : byte absolute $00+$CE; // LIN Baud Rate High Register 133 LINDLR : byte absolute $00+$CF; // LIN Data Length Register 134 LINIDR : byte absolute $00+$D0; // LIN Identifier Register 135 LINSEL : byte absolute $00+$D1; // LIN Data Buffer Selection Register 136 LINDAT : byte absolute $00+$D2; // LIN Data Register 137 // SPI 138 SPCR : byte absolute $00+$4C; // SPI Control Register 139 SPSR : byte absolute $00+$4D; // SPI Status Register 140 SPDR : byte absolute $00+$4E; // SPI Data Register 141 // WATCHDOG 142 WDTCSR : byte absolute $00+$60; // Watchdog Timer Control Register 143 // EXTERNAL_INTERRUPT 144 EICRA : byte absolute $00+$69; // External Interrupt Control Register 145 EIMSK : byte absolute $00+$3D; // External Interrupt Mask Register 146 EIFR : byte absolute $00+$3C; // External Interrupt Flag Register 147 PCICR : byte absolute $00+$68; // Pin Change Interrupt Control Register 148 PCMSK3 : byte absolute $00+$6D; // Pin Change Mask Register 3 149 PCMSK2 : byte absolute $00+$6C; // Pin Change Mask Register 2 150 PCMSK1 : byte absolute $00+$6B; // Pin Change Mask Register 1 151 PCMSK0 : byte absolute $00+$6A; // Pin Change Mask Register 0 152 PCIFR : byte absolute $00+$3B; // Pin Change Interrupt Flag Register 153 // EEPROM 154 EEAR : word absolute $00+$41; // EEPROM Read/Write Access 155 EEARL : byte absolute $00+$41; // EEPROM Read/Write Access 156 EEARH : byte absolute $00+$41+1; // EEPROM Read/Write Access 157 EEDR : byte absolute $00+$40; // EEPROM Data Register 158 EECR : byte absolute $00+$3F; // EEPROM Control Register 159 160const 161 // CANGCON 162 ABRQ = 7; // Abort Request 163 OVRQ = 6; // Overload Frame Request 164 TTC = 5; // Time Trigger Communication 165 SYNTTC = 4; // Synchronization of TTC 166 LISTEN = 3; // Listening Mode 167 TEST = 2; // Test Mode 168 ENASTB = 1; // Enable / Standby 169 SWRES = 0; // Software Reset Request 170 // CANGSTA 171 OVFG = 6; // Overload Frame Flag 172 TXBSY = 4; // Transmitter Busy 173 RXBSY = 3; // Receiver Busy 174 ENFG = 2; // Enable Flag 175 BOFF = 1; // Bus Off Mode 176 ERRP = 0; // Error Passive Mode 177 // CANGIT 178 CANIT = 7; // General Interrupt Flag 179 BOFFIT = 6; // Bus Off Interrupt Flag 180 OVRTIM = 5; // Overrun CAN Timer Flag 181 BXOK = 4; // Burst Receive Interrupt Flag 182 SERG = 3; // Stuff Error General Flag 183 CERG = 2; // CRC Error General Flag 184 FERG = 1; // Form Error General Flag 185 AERG = 0; // Ackknowledgement Error General Flag 186 // CANGIE 187 ENIT = 7; // Enable all Interrupts 188 ENBOFF = 6; // Enable Bus Off Interrupt 189 ENRX = 5; // Enable Receive Interrupt 190 ENTX = 4; // Enable Transmitt Interrupt 191 ENERR = 3; // Enable MOb Error Interrupt 192 ENBX = 2; // Enable Burst Receive Interrupt 193 ENERG = 1; // Enable General Error Interrupt 194 ENOVRT = 0; // Enable CAN Timer Overrun Interrupt 195 // CANEN2 196 ENMOB = 0; // Enable MObs 197 // CANIE2 198 IEMOB = 0; // Interrupt Enable MObs 199 // CANSIT2 200 SIT = 0; // Status of Interrupt MObs 201 // CANBT1 202 BRP = 1; // Baud Rate Prescaler bits 203 // CANBT2 204 SJW = 5; // Re-Sync Jump Width bits 205 PRS = 1; // Propagation Time Segment bits 206 // CANBT3 207 PHS2 = 4; // Phase Segment 2 bits 208 PHS1 = 1; // Phase Segment 1 bits 209 SMP = 0; // Sample Type 210 // CANHPMOB 211 HPMOB = 4; // Highest Priority MOb Number bits 212 CGP = 0; // CAN General Purpose bits 213 // CANPAGE 214 MOBNB = 4; // MOb Number bits 215 AINC = 3; // MOb Data Buffer Auto Increment (Active Low) 216 INDX = 0; // Data Buffer Index bits 217 // CANSTMOB 218 DLCW = 7; // Data Length Code Warning on MOb 219 TXOK = 6; // Transmit OK on MOb 220 RXOK = 5; // Receive OK on MOb 221 BERR = 4; // Bit Error on MOb 222 SERR = 3; // Stuff Error on MOb 223 CERR = 2; // CRC Error on MOb 224 FERR = 1; // Form Error on MOb 225 AERR = 0; // Ackknowledgement Error on MOb 226 // CANCDMOB 227 CONMOB = 6; // MOb Config bits 228 RPLV = 5; // Reply Valid 229 IDE = 4; // Identifier Extension 230 DLC = 0; // Data Length Code bits 231 // CANIDT4 232 IDT = 3; // 233 RTRTAG = 2; // 234 RB1TAG = 1; // 235 RB0TAG = 0; // 236 // AC0CON 237 AC0EN = 7; // Analog Comparator 0 Enable Bit 238 AC0IE = 6; // Analog Comparator 0 Interrupt Enable Bit 239 AC0IS = 4; // Analog Comparator 0 Interrupt Select Bits 240 ACCKSEL = 3; // Analog Comparator Clock Select 241 AC0M = 0; // Analog Comparator 0 Multiplexer Register 242 // AC1CON 243 AC1EN = 7; // Analog Comparator 1 Enable Bit 244 AC1IE = 6; // Analog Comparator 1 Interrupt Enable Bit 245 AC1IS = 4; // Analog Comparator 1 Interrupt Select Bit 246 AC1ICE = 3; // Analog Comparator 1 Interrupt Capture Enable Bit 247 AC1M = 0; // Analog Comparator 1 Multiplexer Register 248 // AC2CON 249 AC2EN = 7; // Analog Comparator 2 Enable Bit 250 AC2IE = 6; // Analog Comparator 2 Interrupt Enable Bit 251 AC2IS = 4; // Analog Comparator 2 Interrupt Select Bit 252 AC2M = 0; // Analog Comparator 2 Multiplexer Register 253 // AC3CON 254 AC3EN = 7; // Analog Comparator 3 Enable Bit 255 AC3IE = 6; // Analog Comparator 3 Interrupt Enable Bit 256 AC3IS = 4; // Analog Comparator 3 Interrupt Select Bit 257 AC3M = 0; // Analog Comparator 3 Multiplexer Register 258 // ACSR 259 AC3IF = 7; // Analog Comparator 3 Interrupt Flag Bit 260 AC2IF = 6; // Analog Comparator 2 Interrupt Flag Bit 261 AC1IF = 5; // Analog Comparator 1 Interrupt Flag Bit 262 AC0IF = 4; // Analog Comparator 0 Interrupt Flag Bit 263 AC3O = 3; // Analog Comparator 3 Output Bit 264 AC2O = 2; // Analog Comparator 2 Output Bit 265 AC1O = 1; // Analog Comparator 1 Output Bit 266 AC0O = 0; // Analog Comparator 0 Output Bit 267 // DACH 268 // DACL 269 // DACON 270 DAATE = 7; // DAC Auto Trigger Enable Bit 271 DATS = 4; // DAC Trigger Selection Bits 272 DALA = 2; // DAC Left Adjust 273 DAEN = 0; // DAC Enable Bit 274 // SPMCSR 275 SPMIE = 7; // SPM Interrupt Enable 276 RWWSB = 6; // Read While Write Section Busy 277 SIGRD = 5; // Signature Row Read 278 RWWSRE = 4; // Read While Write section read enable 279 BLBSET = 3; // Boot Lock Bit Set 280 PGWRT = 2; // Page Write 281 PGERS = 1; // Page Erase 282 SPMEN = 0; // Store Program Memory Enable 283 // SREG 284 I = 7; // Global Interrupt Enable 285 T = 6; // Bit Copy Storage 286 H = 5; // Half Carry Flag 287 S = 4; // Sign Bit 288 V = 3; // Two's Complement Overflow Flag 289 N = 2; // Negative Flag 290 Z = 1; // Zero Flag 291 C = 0; // Carry Flag 292 // MCUCR 293 SPIPS = 7; // SPI Pin Select 294 PUD = 4; // Pull-up disable 295 IVSEL = 1; // Interrupt Vector Select 296 IVCE = 0; // Interrupt Vector Change Enable 297 // MCUSR 298 WDRF = 3; // Watchdog Reset Flag 299 BORF = 2; // Brown-out Reset Flag 300 EXTRF = 1; // External Reset Flag 301 PORF = 0; // Power-on reset flag 302 // CLKPR 303 CLKPCE = 7; // 304 CLKPS = 0; // 305 // SMCR 306 SM = 1; // Sleep Mode Select bits 307 SE = 0; // Sleep Enable 308 // GPIOR2 309 GPIOR = 0; // General Purpose IO Register 2 bis 310 // GPIOR1 311 // GPIOR0 312 GPIOR07 = 7; // General Purpose IO Register 0 bit 7 313 GPIOR06 = 6; // General Purpose IO Register 0 bit 6 314 GPIOR05 = 5; // General Purpose IO Register 0 bit 5 315 GPIOR04 = 4; // General Purpose IO Register 0 bit 4 316 GPIOR03 = 3; // General Purpose IO Register 0 bit 3 317 GPIOR02 = 2; // General Purpose IO Register 0 bit 2 318 GPIOR01 = 1; // General Purpose IO Register 0 bit 1 319 GPIOR00 = 0; // General Purpose IO Register 0 bit 0 320 // PLLCSR 321 PLLF = 2; // PLL Factor 322 PLLE = 1; // PLL Enable 323 PLOCK = 0; // PLL Lock Detector 324 // PRR 325 PRCAN = 6; // Power Reduction CAN 326 PRPSC = 5; // Power Reduction PSC 327 PRTIM1 = 4; // Power Reduction Timer/Counter1 328 PRTIM0 = 3; // Power Reduction Timer/Counter0 329 PRSPI = 2; // Power Reduction Serial Peripheral Interface 330 PRLIN = 1; // Power Reduction LIN UART 331 PRADC = 0; // Power Reduction ADC 332 // TIMSK0 333 OCIE0B = 2; // Timer/Counter0 Output Compare Match B Interrupt Enable 334 OCIE0A = 1; // Timer/Counter0 Output Compare Match A Interrupt Enable 335 TOIE0 = 0; // Timer/Counter0 Overflow Interrupt Enable 336 // TIFR0 337 OCF0B = 2; // Timer/Counter0 Output Compare Flag 0B 338 OCF0A = 1; // Timer/Counter0 Output Compare Flag 0A 339 TOV0 = 0; // Timer/Counter0 Overflow Flag 340 // TCCR0A 341 COM0A = 6; // Compare Output Mode, Phase Correct PWM Mode 342 COM0B = 4; // Compare Output Mode, Fast PWm 343 WGM0 = 0; // Waveform Generation Mode 344 // TCCR0B 345 FOC0A = 7; // Force Output Compare A 346 FOC0B = 6; // Force Output Compare B 347 WGM02 = 3; // 348 CS0 = 0; // Clock Select 349 // GTCCR 350 TSM = 7; // Timer/Counter Synchronization Mode 351 ICPSEL1 = 6; // Timer1 Input Capture Selection Bit 352 PSR10 = 0; // Prescaler Reset Timer/Counter1 and Timer/Counter0 353 // TIMSK1 354 ICIE1 = 5; // Timer/Counter1 Input Capture Interrupt Enable 355 OCIE1B = 2; // Timer/Counter1 Output CompareB Match Interrupt Enable 356 OCIE1A = 1; // Timer/Counter1 Output CompareA Match Interrupt Enable 357 TOIE1 = 0; // Timer/Counter1 Overflow Interrupt Enable 358 // TIFR1 359 ICF1 = 5; // Input Capture Flag 1 360 OCF1B = 2; // Output Compare Flag 1B 361 OCF1A = 1; // Output Compare Flag 1A 362 TOV1 = 0; // Timer/Counter1 Overflow Flag 363 // TCCR1A 364 COM1A = 6; // Compare Output Mode 1A, bits 365 COM1B = 4; // Compare Output Mode 1B, bits 366 WGM1 = 0; // Waveform Generation Mode 367 // TCCR1B 368 ICNC1 = 7; // Input Capture 1 Noise Canceler 369 ICES1 = 6; // Input Capture 1 Edge Select 370 CS1 = 0; // Prescaler source of Timer/Counter 1 371 // TCCR1C 372 FOC1A = 7; // 373 FOC1B = 6; // 374 // GTCCR 375 PSRSYNC = 0; // Prescaler Reset Timer/Counter1 and Timer/Counter0 376 // ADMUX 377 REFS = 6; // Reference Selection Bits 378 ADLAR = 5; // Left Adjust Result 379 MUX = 0; // Analog Channel and Gain Selection Bits 380 // ADCSRA 381 ADEN = 7; // ADC Enable 382 ADSC = 6; // ADC Start Conversion 383 ADATE = 5; // ADC Auto Trigger Enable 384 ADIF = 4; // ADC Interrupt Flag 385 ADIE = 3; // ADC Interrupt Enable 386 ADPS = 0; // ADC Prescaler Select Bits 387 // ADCSRB 388 ADHSM = 7; // ADC High Speed Mode 389 ISRCEN = 6; // Current Source Enable 390 AREFEN = 5; // Analog Reference pin Enable 391 ADTS = 0; // ADC Auto Trigger Sources 392 // DIDR0 393 ADC7D = 7; // ADC7 Digital input Disable 394 ADC6D = 6; // ADC6 Digital input Disable 395 ADC5D = 5; // ADC5 Digital input Disable 396 ADC4D = 4; // ADC4 Digital input Disable 397 ADC3D = 3; // ADC3 Digital input Disable 398 ADC2D = 2; // ADC2 Digital input Disable 399 ADC1D = 1; // ADC1 Digital input Disable 400 ADC0D = 0; // ADC0 Digital input Disable 401 // DIDR1 402 AMP2PD = 6; // AMP2P Pin Digital input Disable 403 ACMP0D = 5; // ACMP0 Pin Digital input Disable 404 AMP0PD = 4; // AMP0P Pin Digital input Disable 405 AMP0ND = 3; // AMP0N Pin Digital input Disable 406 ADC10D = 2; // ADC10 Pin Digital input Disable 407 ADC9D = 1; // ADC9 Pin Digital input Disable 408 ADC8D = 0; // ADC8 Pin Digital input Disable 409 // AMP0CSR 410 AMP0EN = 7; // 411 AMP0IS = 6; // 412 AMP0G = 4; // 413 AMPCMP0 = 3; // Amplifier 0 - Comparator 0 Connection 414 AMP0TS = 0; // 415 // AMP1CSR 416 AMP1EN = 7; // 417 AMP1IS = 6; // 418 AMP1G = 4; // 419 AMPCMP1 = 3; // Amplifier 1 - Comparator 1 Connection 420 AMP1TS = 0; // 421 // AMP2CSR 422 AMP2EN = 7; // 423 AMP2IS = 6; // 424 AMP2G = 4; // 425 AMPCMP2 = 3; // Amplifier 2 - Comparator 2 Connection 426 AMP2TS = 0; // 427 // LINCR 428 LSWRES = 7; // Software Reset 429 LIN13 = 6; // LIN Standard 430 LCONF = 4; // LIN Configuration bits 431 LENA = 3; // LIN or UART Enable 432 LCMD = 0; // LIN Command and Mode bits 433 // LINSIR 434 LIDST = 5; // Identifier Status bits 435 LBUSY = 4; // Busy Signal 436 LERR = 3; // Error Interrupt 437 LIDOK = 2; // Identifier Interrupt 438 LTXOK = 1; // Transmit Performed Interrupt 439 LRXOK = 0; // Receive Performed Interrupt 440 // LINENIR 441 LENERR = 3; // Enable Error Interrupt 442 LENIDOK = 2; // Enable Identifier Interrupt 443 LENTXOK = 1; // Enable Transmit Performed Interrupt 444 LENRXOK = 0; // Enable Receive Performed Interrupt 445 // LINERR 446 LABORT = 7; // Abort Flag 447 LTOERR = 6; // Frame Time Out Error Flag 448 LOVERR = 5; // Overrun Error Flag 449 LFERR = 4; // Framing Error Flag 450 LSERR = 3; // Synchronization Error Flag 451 LPERR = 2; // Parity Error Flag 452 LCERR = 1; // Checksum Error Flag 453 LBERR = 0; // Bit Error Flag 454 // LINBTR 455 LDISR = 7; // Disable Bit Timing Resynchronization 456 LBT = 0; // LIN Bit Timing bits 457 // LINBRRL 458 LDIV = 0; // 459 // LINBRRH 460 // LINDLR 461 LTXDL = 4; // LIN Transmit Data Length bits 462 LRXDL = 0; // LIN Receive Data Length bits 463 // LINIDR 464 LP = 6; // Parity bits 465 LID = 0; // Identifier bit 5 or Data Length bits 466 // LINSEL 467 LAINC = 3; // Auto Increment of Data Buffer Index (Active Low) 468 LINDX = 0; // FIFO LIN Data Buffer Index bits 469 // LINDAT 470 LDATA = 0; // 471 // SPCR 472 SPIE = 7; // SPI Interrupt Enable 473 SPE = 6; // SPI Enable 474 DORD = 5; // Data Order 475 MSTR = 4; // Master/Slave Select 476 CPOL = 3; // Clock polarity 477 CPHA = 2; // Clock Phase 478 SPR = 0; // SPI Clock Rate Selects 479 // SPSR 480 SPIF = 7; // SPI Interrupt Flag 481 WCOL = 6; // Write Collision Flag 482 SPI2X = 0; // Double SPI Speed Bit 483 // WDTCSR 484 WDIF = 7; // Watchdog Timeout Interrupt Flag 485 WDIE = 6; // Watchdog Timeout Interrupt Enable 486 WDP = 0; // Watchdog Timer Prescaler Bits 487 WDCE = 4; // Watchdog Change Enable 488 WDE = 3; // Watch Dog Enable 489 // EICRA 490 ISC3 = 6; // External Interrupt Sense Control Bit 491 ISC2 = 4; // External Interrupt Sense Control Bit 492 ISC1 = 2; // External Interrupt Sense Control 1 Bits 493 ISC0 = 0; // External Interrupt Sense Control 0 Bits 494 // EIMSK 495 INT = 0; // External Interrupt Request 3 Enable 496 // EIFR 497 INTF = 0; // External Interrupt Flags 498 // PCICR 499 PCIE = 0; // Pin Change Interrupt Enables 500 // PCMSK3 501 PCINT = 0; // Pin Change Enable Masks 502 // PCMSK2 503 // PCMSK1 504 // PCMSK0 505 // PCIFR 506 PCIF = 0; // Pin Change Interrupt Flags 507 // EECR 508 EEPM = 4; // 509 EERIE = 3; // EEProm Ready Interrupt Enable 510 EEMWE = 2; // EEPROM Master Write Enable 511 EEWE = 1; // EEPROM Write Enable 512 EERE = 0; // EEPROM Read Enable 513 514implementation 515 516{$i avrcommon.inc} 517 518procedure ANACOMP0_ISR; external name 'ANACOMP0_ISR'; // Interrupt 1 Analog Comparator 0 519procedure ANACOMP1_ISR; external name 'ANACOMP1_ISR'; // Interrupt 2 Analog Comparator 1 520procedure ANACOMP2_ISR; external name 'ANACOMP2_ISR'; // Interrupt 3 Analog Comparator 2 521procedure ANACOMP3_ISR; external name 'ANACOMP3_ISR'; // Interrupt 4 Analog Comparator 3 522procedure PSC_FAULT_ISR; external name 'PSC_FAULT_ISR'; // Interrupt 5 PSC Fault 523procedure PSC_EC_ISR; external name 'PSC_EC_ISR'; // Interrupt 6 PSC End of Cycle 524procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 7 External Interrupt Request 0 525procedure INT1_ISR; external name 'INT1_ISR'; // Interrupt 8 External Interrupt Request 1 526procedure INT2_ISR; external name 'INT2_ISR'; // Interrupt 9 External Interrupt Request 2 527procedure INT3_ISR; external name 'INT3_ISR'; // Interrupt 10 External Interrupt Request 3 528procedure TIMER1_CAPT_ISR; external name 'TIMER1_CAPT_ISR'; // Interrupt 11 Timer/Counter1 Capture Event 529procedure TIMER1_COMPA_ISR; external name 'TIMER1_COMPA_ISR'; // Interrupt 12 Timer/Counter1 Compare Match A 530procedure TIMER1_COMPB_ISR; external name 'TIMER1_COMPB_ISR'; // Interrupt 13 Timer/Counter1 Compare Match B 531procedure TIMER1_OVF_ISR; external name 'TIMER1_OVF_ISR'; // Interrupt 14 Timer1/Counter1 Overflow 532procedure TIMER0_COMPA_ISR; external name 'TIMER0_COMPA_ISR'; // Interrupt 15 Timer/Counter0 Compare Match A 533procedure TIMER0_COMPB_ISR; external name 'TIMER0_COMPB_ISR'; // Interrupt 16 Timer/Counter0 Compare Match B 534procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 17 Timer/Counter0 Overflow 535procedure CAN_INT_ISR; external name 'CAN_INT_ISR'; // Interrupt 18 CAN MOB, Burst, General Errors 536procedure CAN_TOVF_ISR; external name 'CAN_TOVF_ISR'; // Interrupt 19 CAN Timer Overflow 537procedure LIN_TC_ISR; external name 'LIN_TC_ISR'; // Interrupt 20 LIN Transfer Complete 538procedure LIN_ERR_ISR; external name 'LIN_ERR_ISR'; // Interrupt 21 LIN Error 539procedure PCINT0_ISR; external name 'PCINT0_ISR'; // Interrupt 22 Pin Change Interrupt Request 0 540procedure PCINT1_ISR; external name 'PCINT1_ISR'; // Interrupt 23 Pin Change Interrupt Request 1 541procedure PCINT2_ISR; external name 'PCINT2_ISR'; // Interrupt 24 Pin Change Interrupt Request 2 542procedure PCINT3_ISR; external name 'PCINT3_ISR'; // Interrupt 25 Pin Change Interrupt Request 3 543procedure SPI__STC_ISR; external name 'SPI__STC_ISR'; // Interrupt 26 SPI Serial Transfer Complete 544procedure ADC_ISR; external name 'ADC_ISR'; // Interrupt 27 ADC Conversion Complete 545procedure WDT_ISR; external name 'WDT_ISR'; // Interrupt 28 Watchdog Time-Out Interrupt 546procedure EE_READY_ISR; external name 'EE_READY_ISR'; // Interrupt 29 EEPROM Ready 547procedure SPM_READY_ISR; external name 'SPM_READY_ISR'; // Interrupt 30 Store Program Memory Read 548 549procedure _FPC_start; assembler; nostackframe; 550label 551 _start; 552 asm 553 .init 554 .globl _start 555 556 jmp _start 557 jmp ANACOMP0_ISR 558 jmp ANACOMP1_ISR 559 jmp ANACOMP2_ISR 560 jmp ANACOMP3_ISR 561 jmp PSC_FAULT_ISR 562 jmp PSC_EC_ISR 563 jmp INT0_ISR 564 jmp INT1_ISR 565 jmp INT2_ISR 566 jmp INT3_ISR 567 jmp TIMER1_CAPT_ISR 568 jmp TIMER1_COMPA_ISR 569 jmp TIMER1_COMPB_ISR 570 jmp TIMER1_OVF_ISR 571 jmp TIMER0_COMPA_ISR 572 jmp TIMER0_COMPB_ISR 573 jmp TIMER0_OVF_ISR 574 jmp CAN_INT_ISR 575 jmp CAN_TOVF_ISR 576 jmp LIN_TC_ISR 577 jmp LIN_ERR_ISR 578 jmp PCINT0_ISR 579 jmp PCINT1_ISR 580 jmp PCINT2_ISR 581 jmp PCINT3_ISR 582 jmp SPI__STC_ISR 583 jmp ADC_ISR 584 jmp WDT_ISR 585 jmp EE_READY_ISR 586 jmp SPM_READY_ISR 587 588 {$i start.inc} 589 590 .weak ANACOMP0_ISR 591 .weak ANACOMP1_ISR 592 .weak ANACOMP2_ISR 593 .weak ANACOMP3_ISR 594 .weak PSC_FAULT_ISR 595 .weak PSC_EC_ISR 596 .weak INT0_ISR 597 .weak INT1_ISR 598 .weak INT2_ISR 599 .weak INT3_ISR 600 .weak TIMER1_CAPT_ISR 601 .weak TIMER1_COMPA_ISR 602 .weak TIMER1_COMPB_ISR 603 .weak TIMER1_OVF_ISR 604 .weak TIMER0_COMPA_ISR 605 .weak TIMER0_COMPB_ISR 606 .weak TIMER0_OVF_ISR 607 .weak CAN_INT_ISR 608 .weak CAN_TOVF_ISR 609 .weak LIN_TC_ISR 610 .weak LIN_ERR_ISR 611 .weak PCINT0_ISR 612 .weak PCINT1_ISR 613 .weak PCINT2_ISR 614 .weak PCINT3_ISR 615 .weak SPI__STC_ISR 616 .weak ADC_ISR 617 .weak WDT_ISR 618 .weak EE_READY_ISR 619 .weak SPM_READY_ISR 620 621 .set ANACOMP0_ISR, Default_IRQ_handler 622 .set ANACOMP1_ISR, Default_IRQ_handler 623 .set ANACOMP2_ISR, Default_IRQ_handler 624 .set ANACOMP3_ISR, Default_IRQ_handler 625 .set PSC_FAULT_ISR, Default_IRQ_handler 626 .set PSC_EC_ISR, Default_IRQ_handler 627 .set INT0_ISR, Default_IRQ_handler 628 .set INT1_ISR, Default_IRQ_handler 629 .set INT2_ISR, Default_IRQ_handler 630 .set INT3_ISR, Default_IRQ_handler 631 .set TIMER1_CAPT_ISR, Default_IRQ_handler 632 .set TIMER1_COMPA_ISR, Default_IRQ_handler 633 .set TIMER1_COMPB_ISR, Default_IRQ_handler 634 .set TIMER1_OVF_ISR, Default_IRQ_handler 635 .set TIMER0_COMPA_ISR, Default_IRQ_handler 636 .set TIMER0_COMPB_ISR, Default_IRQ_handler 637 .set TIMER0_OVF_ISR, Default_IRQ_handler 638 .set CAN_INT_ISR, Default_IRQ_handler 639 .set CAN_TOVF_ISR, Default_IRQ_handler 640 .set LIN_TC_ISR, Default_IRQ_handler 641 .set LIN_ERR_ISR, Default_IRQ_handler 642 .set PCINT0_ISR, Default_IRQ_handler 643 .set PCINT1_ISR, Default_IRQ_handler 644 .set PCINT2_ISR, Default_IRQ_handler 645 .set PCINT3_ISR, Default_IRQ_handler 646 .set SPI__STC_ISR, Default_IRQ_handler 647 .set ADC_ISR, Default_IRQ_handler 648 .set WDT_ISR, Default_IRQ_handler 649 .set EE_READY_ISR, Default_IRQ_handler 650 .set SPM_READY_ISR, Default_IRQ_handler 651 end; 652 653end. 654