atmega64hve2.pp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. unit ATmega64HVE2;
  2. {$goto on}
  3. interface
  4. var
  5. PINA: byte absolute $20; // Port A Input Pins
  6. DDRA: byte absolute $21; // Port A Data Direction Register
  7. PORTA: byte absolute $22; // Port A Data Register
  8. PINB: byte absolute $23; // Port B Input Pins
  9. DDRB: byte absolute $24; // Port B Data Direction Register
  10. PORTB: byte absolute $25; // Port B Data Register
  11. TIFR0: byte absolute $35; // Timer/Counter Interrupt Flag register
  12. TIFR1: byte absolute $36; // Timer/Counter Interrupt Flag register
  13. PCIFR: byte absolute $3B; // Pin Change Interrupt Flag Register
  14. EIFR: byte absolute $3C; // External Interrupt Flag Register
  15. EIMSK: byte absolute $3D; // External Interrupt Mask Register
  16. GPIOR0: byte absolute $3E; // General Purpose IO Register 0
  17. EECR: byte absolute $3F; // EEPROM Control Register
  18. EEDR: byte absolute $40; // EEPROM Data Register
  19. EEAR: word absolute $41; // EEPROM Read/Write Access
  20. EEARL: byte absolute $41; // EEPROM Read/Write Access
  21. EEARH: byte absolute $42; // EEPROM Read/Write Access;
  22. GTCCR: byte absolute $43; // General Timer/Counter Control Register
  23. TCCR0A: byte absolute $44; // Timer/Counter 0 Control Register A
  24. TCCR0B: byte absolute $45; // Timer/Counter0 Control Register B
  25. TCNT0: word absolute $46; // Timer Counter 0 Bytes
  26. TCNT0L: byte absolute $46; // Timer Counter 0 Bytes
  27. TCNT0H: byte absolute $47; // Timer Counter 0 Bytes;
  28. OCR0A: byte absolute $48; // Output Compare Register 0A
  29. OCR0B: byte absolute $49; // Output Compare Register B
  30. GPIOR1: byte absolute $4A; // General Purpose IO Register 1
  31. GPIOR2: byte absolute $4B; // General Purpose IO Register 2
  32. SPCR: byte absolute $4C; // SPI Control Register
  33. SPSR: byte absolute $4D; // SPI Status Register
  34. SPDR: byte absolute $4E; // SPI Data Register
  35. SMCR: byte absolute $53; // Sleep Mode Control Register
  36. MCUSR: byte absolute $54; // MCU Status Register
  37. MCUCR: byte absolute $55; // MCU Control Register
  38. SPMCSR: byte absolute $57; // Store Program Memory Control and Status Register
  39. SP: word absolute $5D; // Stack Pointer
  40. SPL: byte absolute $5D; // Stack Pointer
  41. SPH: byte absolute $5E; // Stack Pointer ;
  42. SREG: byte absolute $5F; // Status Register
  43. WDTCSR: byte absolute $60; // Watchdog Timer Control Register
  44. CLKPR: byte absolute $61; // Clock Prescale Register
  45. WUTCSR: byte absolute $62; // Wake-up Timer Control and Status Register
  46. WDTCLR: byte absolute $63; // Watchdog Timer Configuration Lock Register
  47. PRR0: byte absolute $64; // Power Reduction Register 0
  48. SOSCCALA: byte absolute $66; // Slow Oscillator Calibration Register A
  49. SOSCCALB: byte absolute $67; // Oscillator Calibration Register B
  50. PCICR: byte absolute $68; // Pin Change Interrupt Control Register
  51. EICRA: byte absolute $69; // External Interrupt Control Register
  52. PCMSK0: byte absolute $6B; // Pin Change Enable Mask Register 0
  53. PCMSK1: byte absolute $6C; // Pin Change Enable Mask Register 1
  54. TIMSK0: byte absolute $6E; // Timer/Counter Interrupt Mask Register
  55. TIMSK1: byte absolute $6F; // Timer/Counter Interrupt Mask Register
  56. DIDR0: byte absolute $7E; // Digital Input Disable Register
  57. TCCR1A: byte absolute $80; // Timer/Counter 1 Control Register A
  58. TCCR1B: byte absolute $81; // Timer/Counter1 Control Register B
  59. TCNT1: word absolute $84; // Timer Counter 1 Bytes
  60. TCNT1L: byte absolute $84; // Timer Counter 1 Bytes
  61. TCNT1H: byte absolute $85; // Timer Counter 1 Bytes;
  62. OCR1A: byte absolute $88; // Output Compare Register 1A
  63. OCR1B: byte absolute $89; // Output Compare Register B
  64. LINCR: byte absolute $C0; // LIN Control Register
  65. LINSIR: byte absolute $C1; // LIN Status and Interrupt Register
  66. LINENIR: byte absolute $C2; // LIN Enable Interrupt Register
  67. LINERR: byte absolute $C3; // LIN Error Register
  68. LINBTR: byte absolute $C4; // LIN Bit Timing Register
  69. LINBRRL: byte absolute $C5; // LIN Baud Rate Low Register
  70. LINBRRH: byte absolute $C6; // LIN Baud Rate High Register
  71. LINDLR: byte absolute $C7; // LIN Data Length Register
  72. LINIDR: byte absolute $C8; // LIN Identifier Register
  73. LINSEL: byte absolute $C9; // LIN Data Buffer Selection Register
  74. LINDAT: byte absolute $CA; // LIN Data Register
  75. BGCSRA: byte absolute $D1; // Bandgap Control and Status Register A
  76. BGCRB: byte absolute $D2; // Band Gap Calibration Register B
  77. BGCRA: byte absolute $D3; // Band Gap Calibration Register A
  78. BGLR: byte absolute $D4; // Band Gap Lock Register
  79. PLLCSR: byte absolute $D8; // PLL Control and Status Register
  80. PBOV: byte absolute $DC; // Port B Override
  81. ADSCSRA: byte absolute $E0; // ADC Synchronization Control and Status Register
  82. ADSCSRB: byte absolute $E1; // ADC Synchronization Control and Status Register
  83. ADCRA: byte absolute $E2; // ADC Control Register A
  84. ADCRB: byte absolute $E3; // ADC Control Register B
  85. ADCRC: byte absolute $E4; // ADC Control Register B
  86. ADCRD: byte absolute $E5; // ADC Control Register D
  87. ADCRE: byte absolute $E6; // ADC Control Register E
  88. ADIFR: byte absolute $E7; // ADC Interrupt Flag Register
  89. ADIMR: byte absolute $E8; // ADC Interrupt Mask Register
  90. CADRCL: word absolute $E9; // CC-ADC Regulator Current Comparator Threshold Level
  91. CADRCLL: byte absolute $E9; // CC-ADC Regulator Current Comparator Threshold Level
  92. CADRCLH: byte absolute $EA; // CC-ADC Regulator Current Comparator Threshold Level;
  93. CADIC: word absolute $EB; // C-ADC Instantaneous Conversion Result
  94. CADICL: byte absolute $EB; // C-ADC Instantaneous Conversion Result
  95. CADICH: byte absolute $EC; // C-ADC Instantaneous Conversion Result;
  96. CADAC0: byte absolute $ED; // C-ADC Accumulated Conversion Result
  97. CADAC1: byte absolute $EE; // C-ADC Accumulated Conversion Result
  98. CADAC2: byte absolute $EF; // C-ADC Accumulated Conversion Result
  99. CADAC3: byte absolute $F0; // C-ADC Accumulated Conversion Result
  100. VADIC: word absolute $F1; // V-ADC Instantaneous Conversion Result
  101. VADICL: byte absolute $F1; // V-ADC Instantaneous Conversion Result
  102. VADICH: byte absolute $F2; // V-ADC Instantaneous Conversion Result;
  103. VADAC0: byte absolute $F3; // V-ADC Accumulated Conversion Result
  104. VADAC1: byte absolute $F4; // V-ADC Accumulated Conversion Result
  105. VADAC2: byte absolute $F5; // V-ADC Accumulated Conversion Result
  106. VADAC3: byte absolute $F6; // V-ADC Accumulated Conversion Result
  107. const
  108. // Port A Data Register
  109. PA0 = $00;
  110. PA1 = $01;
  111. // Port B Data Register
  112. PB0 = $00;
  113. PB1 = $01;
  114. PB2 = $02;
  115. PB3 = $03;
  116. PB4 = $04;
  117. PB5 = $05;
  118. PB6 = $06;
  119. PB7 = $07;
  120. // Timer/Counter Interrupt Flag register
  121. TOV0 = $00;
  122. OCF0A = $01;
  123. OCF0B = $02;
  124. ICF0 = $03;
  125. // Timer/Counter Interrupt Flag register
  126. TOV1 = $00;
  127. OCF1A = $01;
  128. OCF1B = $02;
  129. ICF1 = $03;
  130. // Pin Change Interrupt Flag Register
  131. PCIF0 = $00; // Pin Change Interrupt Flags
  132. PCIF1 = $01; // Pin Change Interrupt Flags
  133. // External Interrupt Flag Register
  134. INTF0 = $00;
  135. // External Interrupt Mask Register
  136. INT0 = $00;
  137. // EEPROM Control Register
  138. EERE = $00;
  139. EEPE = $01;
  140. EEMPE = $02;
  141. EERIE = $03;
  142. EEPM0 = $04;
  143. EEPM1 = $05;
  144. // General Timer/Counter Control Register
  145. PSRSYNC = $00;
  146. TSM = $07;
  147. // Timer/Counter 0 Control Register A
  148. WGM00 = $00;
  149. ICS0 = $03;
  150. ICES0 = $04;
  151. ICNC0 = $05;
  152. ICEN0 = $06;
  153. TCW0 = $07;
  154. // Timer/Counter0 Control Register B
  155. CS00 = $00;
  156. CS01 = $01;
  157. CS02 = $02;
  158. // SPI Control Register
  159. SPR0 = $00; // SPI Clock Rate Selects
  160. SPR1 = $01; // SPI Clock Rate Selects
  161. CPHA = $02;
  162. CPOL = $03;
  163. MSTR = $04;
  164. DORD = $05;
  165. SPE = $06;
  166. SPIE = $07;
  167. // SPI Status Register
  168. SPI2X = $00;
  169. WCOL = $06;
  170. SPIF = $07;
  171. // Sleep Mode Control Register
  172. SE = $00;
  173. SM0 = $01; // Sleep Mode Select bits
  174. SM1 = $02; // Sleep Mode Select bits
  175. SM2 = $03; // Sleep Mode Select bits
  176. // MCU Status Register
  177. PORF = $00;
  178. EXTRF = $01;
  179. BODRF = $02;
  180. WDRF = $03;
  181. OCDRF = $04;
  182. // MCU Control Register
  183. IVCE = $00;
  184. IVSEL = $01;
  185. PUD = $04;
  186. CKOE = $05;
  187. // Store Program Memory Control and Status Register
  188. SPMEN = $00;
  189. PGERS = $01;
  190. PGWRT = $02;
  191. LBSET = $03;
  192. RWWSRE = $04;
  193. SIGRD = $05;
  194. RWWSB = $06;
  195. SPMIE = $07;
  196. // Status Register
  197. C = $00;
  198. Z = $01;
  199. N = $02;
  200. V = $03;
  201. S = $04;
  202. H = $05;
  203. T = $06;
  204. I = $07;
  205. // Watchdog Timer Control Register
  206. WDE = $03;
  207. WDCE = $04;
  208. WDP0 = $00; // Watchdog Timer Prescaler Bits
  209. WDP1 = $01; // Watchdog Timer Prescaler Bits
  210. WDP2 = $02; // Watchdog Timer Prescaler Bits
  211. WDP3 = $05; // Watchdog Timer Prescaler Bits
  212. WDIE = $06;
  213. WDIF = $07;
  214. // Clock Prescale Register
  215. CLKPS0 = $00; // Clock Prescaler Select Bits
  216. CLKPS1 = $01; // Clock Prescaler Select Bits
  217. CLKPCE = $07;
  218. // Wake-up Timer Control and Status Register
  219. WUTP0 = $00; // Wake-up Timer Prescaler Bits
  220. WUTP1 = $01; // Wake-up Timer Prescaler Bits
  221. WUTP2 = $02; // Wake-up Timer Prescaler Bits
  222. WUTE = $03;
  223. WUTR = $04;
  224. WUTIE = $06;
  225. WUTIF = $07;
  226. // Watchdog Timer Configuration Lock Register
  227. WDCLE = $00;
  228. WDCL0 = $01; // Watchdog Timer Comfiguration Lock bits
  229. WDCL1 = $02; // Watchdog Timer Comfiguration Lock bits
  230. // Power Reduction Register 0
  231. PRTIM0 = $00;
  232. PRTIM1 = $01;
  233. PRSPI = $02;
  234. PRLIN = $03;
  235. // Pin Change Interrupt Control Register
  236. PCIE0 = $00; // Pin Change Interrupt Enables
  237. PCIE1 = $01; // Pin Change Interrupt Enables
  238. // External Interrupt Control Register
  239. ISC00 = $00;
  240. ISC01 = $01;
  241. // Timer/Counter Interrupt Mask Register
  242. TOIE0 = $00;
  243. OCIE0A = $01;
  244. OCIE0B = $02;
  245. ICIE0 = $03;
  246. // Timer/Counter Interrupt Mask Register
  247. TOIE1 = $00;
  248. OCIE1A = $01;
  249. OCIE1B = $02;
  250. ICIE1 = $03;
  251. // Digital Input Disable Register
  252. PA0DID = $00;
  253. PA1DID = $01;
  254. // Timer/Counter 1 Control Register A
  255. WGM10 = $00;
  256. ICS1 = $03;
  257. ICES1 = $04;
  258. ICNC1 = $05;
  259. ICEN1 = $06;
  260. TCW1 = $07;
  261. // Timer/Counter1 Control Register B
  262. CS10 = $00; // Clock Select1 bis
  263. CS11 = $01; // Clock Select1 bis
  264. CS12 = $02; // Clock Select1 bis
  265. // LIN Control Register
  266. LCMD0 = $00; // LIN Command and Mode bits
  267. LCMD1 = $01; // LIN Command and Mode bits
  268. LCMD2 = $02; // LIN Command and Mode bits
  269. LENA = $03;
  270. LCONF0 = $04; // LIN Configuration bits
  271. LCONF1 = $05; // LIN Configuration bits
  272. LIN13 = $06;
  273. LSWRES = $07;
  274. // LIN Status and Interrupt Register
  275. LRXOK = $00;
  276. LTXOK = $01;
  277. LIDOK = $02;
  278. LERR = $03;
  279. LBUSY = $04;
  280. LIDST0 = $05; // Identifier Status bits
  281. LIDST1 = $06; // Identifier Status bits
  282. LIDST2 = $07; // Identifier Status bits
  283. // LIN Enable Interrupt Register
  284. LENRXOK = $00;
  285. LENTXOK = $01;
  286. LENIDOK = $02;
  287. LENERR = $03;
  288. // LIN Error Register
  289. LBERR = $00;
  290. LCERR = $01;
  291. LPERR = $02;
  292. LSERR = $03;
  293. LFERR = $04;
  294. LOVERR = $05;
  295. LTOERR = $06;
  296. LABORT = $07;
  297. // LIN Bit Timing Register
  298. LBT0 = $00; // LIN Bit Timing bits
  299. LBT1 = $01; // LIN Bit Timing bits
  300. LBT2 = $02; // LIN Bit Timing bits
  301. LBT3 = $03; // LIN Bit Timing bits
  302. LBT4 = $04; // LIN Bit Timing bits
  303. LBT5 = $05; // LIN Bit Timing bits
  304. LDISR = $07;
  305. // LIN Baud Rate Low Register
  306. LDIV0 = $00;
  307. LDIV1 = $01;
  308. LDIV2 = $02;
  309. LDIV3 = $03;
  310. LDIV4 = $04;
  311. LDIV5 = $05;
  312. LDIV6 = $06;
  313. LDIV7 = $07;
  314. // LIN Data Length Register
  315. LRXDL0 = $00; // LIN Receive Data Length bits
  316. LRXDL1 = $01; // LIN Receive Data Length bits
  317. LRXDL2 = $02; // LIN Receive Data Length bits
  318. LRXDL3 = $03; // LIN Receive Data Length bits
  319. LTXDL0 = $04; // LIN Transmit Data Length bits
  320. LTXDL1 = $05; // LIN Transmit Data Length bits
  321. LTXDL2 = $06; // LIN Transmit Data Length bits
  322. LTXDL3 = $07; // LIN Transmit Data Length bits
  323. // LIN Identifier Register
  324. LID0 = $00; // Identifier bit 5 or Data Length bits
  325. LID1 = $01; // Identifier bit 5 or Data Length bits
  326. LID2 = $02; // Identifier bit 5 or Data Length bits
  327. LID3 = $03; // Identifier bit 5 or Data Length bits
  328. LID4 = $04; // Identifier bit 5 or Data Length bits
  329. LID5 = $05; // Identifier bit 5 or Data Length bits
  330. LP0 = $06; // Parity bits
  331. LP1 = $07; // Parity bits
  332. // LIN Data Buffer Selection Register
  333. LINDX0 = $00; // FIFO LIN Data Buffer Index bits
  334. LINDX1 = $01; // FIFO LIN Data Buffer Index bits
  335. LINDX2 = $02; // FIFO LIN Data Buffer Index bits
  336. LAINC = $03;
  337. // LIN Data Register
  338. LDATA0 = $00;
  339. LDATA1 = $01;
  340. LDATA2 = $02;
  341. LDATA3 = $03;
  342. LDATA4 = $04;
  343. LDATA5 = $05;
  344. LDATA6 = $06;
  345. LDATA7 = $07;
  346. // Bandgap Control and Status Register A
  347. BGSC0 = $00; // Band Gap Sample Configuration
  348. BGSC1 = $01; // Band Gap Sample Configuration
  349. BGSC2 = $02; // Band Gap Sample Configuration
  350. // Band Gap Calibration Register B
  351. BGCL0 = $00; // Band Gap Calibration Linear
  352. BGCL1 = $01; // Band Gap Calibration Linear
  353. BGCL2 = $02; // Band Gap Calibration Linear
  354. BGCL3 = $03; // Band Gap Calibration Linear
  355. BGCL4 = $04; // Band Gap Calibration Linear
  356. BGCL5 = $05; // Band Gap Calibration Linear
  357. BGCL6 = $06; // Band Gap Calibration Linear
  358. BGCL7 = $07; // Band Gap Calibration Linear
  359. // Band Gap Calibration Register A
  360. BGCN0 = $00; // Band Gap Calibration Nominal
  361. BGCN1 = $01; // Band Gap Calibration Nominal
  362. BGCN2 = $02; // Band Gap Calibration Nominal
  363. BGCN3 = $03; // Band Gap Calibration Nominal
  364. BGCN4 = $04; // Band Gap Calibration Nominal
  365. BGCN5 = $05; // Band Gap Calibration Nominal
  366. BGCN6 = $06; // Band Gap Calibration Nominal
  367. BGCN7 = $07; // Band Gap Calibration Nominal
  368. // Band Gap Lock Register
  369. BGPL = $00;
  370. BGPLE = $01;
  371. // PLL Control and Status Register
  372. PLLCIE = $00;
  373. PLLCIF = $01;
  374. LOCK = $04;
  375. SWEN = $05;
  376. // Port B Override
  377. PBOE0 = $00;
  378. PBOE3 = $03;
  379. PBOVCE = $07;
  380. // ADC Synchronization Control and Status Register
  381. SCMD0 = $00; // Synchronization Command
  382. SCMD1 = $01; // Synchronization Command
  383. SBSY = $02;
  384. // ADC Synchronization Control and Status Register
  385. CADICRB = $00;
  386. CADACRB = $01;
  387. CADICPS = $02;
  388. VADICRB = $04;
  389. VADACRB = $05;
  390. VADICPS = $06;
  391. // ADC Control Register A
  392. CKSEL = $00;
  393. ADCMS0 = $01; // C-ADC Chopper Mode Select
  394. ADCMS1 = $02; // C-ADC Chopper Mode Select
  395. ADPSEL = $03;
  396. // ADC Control Register B
  397. ADADES0 = $00; // Accumulated Decimation Ratio Select
  398. ADADES1 = $01; // Accumulated Decimation Ratio Select
  399. ADADES2 = $02; // Accumulated Decimation Ratio Select
  400. ADIDES0 = $03; // Instantaneous Decimation Ratio Select
  401. ADIDES1 = $04; // Instantaneous Decimation Ratio Select
  402. // ADC Control Register B
  403. CADRCT0 = $00; // C-ADC Regular Current Count Threshold
  404. CADRCT1 = $01; // C-ADC Regular Current Count Threshold
  405. CADRCT2 = $02; // C-ADC Regular Current Count Threshold
  406. CADRCT3 = $03; // C-ADC Regular Current Count Threshold
  407. CADRCM0 = $04; // C-ADC Regular Current Comparator Mode
  408. CADRCM1 = $05; // C-ADC Regular Current Comparator Mode
  409. CADEN = $07;
  410. // ADC Control Register D
  411. CADDSEL = $00;
  412. CADPDM0 = $01; // C-ADC Pin Diagnostics Mode
  413. CADPDM1 = $02; // C-ADC Pin Diagnostics Mode
  414. CADG0 = $03; // C-ADC Gain
  415. CADG1 = $04; // C-ADC Gain
  416. CADG2 = $05; // C-ADC Gain
  417. // ADC Control Register E
  418. VADMUX0 = $00; // V-ADC Channel Select
  419. VADMUX1 = $01; // V-ADC Channel Select
  420. VADMUX2 = $02; // V-ADC Channel Select
  421. VADPDM0 = $03; // V-ADC Pin Diagnostics Mode
  422. VADPDM1 = $04; // V-ADC Pin Diagnostics Mode
  423. VADREFS = $05;
  424. VADEN = $07;
  425. // ADC Interrupt Flag Register
  426. CADICIF = $00;
  427. CADACIF = $01;
  428. CADRCIF = $02;
  429. VADICIF = $04;
  430. VADACIF = $05;
  431. // ADC Interrupt Mask Register
  432. CADICIE = $00;
  433. CADACIE = $01;
  434. CADRCIE = $02;
  435. VADICIE = $04;
  436. VADACIE = $05;
  437. implementation
  438. {$i avrcommon.inc}
  439. procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 1 External Interrupt 0
  440. procedure PCINT0_ISR; external name 'PCINT0_ISR'; // Interrupt 2 Pin Change Interrupt 0
  441. procedure PCINT1_ISR; external name 'PCINT1_ISR'; // Interrupt 3 Pin Change Interrupt 1
  442. procedure WDT_ISR; external name 'WDT_ISR'; // Interrupt 4 Watchdog Timeout Interrupt
  443. procedure WAKEUP_ISR; external name 'WAKEUP_ISR'; // Interrupt 5 Wakeup Timer Overflow
  444. procedure TIMER1_IC_ISR; external name 'TIMER1_IC_ISR'; // Interrupt 6 Timer 1 Input capture
  445. procedure TIMER1_COMPA_ISR; external name 'TIMER1_COMPA_ISR'; // Interrupt 7 Timer 1 Compare Match A
  446. procedure TIMER1_COMPB_ISR; external name 'TIMER1_COMPB_ISR'; // Interrupt 8 Timer 1 Compare Match B
  447. procedure TIMER1_OVF_ISR; external name 'TIMER1_OVF_ISR'; // Interrupt 9 Timer 1 overflow
  448. procedure TIMER0_IC_ISR; external name 'TIMER0_IC_ISR'; // Interrupt 10 Timer 0 Input Capture
  449. procedure TIMER0_COMPA_ISR; external name 'TIMER0_COMPA_ISR'; // Interrupt 11 Timer 0 Comapre Match A
  450. procedure TIMER0_COMPB_ISR; external name 'TIMER0_COMPB_ISR'; // Interrupt 12 Timer 0 Compare Match B
  451. procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 13 Timer 0 Overflow
  452. procedure LIN_STATUS_ISR; external name 'LIN_STATUS_ISR'; // Interrupt 14 LIN Status Interrupt
  453. procedure LIN_ERROR_ISR; external name 'LIN_ERROR_ISR'; // Interrupt 15 LIN Error Interrupt
  454. procedure SPI_STC_ISR; external name 'SPI_STC_ISR'; // Interrupt 16 SPI Serial transfer complete
  455. procedure VADC_CONV_ISR; external name 'VADC_CONV_ISR'; // Interrupt 17 Voltage ADC Instantaneous Conversion Complete
  456. procedure VADC_ACC_ISR; external name 'VADC_ACC_ISR'; // Interrupt 18 Voltage ADC Accumulated Conversion Complete
  457. procedure CADC_CONV_ISR; external name 'CADC_CONV_ISR'; // Interrupt 19 C-ADC Instantaneous Conversion Complete
  458. procedure CADC_REG_CUR_ISR; external name 'CADC_REG_CUR_ISR'; // Interrupt 20 C-ADC Regular Current
  459. procedure CADC_ACC_ISR; external name 'CADC_ACC_ISR'; // Interrupt 21 C-ADC Accumulated Conversion Complete
  460. procedure EE_READY_ISR; external name 'EE_READY_ISR'; // Interrupt 22 EEPROM Ready
  461. procedure SPM_ISR; external name 'SPM_ISR'; // Interrupt 23 SPM Ready
  462. procedure PLL_ISR; external name 'PLL_ISR'; // Interrupt 24 PLL Lock Change Interrupt
  463. procedure _FPC_start; assembler; nostackframe;
  464. label
  465. _start;
  466. asm
  467. .init
  468. .globl _start
  469. jmp _start
  470. jmp INT0_ISR
  471. jmp PCINT0_ISR
  472. jmp PCINT1_ISR
  473. jmp WDT_ISR
  474. jmp WAKEUP_ISR
  475. jmp TIMER1_IC_ISR
  476. jmp TIMER1_COMPA_ISR
  477. jmp TIMER1_COMPB_ISR
  478. jmp TIMER1_OVF_ISR
  479. jmp TIMER0_IC_ISR
  480. jmp TIMER0_COMPA_ISR
  481. jmp TIMER0_COMPB_ISR
  482. jmp TIMER0_OVF_ISR
  483. jmp LIN_STATUS_ISR
  484. jmp LIN_ERROR_ISR
  485. jmp SPI_STC_ISR
  486. jmp VADC_CONV_ISR
  487. jmp VADC_ACC_ISR
  488. jmp CADC_CONV_ISR
  489. jmp CADC_REG_CUR_ISR
  490. jmp CADC_ACC_ISR
  491. jmp EE_READY_ISR
  492. jmp SPM_ISR
  493. jmp PLL_ISR
  494. {$i start.inc}
  495. .weak INT0_ISR
  496. .weak PCINT0_ISR
  497. .weak PCINT1_ISR
  498. .weak WDT_ISR
  499. .weak WAKEUP_ISR
  500. .weak TIMER1_IC_ISR
  501. .weak TIMER1_COMPA_ISR
  502. .weak TIMER1_COMPB_ISR
  503. .weak TIMER1_OVF_ISR
  504. .weak TIMER0_IC_ISR
  505. .weak TIMER0_COMPA_ISR
  506. .weak TIMER0_COMPB_ISR
  507. .weak TIMER0_OVF_ISR
  508. .weak LIN_STATUS_ISR
  509. .weak LIN_ERROR_ISR
  510. .weak SPI_STC_ISR
  511. .weak VADC_CONV_ISR
  512. .weak VADC_ACC_ISR
  513. .weak CADC_CONV_ISR
  514. .weak CADC_REG_CUR_ISR
  515. .weak CADC_ACC_ISR
  516. .weak EE_READY_ISR
  517. .weak SPM_ISR
  518. .weak PLL_ISR
  519. .set INT0_ISR, Default_IRQ_handler
  520. .set PCINT0_ISR, Default_IRQ_handler
  521. .set PCINT1_ISR, Default_IRQ_handler
  522. .set WDT_ISR, Default_IRQ_handler
  523. .set WAKEUP_ISR, Default_IRQ_handler
  524. .set TIMER1_IC_ISR, Default_IRQ_handler
  525. .set TIMER1_COMPA_ISR, Default_IRQ_handler
  526. .set TIMER1_COMPB_ISR, Default_IRQ_handler
  527. .set TIMER1_OVF_ISR, Default_IRQ_handler
  528. .set TIMER0_IC_ISR, Default_IRQ_handler
  529. .set TIMER0_COMPA_ISR, Default_IRQ_handler
  530. .set TIMER0_COMPB_ISR, Default_IRQ_handler
  531. .set TIMER0_OVF_ISR, Default_IRQ_handler
  532. .set LIN_STATUS_ISR, Default_IRQ_handler
  533. .set LIN_ERROR_ISR, Default_IRQ_handler
  534. .set SPI_STC_ISR, Default_IRQ_handler
  535. .set VADC_CONV_ISR, Default_IRQ_handler
  536. .set VADC_ACC_ISR, Default_IRQ_handler
  537. .set CADC_CONV_ISR, Default_IRQ_handler
  538. .set CADC_REG_CUR_ISR, Default_IRQ_handler
  539. .set CADC_ACC_ISR, Default_IRQ_handler
  540. .set EE_READY_ISR, Default_IRQ_handler
  541. .set SPM_ISR, Default_IRQ_handler
  542. .set PLL_ISR, Default_IRQ_handler
  543. end;
  544. end.