atmega16hvb.pp 21 KB

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