atmega16hvb.pp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. unit ATmega16HVB;
  2. interface
  3. var
  4. // AD_CONVERTER
  5. VADMUX : byte absolute $00+$7C; // The VADC multiplexer Selection Register
  6. VADC : word absolute $00+$78; // VADC Data Register Bytes
  7. VADCL : byte absolute $00+$78; // VADC Data Register Bytes
  8. VADCH : byte absolute $00+$78+1; // VADC Data Register Bytes
  9. VADCSR : byte absolute $00+$7A; // The VADC Control and Status register
  10. // WATCHDOG
  11. WDTCSR : byte absolute $00+$60; // Watchdog Timer Control Register
  12. // FET
  13. FCSR : byte absolute $00+$F0; // FET Control and Status Register
  14. // SPI
  15. SPCR : byte absolute $00+$4c; // SPI Control Register
  16. SPSR : byte absolute $00+$4d; // SPI Status Register
  17. SPDR : byte absolute $00+$4e; // SPI Data Register
  18. // EEPROM
  19. EEAR : word absolute $00+$41; // EEPROM Read/Write Access
  20. EEARL : byte absolute $00+$41; // EEPROM Read/Write Access
  21. EEARH : byte absolute $00+$41+1; // EEPROM Read/Write Access
  22. EEDR : byte absolute $00+$40; // EEPROM Data Register
  23. EECR : byte absolute $00+$3F; // EEPROM Control Register
  24. // COULOMB_COUNTER
  25. CADCSRA : byte absolute $00+$E6; // CC-ADC Control and Status Register A
  26. CADCSRB : byte absolute $00+$E7; // CC-ADC Control and Status Register B
  27. CADCSRC : byte absolute $00+$E8; // CC-ADC Control and Status Register C
  28. CADIC : word absolute $00+$E4; // CC-ADC Instantaneous Current
  29. CADICL : byte absolute $00+$E4; // CC-ADC Instantaneous Current
  30. CADICH : byte absolute $00+$E4+1; // CC-ADC Instantaneous Current
  31. CADAC3 : byte absolute $00+$E3; // ADC Accumulate Current
  32. CADAC2 : byte absolute $00+$E2; // ADC Accumulate Current
  33. CADAC1 : byte absolute $00+$E1; // ADC Accumulate Current
  34. CADAC0 : byte absolute $00+$E0; // ADC Accumulate Current
  35. CADRCC : byte absolute $00+$E9; // CC-ADC Regular Charge Current
  36. CADRDC : byte absolute $00+$EA; // CC-ADC Regular Discharge Current
  37. // TWI
  38. TWBCSR : byte absolute $00+$BE; // TWI Bus Control and Status Register
  39. TWAMR : byte absolute $00+$BD; // TWI (Slave) Address Mask Register
  40. TWBR : byte absolute $00+$B8; // TWI Bit Rate register
  41. TWCR : byte absolute $00+$BC; // TWI Control Register
  42. TWSR : byte absolute $00+$B9; // TWI Status Register
  43. TWDR : byte absolute $00+$BB; // TWI Data register
  44. TWAR : byte absolute $00+$BA; // TWI (Slave) Address register
  45. // EXTERNAL_INTERRUPT
  46. EICRA : byte absolute $00+$69; // External Interrupt Control Register
  47. EIMSK : byte absolute $00+$3D; // External Interrupt Mask Register
  48. EIFR : byte absolute $00+$3C; // External Interrupt Flag Register
  49. PCICR : byte absolute $00+$68; // Pin Change Interrupt Control Register
  50. PCIFR : byte absolute $00+$3B; // Pin Change Interrupt Flag Register
  51. PCMSK1 : byte absolute $00+$6C; // Pin Change Enable Mask Register 1
  52. PCMSK0 : byte absolute $00+$6B; // Pin Change Enable Mask Register 0
  53. // TIMER_COUNTER_1
  54. TCCR1B : byte absolute $00+$81; // Timer/Counter1 Control Register B
  55. TCCR1A : byte absolute $00+$80; // Timer/Counter 1 Control Register A
  56. TCNT1 : word absolute $00+$84; // Timer Counter 1 Bytes
  57. TCNT1L : byte absolute $00+$84; // Timer Counter 1 Bytes
  58. TCNT1H : byte absolute $00+$84+1; // Timer Counter 1 Bytes
  59. OCR1A : byte absolute $00+$88; // Output Compare Register 1A
  60. OCR1B : byte absolute $00+$89; // Output Compare Register B
  61. TIMSK1 : byte absolute $00+$6F; // Timer/Counter Interrupt Mask Register
  62. TIFR1 : byte absolute $00+$36; // Timer/Counter Interrupt Flag register
  63. GTCCR : byte absolute $00+$43; // General Timer/Counter Control Register
  64. // CELL_BALANCING
  65. CBCR : byte absolute $00+$F1; // Cell Balancing Control Register
  66. // BATTERY_PROTECTION
  67. BPPLR : byte absolute $00+$FE; // Battery Protection Parameter Lock Register
  68. BPCR : byte absolute $00+$FD; // Battery Protection Control Register
  69. BPHCTR : byte absolute $00+$FC; // Battery Protection Short-current Timing Register
  70. BPOCTR : byte absolute $00+$FB; // Battery Protection Over-current Timing Register
  71. BPSCTR : byte absolute $00+$FA; // Battery Protection Short-current Timing Register
  72. BPCHCD : byte absolute $00+$F9; // Battery Protection Charge-High-current Detection Level Register
  73. BPDHCD : byte absolute $00+$F8; // Battery Protection Discharge-High-current Detection Level Register
  74. BPCOCD : byte absolute $00+$F7; // Battery Protection Charge-Over-current Detection Level Register
  75. BPDOCD : byte absolute $00+$F6; // Battery Protection Discharge-Over-current Detection Level Register
  76. BPSCD : byte absolute $00+$F5; // Battery Protection Short-Circuit Detection Level Register
  77. BPIFR : byte absolute $00+$F3; // Battery Protection Interrupt Flag Register
  78. BPIMSK : byte absolute $00+$F2; // Battery Protection Interrupt Mask Register
  79. // CHARGER_DETECT
  80. CHGDCSR : byte absolute $00+$D4; // Charger Detect Control and Status Register
  81. // VOLTAGE_REGULATOR
  82. ROCR : byte absolute $00+$C8; // Regulator Operating Condition Register
  83. // BANDGAP
  84. BGCSR : byte absolute $00+$D2; // Bandgap Control and Status Register
  85. BGCRR : byte absolute $00+$D1; // Bandgap Calibration of Resistor Ladder
  86. BGCCR : byte absolute $00+$D0; // Bandgap Calibration Register
  87. // CPU
  88. SREG : byte absolute $00+$5F; // Status Register
  89. SP : word absolute $00+$5D; // Stack Pointer
  90. SPL : byte absolute $00+$5D; // Stack Pointer
  91. SPH : byte absolute $00+$5D+1; // Stack Pointer
  92. MCUCR : byte absolute $00+$55; // MCU Control Register
  93. MCUSR : byte absolute $00+$54; // MCU Status Register
  94. FOSCCAL : byte absolute $00+$66; // Fast Oscillator Calibration Value
  95. OSICSR : byte absolute $00+$37; // Oscillator Sampling Interface Control and Status Register
  96. SMCR : byte absolute $00+$53; // Sleep Mode Control Register
  97. GPIOR2 : byte absolute $00+$4B; // General Purpose IO Register 2
  98. GPIOR1 : byte absolute $00+$4A; // General Purpose IO Register 1
  99. GPIOR0 : byte absolute $00+$3E; // General Purpose IO Register 0
  100. DIDR0 : byte absolute $00+$7E; // Digital Input Disable Register
  101. PRR0 : byte absolute $00+$64; // Power Reduction Register 0
  102. CLKPR : byte absolute $00+$61; // Clock Prescale Register
  103. // PORTA
  104. PORTA : byte absolute $00+$22; // Port A Data Register
  105. DDRA : byte absolute $00+$21; // Port A Data Direction Register
  106. PINA : byte absolute $00+$20; // Port A Input Pins
  107. // PORTB
  108. PORTB : byte absolute $00+$25; // Port B Data Register
  109. DDRB : byte absolute $00+$24; // Port B Data Direction Register
  110. PINB : byte absolute $00+$23; // Port B Input Pins
  111. // PORTC
  112. PORTC : byte absolute $00+$28; // Port C Data Register
  113. PINC : byte absolute $00+$26; // Port C Input Pins
  114. // TIMER_COUNTER_0
  115. TCCR0B : byte absolute $00+$45; // Timer/Counter0 Control Register B
  116. TCCR0A : byte absolute $00+$44; // Timer/Counter 0 Control Register A
  117. TCNT0 : word absolute $00+$46; // Timer Counter 0 Bytes
  118. TCNT0L : byte absolute $00+$46; // Timer Counter 0 Bytes
  119. TCNT0H : byte absolute $00+$46+1; // Timer Counter 0 Bytes
  120. OCR0A : byte absolute $00+$48; // Output Compare Register 0A
  121. OCR0B : byte absolute $00+$49; // Output Compare Register B
  122. TIMSK0 : byte absolute $00+$6E; // Timer/Counter Interrupt Mask Register
  123. TIFR0 : byte absolute $00+$35; // Timer/Counter Interrupt Flag register
  124. // BOOT_LOAD
  125. SPMCSR : byte absolute $00+$57; // Store Program Memory Control and Status Register
  126. const
  127. // VADMUX
  128. // VADCSR
  129. VADEN = 3; // VADC Enable
  130. VADSC = 2; // VADC Satrt Conversion
  131. VADCCIF = 1; // VADC Conversion Complete Interrupt Flag
  132. VADCCIE = 0; // VADC Conversion Complete Interrupt Enable
  133. // WDTCSR
  134. WDIF = 7; // Watchdog Timeout Interrupt Flag
  135. WDIE = 6; // Watchdog Timeout Interrupt Enable
  136. WDP = 0; // Watchdog Timer Prescaler Bits
  137. WDCE = 4; // Watchdog Change Enable
  138. WDE = 3; // Watch Dog Enable
  139. // FCSR
  140. DUVRD = 3; // Deep Under-Voltage Recovery Disable
  141. CPS = 2; // Current Protection Status
  142. DFE = 1; // Discharge FET Enable
  143. CFE = 0; // Charge FET Enable
  144. // SPCR
  145. SPIE = 7; // SPI Interrupt Enable
  146. SPE = 6; // SPI Enable
  147. DORD = 5; // Data Order
  148. MSTR = 4; // Master/Slave Select
  149. CPOL = 3; // Clock polarity
  150. CPHA = 2; // Clock Phase
  151. SPR = 0; // SPI Clock Rate Selects
  152. // SPSR
  153. SPIF = 7; // SPI Interrupt Flag
  154. WCOL = 6; // Write Collision Flag
  155. SPI2X = 0; // Double SPI Speed Bit
  156. // EECR
  157. EEPM = 4; //
  158. EERIE = 3; // EEProm Ready Interrupt Enable
  159. EEMPE = 2; // EEPROM Master Write Enable
  160. EEPE = 1; // EEPROM Write Enable
  161. EERE = 0; // EEPROM Read Enable
  162. // CADCSRA
  163. CADEN = 7; // When the CADEN bit is cleared (zero), the CC-ADC is disabled. When the CADEN bit is set (one), the CC-ADC will continuously measure the voltage drop over the external sense resistor RSENSE. In Power-down, only the Regular Current detection is active. In Power-off, the CC-ADC is always disabled.
  164. CADPOL = 6; //
  165. CADUB = 5; // CC_ADC Update Busy
  166. CADAS = 3; // CC_ADC Accumulate Current Select Bits
  167. CADSI = 1; // The CADSI bits determine the current sampling interval for the Regular Current detection in Power-down mode. The actual settings remain to be determined.
  168. CADSE = 0; // When the CADSE bit is written to one, the ongoing CC-ADC conversion is aborted, and the CC-ADC enters Regular Current detection mode.
  169. // CADCSRB
  170. CADACIE = 6; //
  171. CADRCIE = 5; // Regular Current Interrupt Enable
  172. CADICIE = 4; // CAD Instantenous Current Interrupt Enable
  173. CADACIF = 2; // CC-ADC Accumulate Current Interrupt Flag
  174. CADRCIF = 1; // CC-ADC Accumulate Current Interrupt Flag
  175. CADICIF = 0; // CC-ADC Instantaneous Current Interrupt Flag
  176. // CADCSRC
  177. CADVSE = 0; // CC-ADC Voltage Scaling Enable
  178. // TWBCSR
  179. TWBCIF = 7; // TWI Bus Connect/Disconnect Interrupt Flag
  180. TWBCIE = 6; // TWI Bus Connect/Disconnect Interrupt Enable
  181. TWBDT = 1; // TWI Bus Disconnect Time-out Period
  182. TWBCIP = 0; // TWI Bus Connect/Disconnect Interrupt Polarity
  183. // TWAMR
  184. TWAM = 1; //
  185. // TWCR
  186. TWINT = 7; // TWI Interrupt Flag
  187. TWEA = 6; // TWI Enable Acknowledge Bit
  188. TWSTA = 5; // TWI Start Condition Bit
  189. TWSTO = 4; // TWI Stop Condition Bit
  190. TWWC = 3; // TWI Write Collition Flag
  191. TWEN = 2; // TWI Enable Bit
  192. TWIE = 0; // TWI Interrupt Enable
  193. // TWSR
  194. TWS = 3; // TWI Status
  195. TWPS = 0; // TWI Prescaler
  196. // TWAR
  197. TWA = 1; // TWI (Slave) Address register Bits
  198. TWGCE = 0; // TWI General Call Recognition Enable Bit
  199. // EICRA
  200. ISC3 = 6; // External Interrupt Sense Control 3 Bits
  201. ISC2 = 4; // External Interrupt Sense Control 2 Bits
  202. ISC1 = 2; // External Interrupt Sense Control 1 Bits
  203. ISC0 = 0; // External Interrupt Sense Control 0 Bits
  204. // EIMSK
  205. INT = 0; // External Interrupt Request 3 Enable
  206. // EIFR
  207. INTF = 0; // External Interrupt Flags
  208. // PCICR
  209. PCIE = 0; // Pin Change Interrupt Enables
  210. // PCIFR
  211. PCIF = 0; // Pin Change Interrupt Flags
  212. // TCCR1B
  213. CS = 0; // Clock Select1 bis
  214. // TCCR1A
  215. TCW1 = 7; // Timer/Counter Width
  216. ICEN1 = 6; // Input Capture Mode Enable
  217. ICNC1 = 5; // Input Capture Noise Canceler
  218. ICES1 = 4; // Input Capture Edge Select
  219. ICS1 = 3; // Input Capture Select
  220. WGM10 = 0; // Waveform Generation Mode
  221. // TIMSK1
  222. ICIE1 = 3; // Timer/Counter n Input Capture Interrupt Enable
  223. OCIE1B = 2; // Timer/Counter1 Output Compare B Interrupt Enable
  224. OCIE1A = 1; // Timer/Counter1 Output Compare A Interrupt Enable
  225. TOIE1 = 0; // Timer/Counter1 Overflow Interrupt Enable
  226. // TIFR1
  227. ICF1 = 3; // Timer/Counter 1 Input Capture Flag
  228. OCF1B = 2; // Timer/Counter1 Output Compare Flag B
  229. OCF1A = 1; // Timer/Counter1 Output Compare Flag A
  230. TOV1 = 0; // Timer/Counter1 Overflow Flag
  231. // GTCCR
  232. TSM = 7; // Timer/Counter Synchronization Mode
  233. PSRSYNC = 0; // Prescaler Reset
  234. // CBCR
  235. CBE = 0; // Cell Balancing Enables
  236. // BPPLR
  237. BPPLE = 1; // Battery Protection Parameter Lock Enable
  238. BPPL = 0; // Battery Protection Parameter Lock
  239. // BPCR
  240. EPID = 5; // External Protection Input Disable
  241. SCD = 4; // Short Circuit Protection Disabled
  242. DOCD = 3; // Discharge Over-current Protection Disabled
  243. COCD = 2; // Charge Over-current Protection Disabled
  244. DHCD = 1; // Discharge High-current Protection Disable
  245. CHCD = 0; // Charge High-current Protection Disable
  246. // BPIFR
  247. SCIF = 4; // Short-circuit Protection Activated Interrupt Flag
  248. DOCIF = 3; // Discharge Over-current Protection Activated Interrupt Flag
  249. COCIF = 2; // Charge Over-current Protection Activated Interrupt Flag
  250. DHCIF = 1; // Disharge High-current Protection Activated Interrupt
  251. CHCIF = 0; // Charge High-current Protection Activated Interrupt
  252. // BPIMSK
  253. SCIE = 4; // Short-circuit Protection Activated Interrupt Enable
  254. DOCIE = 3; // Discharge Over-current Protection Activated Interrupt Enable
  255. COCIE = 2; // Charge Over-current Protection Activated Interrupt Enable
  256. DHCIE = 1; // Discharger High-current Protection Activated Interrupt
  257. CHCIE = 0; // Charger High-current Protection Activated Interrupt
  258. // CHGDCSR
  259. BATTPVL = 4; // BATT Pin Voltage Level
  260. CHGDISC = 2; // Charger Detect Interrupt Sense Control
  261. CHGDIF = 1; // Charger Detect Interrupt Flag
  262. CHGDIE = 0; // Charger Detect Interrupt Enable
  263. // ROCR
  264. ROCS = 7; // ROC Status
  265. ROCD = 4; // ROC Disable
  266. ROCWIF = 1; // ROC Warning Interrupt Flag
  267. ROCWIE = 0; // ROC Warning Interrupt Enable
  268. // BGCSR
  269. BGD = 5; // Bandgap Disable
  270. BGSCDE = 4; // Bandgap Short Circuit Detection Enabled
  271. BGSCDIF = 1; // Bandgap Short Circuit Detection Interrupt Flag
  272. BGSCDIE = 0; // Bandgap Short Circuit Detection Interrupt Enable
  273. // BGCCR
  274. BGCC = 0; // BG Calibration of PTAT Current Bits
  275. // SREG
  276. I = 7; // Global Interrupt Enable
  277. T = 6; // Bit Copy Storage
  278. H = 5; // Half Carry Flag
  279. S = 4; // Sign Bit
  280. V = 3; // Two's Complement Overflow Flag
  281. N = 2; // Negative Flag
  282. Z = 1; // Zero Flag
  283. C = 0; // Carry Flag
  284. // MCUCR
  285. CKOE = 5; // Clock Output Enable
  286. PUD = 4; // Pull-up disable
  287. IVSEL = 1; // Interrupt Vector Select
  288. IVCE = 0; // Interrupt Vector Change Enable
  289. // MCUSR
  290. OCDRF = 4; // OCD Reset Flag
  291. WDRF = 3; // Watchdog Reset Flag
  292. BODRF = 2; // Brown-out Reset Flag
  293. EXTRF = 1; // External Reset Flag
  294. PORF = 0; // Power-on reset flag
  295. // OSICSR
  296. OSISEL0 = 4; // Oscillator Sampling Interface Select 0
  297. OSIST = 1; // Oscillator Sampling Interface Status
  298. OSIEN = 0; // Oscillator Sampling Interface Enable
  299. // SMCR
  300. SM = 1; // Sleep Mode Select bits
  301. SE = 0; // Sleep Enable
  302. // DIDR0
  303. PA1DID = 1; // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
  304. PA0DID = 0; // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
  305. // PRR0
  306. PRTWI = 6; // Power Reduction TWI
  307. PRVRM = 5; // Power Reduction Voltage Regulator Monitor
  308. PRSPI = 3; // Power reduction SPI
  309. PRTIM1 = 2; // Power Reduction Timer/Counter1
  310. PRTIM0 = 1; // Power Reduction Timer/Counter0
  311. PRVADC = 0; // Power Reduction V-ADC
  312. // CLKPR
  313. CLKPCE = 7; // Clock Prescaler Change Enable
  314. CLKPS = 0; // Clock Prescaler Select Bits
  315. // TCCR0B
  316. CS02 = 2; // Clock Select0 bit 2
  317. CS01 = 1; // Clock Select0 bit 1
  318. CS00 = 0; // Clock Select0 bit 0
  319. // TCCR0A
  320. TCW0 = 7; // Timer/Counter Width
  321. ICEN0 = 6; // Input Capture Mode Enable
  322. ICNC0 = 5; // Input Capture Noise Canceler
  323. ICES0 = 4; // Input Capture Edge Select
  324. ICS0 = 3; // Input Capture Select
  325. WGM00 = 0; // Waveform Generation Mode
  326. // TIMSK0
  327. ICIE0 = 3; // Timer/Counter n Input Capture Interrupt Enable
  328. OCIE0B = 2; // Timer/Counter0 Output Compare B Interrupt Enable
  329. OCIE0A = 1; // Timer/Counter0 Output Compare A Interrupt Enable
  330. TOIE0 = 0; // Timer/Counter0 Overflow Interrupt Enable
  331. // TIFR0
  332. ICF0 = 3; // Timer/Counter 0 Input Capture Flag
  333. OCF0B = 2; // Timer/Counter0 Output Compare Flag B
  334. OCF0A = 1; // Timer/Counter0 Output Compare Flag A
  335. TOV0 = 0; // Timer/Counter0 Overflow Flag
  336. // GTCCR
  337. // SPMCSR
  338. SPMIE = 7; // SPM Interrupt Enable
  339. RWWSB = 6; // Read-While-Write Section Busy
  340. SIGRD = 5; // Signature Row Read
  341. RWWSRE = 4; // Read-While-Write Section Read Enable
  342. LBSET = 3; // Lock Bit Set
  343. PGWRT = 2; // Page Write
  344. PGERS = 1; // Page Erase
  345. SPMEN = 0; // Store Program Memory Enable
  346. implementation
  347. {$i avrcommon.inc}
  348. procedure BPINT_ISR; external name 'BPINT_ISR'; // Interrupt 1 Battery Protection Interrupt
  349. procedure VREGMON_ISR; external name 'VREGMON_ISR'; // Interrupt 2 Voltage regulator monitor interrupt
  350. procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 3 External Interrupt Request 0
  351. procedure INT1_ISR; external name 'INT1_ISR'; // Interrupt 4 External Interrupt Request 1
  352. procedure INT2_ISR; external name 'INT2_ISR'; // Interrupt 5 External Interrupt Request 2
  353. procedure INT3_ISR; external name 'INT3_ISR'; // Interrupt 6 External Interrupt Request 3
  354. procedure PCINT0_ISR; external name 'PCINT0_ISR'; // Interrupt 7 Pin Change Interrupt 0
  355. procedure PCINT1_ISR; external name 'PCINT1_ISR'; // Interrupt 8 Pin Change Interrupt 1
  356. procedure WDT_ISR; external name 'WDT_ISR'; // Interrupt 9 Watchdog Timeout Interrupt
  357. procedure BGSCD_ISR; external name 'BGSCD_ISR'; // Interrupt 10 Bandgap Buffer Short Circuit Detected
  358. procedure CHDET_ISR; external name 'CHDET_ISR'; // Interrupt 11 Charger Detect
  359. procedure TIMER1_IC_ISR; external name 'TIMER1_IC_ISR'; // Interrupt 12 Timer 1 Input capture
  360. procedure TIMER1_COMPA_ISR; external name 'TIMER1_COMPA_ISR'; // Interrupt 13 Timer 1 Compare Match A
  361. procedure TIMER1_COMPB_ISR; external name 'TIMER1_COMPB_ISR'; // Interrupt 14 Timer 1 Compare Match B
  362. procedure TIMER1_OVF_ISR; external name 'TIMER1_OVF_ISR'; // Interrupt 15 Timer 1 overflow
  363. procedure TIMER0_IC_ISR; external name 'TIMER0_IC_ISR'; // Interrupt 16 Timer 0 Input Capture
  364. procedure TIMER0_COMPA_ISR; external name 'TIMER0_COMPA_ISR'; // Interrupt 17 Timer 0 Comapre Match A
  365. procedure TIMER0_COMPB_ISR; external name 'TIMER0_COMPB_ISR'; // Interrupt 18 Timer 0 Compare Match B
  366. procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 19 Timer 0 Overflow
  367. procedure TWIBUSCD_ISR; external name 'TWIBUSCD_ISR'; // Interrupt 20 Two-Wire Bus Connect/Disconnect
  368. procedure TWI_ISR; external name 'TWI_ISR'; // Interrupt 21 Two-Wire Serial Interface
  369. procedure SPI_STC_ISR; external name 'SPI_STC_ISR'; // Interrupt 22 SPI Serial transfer complete
  370. procedure VADC_ISR; external name 'VADC_ISR'; // Interrupt 23 Voltage ADC Conversion Complete
  371. procedure CCADC_CONV_ISR; external name 'CCADC_CONV_ISR'; // Interrupt 24 Coulomb Counter ADC Conversion Complete
  372. procedure CCADC_REG_CUR_ISR; external name 'CCADC_REG_CUR_ISR'; // Interrupt 25 Coloumb Counter ADC Regular Current
  373. procedure CCADC_ACC_ISR; external name 'CCADC_ACC_ISR'; // Interrupt 26 Coloumb Counter ADC Accumulator
  374. procedure EE_READY_ISR; external name 'EE_READY_ISR'; // Interrupt 27 EEPROM Ready
  375. procedure SPM_ISR; external name 'SPM_ISR'; // Interrupt 28 SPM Ready
  376. procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  377. asm
  378. jmp __dtors_end
  379. jmp BPINT_ISR
  380. jmp VREGMON_ISR
  381. jmp INT0_ISR
  382. jmp INT1_ISR
  383. jmp INT2_ISR
  384. jmp INT3_ISR
  385. jmp PCINT0_ISR
  386. jmp PCINT1_ISR
  387. jmp WDT_ISR
  388. jmp BGSCD_ISR
  389. jmp CHDET_ISR
  390. jmp TIMER1_IC_ISR
  391. jmp TIMER1_COMPA_ISR
  392. jmp TIMER1_COMPB_ISR
  393. jmp TIMER1_OVF_ISR
  394. jmp TIMER0_IC_ISR
  395. jmp TIMER0_COMPA_ISR
  396. jmp TIMER0_COMPB_ISR
  397. jmp TIMER0_OVF_ISR
  398. jmp TWIBUSCD_ISR
  399. jmp TWI_ISR
  400. jmp SPI_STC_ISR
  401. jmp VADC_ISR
  402. jmp CCADC_CONV_ISR
  403. jmp CCADC_REG_CUR_ISR
  404. jmp CCADC_ACC_ISR
  405. jmp EE_READY_ISR
  406. jmp SPM_ISR
  407. .weak BPINT_ISR
  408. .weak VREGMON_ISR
  409. .weak INT0_ISR
  410. .weak INT1_ISR
  411. .weak INT2_ISR
  412. .weak INT3_ISR
  413. .weak PCINT0_ISR
  414. .weak PCINT1_ISR
  415. .weak WDT_ISR
  416. .weak BGSCD_ISR
  417. .weak CHDET_ISR
  418. .weak TIMER1_IC_ISR
  419. .weak TIMER1_COMPA_ISR
  420. .weak TIMER1_COMPB_ISR
  421. .weak TIMER1_OVF_ISR
  422. .weak TIMER0_IC_ISR
  423. .weak TIMER0_COMPA_ISR
  424. .weak TIMER0_COMPB_ISR
  425. .weak TIMER0_OVF_ISR
  426. .weak TWIBUSCD_ISR
  427. .weak TWI_ISR
  428. .weak SPI_STC_ISR
  429. .weak VADC_ISR
  430. .weak CCADC_CONV_ISR
  431. .weak CCADC_REG_CUR_ISR
  432. .weak CCADC_ACC_ISR
  433. .weak EE_READY_ISR
  434. .weak SPM_ISR
  435. .set BPINT_ISR, Default_IRQ_handler
  436. .set VREGMON_ISR, Default_IRQ_handler
  437. .set INT0_ISR, Default_IRQ_handler
  438. .set INT1_ISR, Default_IRQ_handler
  439. .set INT2_ISR, Default_IRQ_handler
  440. .set INT3_ISR, Default_IRQ_handler
  441. .set PCINT0_ISR, Default_IRQ_handler
  442. .set PCINT1_ISR, Default_IRQ_handler
  443. .set WDT_ISR, Default_IRQ_handler
  444. .set BGSCD_ISR, Default_IRQ_handler
  445. .set CHDET_ISR, Default_IRQ_handler
  446. .set TIMER1_IC_ISR, Default_IRQ_handler
  447. .set TIMER1_COMPA_ISR, Default_IRQ_handler
  448. .set TIMER1_COMPB_ISR, Default_IRQ_handler
  449. .set TIMER1_OVF_ISR, Default_IRQ_handler
  450. .set TIMER0_IC_ISR, Default_IRQ_handler
  451. .set TIMER0_COMPA_ISR, Default_IRQ_handler
  452. .set TIMER0_COMPB_ISR, Default_IRQ_handler
  453. .set TIMER0_OVF_ISR, Default_IRQ_handler
  454. .set TWIBUSCD_ISR, Default_IRQ_handler
  455. .set TWI_ISR, Default_IRQ_handler
  456. .set SPI_STC_ISR, Default_IRQ_handler
  457. .set VADC_ISR, Default_IRQ_handler
  458. .set CCADC_CONV_ISR, Default_IRQ_handler
  459. .set CCADC_REG_CUR_ISR, Default_IRQ_handler
  460. .set CCADC_ACC_ISR, Default_IRQ_handler
  461. .set EE_READY_ISR, Default_IRQ_handler
  462. .set SPM_ISR, Default_IRQ_handler
  463. end;
  464. end.