atmega640.pp 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. unit ATmega640;
  2. {$goto on}
  3. interface
  4. var
  5. // ANALOG_COMPARATOR
  6. ADCSRB : byte absolute $00+$7B; // ADC Control and Status Register B
  7. ACSR : byte absolute $00+$50; // Analog Comparator Control And Status Register
  8. DIDR1 : byte absolute $00+$7F; // Digital Input Disable Register 1
  9. // USART0
  10. UDR0 : byte absolute $00+$C6; // USART I/O Data Register
  11. UCSR0A : byte absolute $00+$C0; // USART Control and Status Register A
  12. UCSR0B : byte absolute $00+$C1; // USART Control and Status Register B
  13. UCSR0C : byte absolute $00+$C2; // USART Control and Status Register C
  14. UBRR0 : word absolute $00+$C4; // USART Baud Rate Register Bytes
  15. UBRR0L : byte absolute $00+$C4; // USART Baud Rate Register Bytes
  16. UBRR0H : byte absolute $00+$C4+1; // USART Baud Rate Register Bytes
  17. // TWI
  18. TWAMR : byte absolute $00+$BD; // TWI (Slave) Address Mask Register
  19. TWBR : byte absolute $00+$B8; // TWI Bit Rate register
  20. TWCR : byte absolute $00+$BC; // TWI Control Register
  21. TWSR : byte absolute $00+$B9; // TWI Status Register
  22. TWDR : byte absolute $00+$BB; // TWI Data register
  23. TWAR : byte absolute $00+$BA; // TWI (Slave) Address register
  24. // SPI
  25. SPCR : byte absolute $00+$4C; // SPI Control Register
  26. SPSR : byte absolute $00+$4D; // SPI Status Register
  27. SPDR : byte absolute $00+$4E; // SPI Data Register
  28. // PORTA
  29. PORTA : byte absolute $00+$22; // Port A Data Register
  30. DDRA : byte absolute $00+$21; // Port A Data Direction Register
  31. PINA : byte absolute $00+$20; // Port A Input Pins
  32. // PORTB
  33. PORTB : byte absolute $00+$25; // Port B Data Register
  34. DDRB : byte absolute $00+$24; // Port B Data Direction Register
  35. PINB : byte absolute $00+$23; // Port B Input Pins
  36. // PORTC
  37. PORTC : byte absolute $00+$28; // Port C Data Register
  38. DDRC : byte absolute $00+$27; // Port C Data Direction Register
  39. PINC : byte absolute $00+$26; // Port C Input Pins
  40. // PORTD
  41. PORTD : byte absolute $00+$2B; // Port D Data Register
  42. DDRD : byte absolute $00+$2A; // Port D Data Direction Register
  43. PIND : byte absolute $00+$29; // Port D Input Pins
  44. // PORTE
  45. PORTE : byte absolute $00+$2E; // Data Register, Port E
  46. DDRE : byte absolute $00+$2D; // Data Direction Register, Port E
  47. PINE : byte absolute $00+$2C; // Input Pins, Port E
  48. // PORTF
  49. PORTF : byte absolute $00+$31; // Data Register, Port F
  50. DDRF : byte absolute $00+$30; // Data Direction Register, Port F
  51. PINF : byte absolute $00+$2F; // Input Pins, Port F
  52. // PORTG
  53. PORTG : byte absolute $00+$34; // Data Register, Port G
  54. DDRG : byte absolute $00+$33; // Data Direction Register, Port G
  55. PING : byte absolute $00+$32; // Input Pins, Port G
  56. // PORTH
  57. PORTH : byte absolute $00+$102; // PORT H Data Register
  58. DDRH : byte absolute $00+$101; // PORT H Data Direction Register
  59. PINH : byte absolute $00+$100; // PORT H Input Pins
  60. // PORTJ
  61. PORTJ : byte absolute $00+$105; // PORT J Data Register
  62. DDRJ : byte absolute $00+$104; // PORT J Data Direction Register
  63. PINJ : byte absolute $00+$103; // PORT J Input Pins
  64. // PORTK
  65. PORTK : byte absolute $00+$108; // PORT K Data Register
  66. DDRK : byte absolute $00+$107; // PORT K Data Direction Register
  67. PINK : byte absolute $00+$106; // PORT K Input Pins
  68. // PORTL
  69. PORTL : byte absolute $00+$10B; // PORT L Data Register
  70. DDRL : byte absolute $00+$10A; // PORT L Data Direction Register
  71. PINL : byte absolute $00+$109; // PORT L Input Pins
  72. // TIMER_COUNTER_0
  73. OCR0B : byte absolute $00+$48; // Timer/Counter0 Output Compare Register
  74. OCR0A : byte absolute $00+$47; // Timer/Counter0 Output Compare Register
  75. TCNT0 : byte absolute $00+$46; // Timer/Counter0
  76. TCCR0B : byte absolute $00+$45; // Timer/Counter Control Register B
  77. TCCR0A : byte absolute $00+$44; // Timer/Counter Control Register A
  78. TIMSK0 : byte absolute $00+$6E; // Timer/Counter0 Interrupt Mask Register
  79. TIFR0 : byte absolute $00+$35; // Timer/Counter0 Interrupt Flag register
  80. GTCCR : byte absolute $00+$43; // General Timer/Counter Control Register
  81. // TIMER_COUNTER_2
  82. TIMSK2 : byte absolute $00+$70; // Timer/Counter Interrupt Mask register
  83. TIFR2 : byte absolute $00+$37; // Timer/Counter Interrupt Flag Register
  84. TCCR2A : byte absolute $00+$B0; // Timer/Counter2 Control Register A
  85. TCCR2B : byte absolute $00+$B1; // Timer/Counter2 Control Register B
  86. TCNT2 : byte absolute $00+$B2; // Timer/Counter2
  87. OCR2B : byte absolute $00+$B4; // Timer/Counter2 Output Compare Register B
  88. OCR2A : byte absolute $00+$B3; // Timer/Counter2 Output Compare Register A
  89. ASSR : byte absolute $00+$B6; // Asynchronous Status Register
  90. // WATCHDOG
  91. WDTCSR : byte absolute $00+$60; // Watchdog Timer Control Register
  92. // USART1
  93. UDR1 : byte absolute $00+$CE; // USART I/O Data Register
  94. UCSR1A : byte absolute $00+$C8; // USART Control and Status Register A
  95. UCSR1B : byte absolute $00+$C9; // USART Control and Status Register B
  96. UCSR1C : byte absolute $00+$CA; // USART Control and Status Register C
  97. UBRR1 : word absolute $00+$CC; // USART Baud Rate Register Bytes
  98. UBRR1L : byte absolute $00+$CC; // USART Baud Rate Register Bytes
  99. UBRR1H : byte absolute $00+$CC+1; // USART Baud Rate Register Bytes
  100. // EEPROM
  101. EEAR : word absolute $00+$41; // EEPROM Address Register Low Bytes
  102. EEARL : byte absolute $00+$41; // EEPROM Address Register Low Bytes
  103. EEARH : byte absolute $00+$41+1; // EEPROM Address Register Low Bytes
  104. EEDR : byte absolute $00+$40; // EEPROM Data Register
  105. EECR : byte absolute $00+$3F; // EEPROM Control Register
  106. // TIMER_COUNTER_5
  107. TCCR5A : byte absolute $00+$120; // Timer/Counter5 Control Register A
  108. TCCR5B : byte absolute $00+$121; // Timer/Counter5 Control Register B
  109. TCCR5C : byte absolute $00+$122; // Timer/Counter 5 Control Register C
  110. TCNT5 : word absolute $00+$124; // Timer/Counter5 Bytes
  111. TCNT5L : byte absolute $00+$124; // Timer/Counter5 Bytes
  112. TCNT5H : byte absolute $00+$124+1; // Timer/Counter5 Bytes
  113. OCR5A : word absolute $00+$128; // Timer/Counter5 Output Compare Register A Bytes
  114. OCR5AL : byte absolute $00+$128; // Timer/Counter5 Output Compare Register A Bytes
  115. OCR5AH : byte absolute $00+$128+1; // Timer/Counter5 Output Compare Register A Bytes
  116. OCR5B : word absolute $00+$12A; // Timer/Counter5 Output Compare Register B Bytes
  117. OCR5BL : byte absolute $00+$12A; // Timer/Counter5 Output Compare Register B Bytes
  118. OCR5BH : byte absolute $00+$12A+1; // Timer/Counter5 Output Compare Register B Bytes
  119. OCR5C : word absolute $00+$12C; // Timer/Counter5 Output Compare Register B Bytes
  120. OCR5CL : byte absolute $00+$12C; // Timer/Counter5 Output Compare Register B Bytes
  121. OCR5CH : byte absolute $00+$12C+1; // Timer/Counter5 Output Compare Register B Bytes
  122. ICR5 : word absolute $00+$126; // Timer/Counter5 Input Capture Register Bytes
  123. ICR5L : byte absolute $00+$126; // Timer/Counter5 Input Capture Register Bytes
  124. ICR5H : byte absolute $00+$126+1; // Timer/Counter5 Input Capture Register Bytes
  125. TIMSK5 : byte absolute $00+$73; // Timer/Counter5 Interrupt Mask Register
  126. TIFR5 : byte absolute $00+$3A; // Timer/Counter5 Interrupt Flag register
  127. // TIMER_COUNTER_4
  128. TCCR4A : byte absolute $00+$A0; // Timer/Counter4 Control Register A
  129. TCCR4B : byte absolute $00+$A1; // Timer/Counter4 Control Register B
  130. TCCR4C : byte absolute $00+$A2; // Timer/Counter 4 Control Register C
  131. TCNT4 : word absolute $00+$A4; // Timer/Counter4 Bytes
  132. TCNT4L : byte absolute $00+$A4; // Timer/Counter4 Bytes
  133. TCNT4H : byte absolute $00+$A4+1; // Timer/Counter4 Bytes
  134. OCR4A : word absolute $00+$A8; // Timer/Counter4 Output Compare Register A Bytes
  135. OCR4AL : byte absolute $00+$A8; // Timer/Counter4 Output Compare Register A Bytes
  136. OCR4AH : byte absolute $00+$A8+1; // Timer/Counter4 Output Compare Register A Bytes
  137. OCR4B : word absolute $00+$AA; // Timer/Counter4 Output Compare Register B Bytes
  138. OCR4BL : byte absolute $00+$AA; // Timer/Counter4 Output Compare Register B Bytes
  139. OCR4BH : byte absolute $00+$AA+1; // Timer/Counter4 Output Compare Register B Bytes
  140. OCR4C : word absolute $00+$AC; // Timer/Counter4 Output Compare Register B Bytes
  141. OCR4CL : byte absolute $00+$AC; // Timer/Counter4 Output Compare Register B Bytes
  142. OCR4CH : byte absolute $00+$AC+1; // Timer/Counter4 Output Compare Register B Bytes
  143. ICR4 : word absolute $00+$A6; // Timer/Counter4 Input Capture Register Bytes
  144. ICR4L : byte absolute $00+$A6; // Timer/Counter4 Input Capture Register Bytes
  145. ICR4H : byte absolute $00+$A6+1; // Timer/Counter4 Input Capture Register Bytes
  146. TIMSK4 : byte absolute $00+$72; // Timer/Counter4 Interrupt Mask Register
  147. TIFR4 : byte absolute $00+$39; // Timer/Counter4 Interrupt Flag register
  148. // TIMER_COUNTER_3
  149. TCCR3A : byte absolute $00+$90; // Timer/Counter3 Control Register A
  150. TCCR3B : byte absolute $00+$91; // Timer/Counter3 Control Register B
  151. TCCR3C : byte absolute $00+$92; // Timer/Counter 3 Control Register C
  152. TCNT3 : word absolute $00+$94; // Timer/Counter3 Bytes
  153. TCNT3L : byte absolute $00+$94; // Timer/Counter3 Bytes
  154. TCNT3H : byte absolute $00+$94+1; // Timer/Counter3 Bytes
  155. OCR3A : word absolute $00+$98; // Timer/Counter3 Output Compare Register A Bytes
  156. OCR3AL : byte absolute $00+$98; // Timer/Counter3 Output Compare Register A Bytes
  157. OCR3AH : byte absolute $00+$98+1; // Timer/Counter3 Output Compare Register A Bytes
  158. OCR3B : word absolute $00+$9A; // Timer/Counter3 Output Compare Register B Bytes
  159. OCR3BL : byte absolute $00+$9A; // Timer/Counter3 Output Compare Register B Bytes
  160. OCR3BH : byte absolute $00+$9A+1; // Timer/Counter3 Output Compare Register B Bytes
  161. OCR3C : word absolute $00+$9C; // Timer/Counter3 Output Compare Register B Bytes
  162. OCR3CL : byte absolute $00+$9C; // Timer/Counter3 Output Compare Register B Bytes
  163. OCR3CH : byte absolute $00+$9C+1; // Timer/Counter3 Output Compare Register B Bytes
  164. ICR3 : word absolute $00+$96; // Timer/Counter3 Input Capture Register Bytes
  165. ICR3L : byte absolute $00+$96; // Timer/Counter3 Input Capture Register Bytes
  166. ICR3H : byte absolute $00+$96+1; // Timer/Counter3 Input Capture Register Bytes
  167. TIMSK3 : byte absolute $00+$71; // Timer/Counter3 Interrupt Mask Register
  168. TIFR3 : byte absolute $00+$38; // Timer/Counter3 Interrupt Flag register
  169. // TIMER_COUNTER_1
  170. TCCR1A : byte absolute $00+$80; // Timer/Counter1 Control Register A
  171. TCCR1B : byte absolute $00+$81; // Timer/Counter1 Control Register B
  172. TCCR1C : byte absolute $00+$82; // Timer/Counter 1 Control Register C
  173. TCNT1 : word absolute $00+$84; // Timer/Counter1 Bytes
  174. TCNT1L : byte absolute $00+$84; // Timer/Counter1 Bytes
  175. TCNT1H : byte absolute $00+$84+1; // Timer/Counter1 Bytes
  176. OCR1A : word absolute $00+$88; // Timer/Counter1 Output Compare Register A Bytes
  177. OCR1AL : byte absolute $00+$88; // Timer/Counter1 Output Compare Register A Bytes
  178. OCR1AH : byte absolute $00+$88+1; // Timer/Counter1 Output Compare Register A Bytes
  179. OCR1B : word absolute $00+$8A; // Timer/Counter1 Output Compare Register B Bytes
  180. OCR1BL : byte absolute $00+$8A; // Timer/Counter1 Output Compare Register B Bytes
  181. OCR1BH : byte absolute $00+$8A+1; // Timer/Counter1 Output Compare Register B Bytes
  182. OCR1C : word absolute $00+$8C; // Timer/Counter1 Output Compare Register C Bytes
  183. OCR1CL : byte absolute $00+$8C; // Timer/Counter1 Output Compare Register C Bytes
  184. OCR1CH : byte absolute $00+$8C+1; // Timer/Counter1 Output Compare Register C Bytes
  185. ICR1 : word absolute $00+$86; // Timer/Counter1 Input Capture Register Bytes
  186. ICR1L : byte absolute $00+$86; // Timer/Counter1 Input Capture Register Bytes
  187. ICR1H : byte absolute $00+$86+1; // Timer/Counter1 Input Capture Register Bytes
  188. TIMSK1 : byte absolute $00+$6F; // Timer/Counter1 Interrupt Mask Register
  189. TIFR1 : byte absolute $00+$36; // Timer/Counter1 Interrupt Flag register
  190. // JTAG
  191. OCDR : byte absolute $00+$51; // On-Chip Debug Related Register in I/O Memory
  192. MCUCR : byte absolute $00+$55; // MCU Control Register
  193. MCUSR : byte absolute $00+$54; // MCU Status Register
  194. // EXTERNAL_INTERRUPT
  195. EICRA : byte absolute $00+$69; // External Interrupt Control Register A
  196. EICRB : byte absolute $00+$6A; // External Interrupt Control Register B
  197. EIMSK : byte absolute $00+$3D; // External Interrupt Mask Register
  198. EIFR : byte absolute $00+$3C; // External Interrupt Flag Register
  199. PCMSK2 : byte absolute $00+$6D; // Pin Change Mask Register 2
  200. PCMSK1 : byte absolute $00+$6C; // Pin Change Mask Register 1
  201. PCMSK0 : byte absolute $00+$6B; // Pin Change Mask Register 0
  202. PCIFR : byte absolute $00+$3B; // Pin Change Interrupt Flag Register
  203. PCICR : byte absolute $00+$68; // Pin Change Interrupt Control Register
  204. // CPU
  205. SREG : byte absolute $00+$5F; // Status Register
  206. SP : word absolute $00+$5D; // Stack Pointer
  207. SPL : byte absolute $00+$5D; // Stack Pointer
  208. SPH : byte absolute $00+$5D+1; // Stack Pointer
  209. XMCRA : byte absolute $00+$74; // External Memory Control Register A
  210. XMCRB : byte absolute $00+$75; // External Memory Control Register B
  211. OSCCAL : byte absolute $00+$66; // Oscillator Calibration Value
  212. CLKPR : byte absolute $00+$61; //
  213. SMCR : byte absolute $00+$53; // Sleep Mode Control Register
  214. EIND : byte absolute $00+$5C; // Extended Indirect Register
  215. GPIOR2 : byte absolute $00+$4B; // General Purpose IO Register 2
  216. GPIOR1 : byte absolute $00+$4A; // General Purpose IO Register 1
  217. GPIOR0 : byte absolute $00+$3E; // General Purpose IO Register 0
  218. PRR1 : byte absolute $00+$65; // Power Reduction Register1
  219. PRR0 : byte absolute $00+$64; // Power Reduction Register0
  220. // AD_CONVERTER
  221. ADMUX : byte absolute $00+$7C; // The ADC multiplexer Selection Register
  222. ADC : word absolute $00+$78; // ADC Data Register Bytes
  223. ADCL : byte absolute $00+$78; // ADC Data Register Bytes
  224. ADCH : byte absolute $00+$78+1; // ADC Data Register Bytes
  225. ADCSRA : byte absolute $00+$7A; // The ADC Control and Status register A
  226. DIDR2 : byte absolute $00+$7D; // Digital Input Disable Register
  227. DIDR0 : byte absolute $00+$7E; // Digital Input Disable Register
  228. // BOOT_LOAD
  229. SPMCSR : byte absolute $00+$57; // Store Program Memory Control Register
  230. // USART2
  231. UDR2 : byte absolute $00+$D6; // USART I/O Data Register
  232. UCSR2A : byte absolute $00+$D0; // USART Control and Status Register A
  233. UCSR2B : byte absolute $00+$D1; // USART Control and Status Register B
  234. UCSR2C : byte absolute $00+$D2; // USART Control and Status Register C
  235. UBRR2 : word absolute $00+$D4; // USART Baud Rate Register Bytes
  236. UBRR2L : byte absolute $00+$D4; // USART Baud Rate Register Bytes
  237. UBRR2H : byte absolute $00+$D4+1; // USART Baud Rate Register Bytes
  238. // USART3
  239. UDR3 : byte absolute $00+$136; // USART I/O Data Register
  240. UCSR3A : byte absolute $00+$130; // USART Control and Status Register A
  241. UCSR3B : byte absolute $00+$131; // USART Control and Status Register B
  242. UCSR3C : byte absolute $00+$132; // USART Control and Status Register C
  243. UBRR3 : word absolute $00+$134; // USART Baud Rate Register Bytes
  244. UBRR3L : byte absolute $00+$134; // USART Baud Rate Register Bytes
  245. UBRR3H : byte absolute $00+$134+1; // USART Baud Rate Register Bytes
  246. const
  247. // ADCSRB
  248. ACME = 6; // Analog Comparator Multiplexer Enable
  249. // ACSR
  250. ACD = 7; // Analog Comparator Disable
  251. ACBG = 6; // Analog Comparator Bandgap Select
  252. ACO = 5; // Analog Compare Output
  253. ACI = 4; // Analog Comparator Interrupt Flag
  254. ACIE = 3; // Analog Comparator Interrupt Enable
  255. ACIC = 2; // Analog Comparator Input Capture Enable
  256. ACIS = 0; // Analog Comparator Interrupt Mode Select bits
  257. // DIDR1
  258. AIN1D = 1; // AIN1 Digital Input Disable
  259. AIN0D = 0; // AIN0 Digital Input Disable
  260. // UCSR0A
  261. RXC0 = 7; // USART Receive Complete
  262. TXC0 = 6; // USART Transmitt Complete
  263. UDRE0 = 5; // USART Data Register Empty
  264. FE0 = 4; // Framing Error
  265. DOR0 = 3; // Data overRun
  266. UPE0 = 2; // Parity Error
  267. U2X0 = 1; // Double the USART transmission speed
  268. MPCM0 = 0; // Multi-processor Communication Mode
  269. // UCSR0B
  270. RXCIE0 = 7; // RX Complete Interrupt Enable
  271. TXCIE0 = 6; // TX Complete Interrupt Enable
  272. UDRIE0 = 5; // USART Data register Empty Interrupt Enable
  273. RXEN0 = 4; // Receiver Enable
  274. TXEN0 = 3; // Transmitter Enable
  275. UCSZ02 = 2; // Character Size
  276. RXB80 = 1; // Receive Data Bit 8
  277. TXB80 = 0; // Transmit Data Bit 8
  278. // UCSR0C
  279. UMSEL0 = 6; // USART Mode Select
  280. UPM0 = 4; // Parity Mode Bits
  281. USBS0 = 3; // Stop Bit Select
  282. UCSZ0 = 1; // Character Size
  283. UCPOL0 = 0; // Clock Polarity
  284. // TWAMR
  285. TWAM = 1; //
  286. // TWCR
  287. TWINT = 7; // TWI Interrupt Flag
  288. TWEA = 6; // TWI Enable Acknowledge Bit
  289. TWSTA = 5; // TWI Start Condition Bit
  290. TWSTO = 4; // TWI Stop Condition Bit
  291. TWWC = 3; // TWI Write Collition Flag
  292. TWEN = 2; // TWI Enable Bit
  293. TWIE = 0; // TWI Interrupt Enable
  294. // TWSR
  295. TWS = 3; // TWI Status
  296. TWPS = 0; // TWI Prescaler
  297. // TWAR
  298. TWA = 1; // TWI (Slave) Address register Bits
  299. TWGCE = 0; // TWI General Call Recognition Enable Bit
  300. // SPCR
  301. SPIE = 7; // SPI Interrupt Enable
  302. SPE = 6; // SPI Enable
  303. DORD = 5; // Data Order
  304. MSTR = 4; // Master/Slave Select
  305. CPOL = 3; // Clock polarity
  306. CPHA = 2; // Clock Phase
  307. SPR = 0; // SPI Clock Rate Selects
  308. // SPSR
  309. SPIF = 7; // SPI Interrupt Flag
  310. WCOL = 6; // Write Collision Flag
  311. SPI2X = 0; // Double SPI Speed Bit
  312. // TCCR0B
  313. FOC0A = 7; // Force Output Compare A
  314. FOC0B = 6; // Force Output Compare B
  315. WGM02 = 3; //
  316. CS0 = 0; // Clock Select
  317. // TCCR0A
  318. COM0A = 6; // Compare Output Mode, Phase Correct PWM Mode
  319. COM0B = 4; // Compare Output Mode, Fast PWm
  320. WGM0 = 0; // Waveform Generation Mode
  321. // TIMSK0
  322. OCIE0B = 2; // Timer/Counter0 Output Compare Match B Interrupt Enable
  323. OCIE0A = 1; // Timer/Counter0 Output Compare Match A Interrupt Enable
  324. TOIE0 = 0; // Timer/Counter0 Overflow Interrupt Enable
  325. // TIFR0
  326. OCF0B = 2; // Timer/Counter0 Output Compare Flag 0B
  327. OCF0A = 1; // Timer/Counter0 Output Compare Flag 0A
  328. TOV0 = 0; // Timer/Counter0 Overflow Flag
  329. // GTCCR
  330. TSM = 7; // Timer/Counter Synchronization Mode
  331. PSRSYNC = 0; // Prescaler Reset Timer/Counter1 and Timer/Counter0
  332. // TIMSK2
  333. OCIE2B = 2; // Timer/Counter2 Output Compare Match B Interrupt Enable
  334. OCIE2A = 1; // Timer/Counter2 Output Compare Match A Interrupt Enable
  335. TOIE2 = 0; // Timer/Counter2 Overflow Interrupt Enable
  336. // TIFR2
  337. OCF2B = 2; // Output Compare Flag 2B
  338. OCF2A = 1; // Output Compare Flag 2A
  339. TOV2 = 0; // Timer/Counter2 Overflow Flag
  340. // TCCR2A
  341. COM2A = 6; // Compare Output Mode bits
  342. COM2B = 4; // Compare Output Mode bits
  343. WGM2 = 0; // Waveform Genration Mode
  344. // TCCR2B
  345. FOC2A = 7; // Force Output Compare A
  346. FOC2B = 6; // Force Output Compare B
  347. WGM22 = 3; // Waveform Generation Mode
  348. CS2 = 0; // Clock Select bits
  349. // ASSR
  350. EXCLK = 6; // Enable External Clock Input
  351. AS2 = 5; // Asynchronous Timer/Counter2
  352. TCN2UB = 4; // Timer/Counter2 Update Busy
  353. OCR2AUB = 3; // Output Compare Register2 Update Busy
  354. OCR2BUB = 2; // Output Compare Register 2 Update Busy
  355. TCR2AUB = 1; // Timer/Counter Control Register2 Update Busy
  356. TCR2BUB = 0; // Timer/Counter Control Register2 Update Busy
  357. // GTCCR
  358. PSRASY = 1; // Prescaler Reset Timer/Counter2
  359. // WDTCSR
  360. WDIF = 7; // Watchdog Timeout Interrupt Flag
  361. WDIE = 6; // Watchdog Timeout Interrupt Enable
  362. WDP = 0; // Watchdog Timer Prescaler Bits
  363. WDCE = 4; // Watchdog Change Enable
  364. WDE = 3; // Watch Dog Enable
  365. // UCSR1A
  366. RXC1 = 7; // USART Receive Complete
  367. TXC1 = 6; // USART Transmitt Complete
  368. UDRE1 = 5; // USART Data Register Empty
  369. FE1 = 4; // Framing Error
  370. DOR1 = 3; // Data overRun
  371. UPE1 = 2; // Parity Error
  372. U2X1 = 1; // Double the USART transmission speed
  373. MPCM1 = 0; // Multi-processor Communication Mode
  374. // UCSR1B
  375. RXCIE1 = 7; // RX Complete Interrupt Enable
  376. TXCIE1 = 6; // TX Complete Interrupt Enable
  377. UDRIE1 = 5; // USART Data register Empty Interrupt Enable
  378. RXEN1 = 4; // Receiver Enable
  379. TXEN1 = 3; // Transmitter Enable
  380. UCSZ12 = 2; // Character Size
  381. RXB81 = 1; // Receive Data Bit 8
  382. TXB81 = 0; // Transmit Data Bit 8
  383. // UCSR1C
  384. UMSEL1 = 6; // USART Mode Select
  385. UPM1 = 4; // Parity Mode Bits
  386. USBS1 = 3; // Stop Bit Select
  387. UCSZ1 = 1; // Character Size
  388. UCPOL1 = 0; // Clock Polarity
  389. // EECR
  390. EEPM = 4; // EEPROM Programming Mode Bits
  391. EERIE = 3; // EEPROM Ready Interrupt Enable
  392. EEMPE = 2; // EEPROM Master Write Enable
  393. EEPE = 1; // EEPROM Write Enable
  394. EERE = 0; // EEPROM Read Enable
  395. // TCCR5A
  396. COM5A = 6; // Compare Output Mode 1A, bits
  397. COM5B = 4; // Compare Output Mode 5B, bits
  398. COM5C = 2; // Compare Output Mode 5C, bits
  399. WGM5 = 0; // Waveform Generation Mode
  400. // TCCR5B
  401. ICNC5 = 7; // Input Capture 5 Noise Canceler
  402. ICES5 = 6; // Input Capture 5 Edge Select
  403. CS5 = 0; // Prescaler source of Timer/Counter 5
  404. // TCCR5C
  405. FOC5A = 7; // Force Output Compare 5A
  406. FOC5B = 6; // Force Output Compare 5B
  407. FOC5C = 5; // Force Output Compare 5C
  408. // TIMSK5
  409. ICIE5 = 5; // Timer/Counter5 Input Capture Interrupt Enable
  410. OCIE5C = 3; // Timer/Counter5 Output Compare C Match Interrupt Enable
  411. OCIE5B = 2; // Timer/Counter5 Output Compare B Match Interrupt Enable
  412. OCIE5A = 1; // Timer/Counter5 Output Compare A Match Interrupt Enable
  413. TOIE5 = 0; // Timer/Counter5 Overflow Interrupt Enable
  414. // TIFR5
  415. ICF5 = 5; // Input Capture Flag 5
  416. OCF5C = 3; // Output Compare Flag 5C
  417. OCF5B = 2; // Output Compare Flag 5B
  418. OCF5A = 1; // Output Compare Flag 5A
  419. TOV5 = 0; // Timer/Counter5 Overflow Flag
  420. // TCCR4A
  421. COM4A = 6; // Compare Output Mode 1A, bits
  422. COM4B = 4; // Compare Output Mode 4B, bits
  423. COM4C = 2; // Compare Output Mode 4C, bits
  424. WGM4 = 0; // Waveform Generation Mode
  425. // TCCR4B
  426. ICNC4 = 7; // Input Capture 4 Noise Canceler
  427. ICES4 = 6; // Input Capture 4 Edge Select
  428. CS4 = 0; // Prescaler source of Timer/Counter 4
  429. // TCCR4C
  430. FOC4A = 7; // Force Output Compare 4A
  431. FOC4B = 6; // Force Output Compare 4B
  432. FOC4C = 5; // Force Output Compare 4C
  433. // TIMSK4
  434. ICIE4 = 5; // Timer/Counter4 Input Capture Interrupt Enable
  435. OCIE4C = 3; // Timer/Counter4 Output Compare C Match Interrupt Enable
  436. OCIE4B = 2; // Timer/Counter4 Output Compare B Match Interrupt Enable
  437. OCIE4A = 1; // Timer/Counter4 Output Compare A Match Interrupt Enable
  438. TOIE4 = 0; // Timer/Counter4 Overflow Interrupt Enable
  439. // TIFR4
  440. ICF4 = 5; // Input Capture Flag 4
  441. OCF4C = 3; // Output Compare Flag 4C
  442. OCF4B = 2; // Output Compare Flag 4B
  443. OCF4A = 1; // Output Compare Flag 4A
  444. TOV4 = 0; // Timer/Counter4 Overflow Flag
  445. // TCCR3A
  446. COM3A = 6; // Compare Output Mode 1A, bits
  447. COM3B = 4; // Compare Output Mode 3B, bits
  448. COM3C = 2; // Compare Output Mode 3C, bits
  449. WGM3 = 0; // Waveform Generation Mode
  450. // TCCR3B
  451. ICNC3 = 7; // Input Capture 3 Noise Canceler
  452. ICES3 = 6; // Input Capture 3 Edge Select
  453. CS3 = 0; // Prescaler source of Timer/Counter 3
  454. // TCCR3C
  455. FOC3A = 7; // Force Output Compare 3A
  456. FOC3B = 6; // Force Output Compare 3B
  457. FOC3C = 5; // Force Output Compare 3C
  458. // TIMSK3
  459. ICIE3 = 5; // Timer/Counter3 Input Capture Interrupt Enable
  460. OCIE3C = 3; // Timer/Counter3 Output Compare C Match Interrupt Enable
  461. OCIE3B = 2; // Timer/Counter3 Output Compare B Match Interrupt Enable
  462. OCIE3A = 1; // Timer/Counter3 Output Compare A Match Interrupt Enable
  463. TOIE3 = 0; // Timer/Counter3 Overflow Interrupt Enable
  464. // TIFR3
  465. ICF3 = 5; // Input Capture Flag 3
  466. OCF3C = 3; // Output Compare Flag 3C
  467. OCF3B = 2; // Output Compare Flag 3B
  468. OCF3A = 1; // Output Compare Flag 3A
  469. TOV3 = 0; // Timer/Counter3 Overflow Flag
  470. // TCCR1A
  471. COM1A = 6; // Compare Output Mode 1A, bits
  472. COM1B = 4; // Compare Output Mode 1B, bits
  473. COM1C = 2; // Compare Output Mode 1C, bits
  474. WGM1 = 0; // Waveform Generation Mode
  475. // TCCR1B
  476. ICNC1 = 7; // Input Capture 1 Noise Canceler
  477. ICES1 = 6; // Input Capture 1 Edge Select
  478. CS1 = 0; // Prescaler source of Timer/Counter 1
  479. // TCCR1C
  480. FOC1A = 7; // Force Output Compare 1A
  481. FOC1B = 6; // Force Output Compare 1B
  482. FOC1C = 5; // Force Output Compare 1C
  483. // TIMSK1
  484. ICIE1 = 5; // Timer/Counter1 Input Capture Interrupt Enable
  485. OCIE1C = 3; // Timer/Counter1 Output Compare C Match Interrupt Enable
  486. OCIE1B = 2; // Timer/Counter1 Output Compare B Match Interrupt Enable
  487. OCIE1A = 1; // Timer/Counter1 Output Compare A Match Interrupt Enable
  488. TOIE1 = 0; // Timer/Counter1 Overflow Interrupt Enable
  489. // TIFR1
  490. ICF1 = 5; // Input Capture Flag 1
  491. OCF1C = 3; // Output Compare Flag 1C
  492. OCF1B = 2; // Output Compare Flag 1B
  493. OCF1A = 1; // Output Compare Flag 1A
  494. TOV1 = 0; // Timer/Counter1 Overflow Flag
  495. // MCUCR
  496. JTD = 7; // JTAG Interface Disable
  497. // MCUSR
  498. JTRF = 4; // JTAG Reset Flag
  499. // EICRA
  500. ISC3 = 6; // External Interrupt Sense Control Bit
  501. ISC2 = 4; // External Interrupt Sense Control Bit
  502. ISC1 = 2; // External Interrupt Sense Control Bit
  503. ISC0 = 0; // External Interrupt Sense Control Bit
  504. // EICRB
  505. ISC7 = 6; // External Interrupt 7-4 Sense Control Bit
  506. ISC6 = 4; // External Interrupt 7-4 Sense Control Bit
  507. ISC5 = 2; // External Interrupt 7-4 Sense Control Bit
  508. ISC4 = 0; // External Interrupt 7-4 Sense Control Bit
  509. // EIMSK
  510. INT = 0; // External Interrupt Request 7 Enable
  511. // EIFR
  512. INTF = 0; // External Interrupt Flags
  513. // PCIFR
  514. PCIF = 0; // Pin Change Interrupt Flags
  515. // PCICR
  516. PCIE = 0; // Pin Change Interrupt Enables
  517. // SREG
  518. I = 7; // Global Interrupt Enable
  519. T = 6; // Bit Copy Storage
  520. H = 5; // Half Carry Flag
  521. S = 4; // Sign Bit
  522. V = 3; // Two's Complement Overflow Flag
  523. N = 2; // Negative Flag
  524. Z = 1; // Zero Flag
  525. C = 0; // Carry Flag
  526. // MCUCR
  527. PUD = 4; // Pull-up disable
  528. IVSEL = 1; // Interrupt Vector Select
  529. IVCE = 0; // Interrupt Vector Change Enable
  530. // MCUSR
  531. WDRF = 3; // Watchdog Reset Flag
  532. BORF = 2; // Brown-out Reset Flag
  533. EXTRF = 1; // External Reset Flag
  534. PORF = 0; // Power-on reset flag
  535. // XMCRA
  536. SRE = 7; // External SRAM Enable
  537. SRL = 4; // Wait state page limit
  538. SRW1 = 2; // Wait state select bit upper page
  539. SRW0 = 0; // Wait state select bit lower page
  540. // XMCRB
  541. XMBK = 7; // External Memory Bus Keeper Enable
  542. XMM = 0; // External Memory High Mask
  543. // CLKPR
  544. CLKPCE = 7; //
  545. CLKPS = 0; //
  546. // SMCR
  547. SM = 1; // Sleep Mode Select bits
  548. SE = 0; // Sleep Enable
  549. // GPIOR2
  550. GPIOR = 0; // General Purpose IO Register 2 bis
  551. // GPIOR1
  552. // GPIOR0
  553. GPIOR07 = 7; // General Purpose IO Register 0 bit 7
  554. GPIOR06 = 6; // General Purpose IO Register 0 bit 6
  555. GPIOR05 = 5; // General Purpose IO Register 0 bit 5
  556. GPIOR04 = 4; // General Purpose IO Register 0 bit 4
  557. GPIOR03 = 3; // General Purpose IO Register 0 bit 3
  558. GPIOR02 = 2; // General Purpose IO Register 0 bit 2
  559. GPIOR01 = 1; // General Purpose IO Register 0 bit 1
  560. GPIOR00 = 0; // General Purpose IO Register 0 bit 0
  561. // PRR1
  562. PRTIM5 = 5; // Power Reduction Timer/Counter5
  563. PRTIM4 = 4; // Power Reduction Timer/Counter4
  564. PRTIM3 = 3; // Power Reduction Timer/Counter3
  565. PRUSART = 0; // Power Reduction USART3
  566. // PRR0
  567. PRTWI = 7; // Power Reduction TWI
  568. PRTIM2 = 6; // Power Reduction Timer/Counter2
  569. PRTIM0 = 5; // Power Reduction Timer/Counter0
  570. PRTIM1 = 3; // Power Reduction Timer/Counter1
  571. PRSPI = 2; // Power Reduction Serial Peripheral Interface
  572. PRUSART0 = 1; // Power Reduction USART
  573. PRADC = 0; // Power Reduction ADC
  574. // ADMUX
  575. REFS = 6; // Reference Selection Bits
  576. ADLAR = 5; // Left Adjust Result
  577. MUX = 0; // Analog Channel and Gain Selection Bits
  578. // ADCSRA
  579. ADEN = 7; // ADC Enable
  580. ADSC = 6; // ADC Start Conversion
  581. ADATE = 5; // ADC Auto Trigger Enable
  582. ADIF = 4; // ADC Interrupt Flag
  583. ADIE = 3; // ADC Interrupt Enable
  584. ADPS = 0; // ADC Prescaler Select Bits
  585. // ADCSRB
  586. MUX5 = 3; // Analog Channel and Gain Selection Bits
  587. ADTS = 0; // ADC Auto Trigger Source bits
  588. // DIDR2
  589. ADC15D = 7; //
  590. ADC14D = 6; //
  591. ADC13D = 5; //
  592. ADC12D = 4; //
  593. ADC11D = 3; //
  594. ADC10D = 2; //
  595. ADC9D = 1; //
  596. ADC8D = 0; //
  597. // DIDR0
  598. ADC7D = 7; //
  599. ADC6D = 6; //
  600. ADC5D = 5; //
  601. ADC4D = 4; //
  602. ADC3D = 3; //
  603. ADC2D = 2; //
  604. ADC1D = 1; //
  605. ADC0D = 0; //
  606. // SPMCSR
  607. SPMIE = 7; // SPM Interrupt Enable
  608. RWWSB = 6; // Read While Write Section Busy
  609. SIGRD = 5; // Signature Row Read
  610. RWWSRE = 4; // Read While Write section read enable
  611. BLBSET = 3; // Boot Lock Bit Set
  612. PGWRT = 2; // Page Write
  613. PGERS = 1; // Page Erase
  614. SPMEN = 0; // Store Program Memory Enable
  615. // UCSR2A
  616. RXC2 = 7; // USART Receive Complete
  617. TXC2 = 6; // USART Transmitt Complete
  618. UDRE2 = 5; // USART Data Register Empty
  619. FE2 = 4; // Framing Error
  620. DOR2 = 3; // Data overRun
  621. UPE2 = 2; // Parity Error
  622. U2X2 = 1; // Double the USART transmission speed
  623. MPCM2 = 0; // Multi-processor Communication Mode
  624. // UCSR2B
  625. RXCIE2 = 7; // RX Complete Interrupt Enable
  626. TXCIE2 = 6; // TX Complete Interrupt Enable
  627. UDRIE2 = 5; // USART Data register Empty Interrupt Enable
  628. RXEN2 = 4; // Receiver Enable
  629. TXEN2 = 3; // Transmitter Enable
  630. UCSZ22 = 2; // Character Size
  631. RXB82 = 1; // Receive Data Bit 8
  632. TXB82 = 0; // Transmit Data Bit 8
  633. // UCSR2C
  634. UMSEL2 = 6; // USART Mode Select
  635. UPM2 = 4; // Parity Mode Bits
  636. USBS2 = 3; // Stop Bit Select
  637. UCSZ2 = 1; // Character Size
  638. UCPOL2 = 0; // Clock Polarity
  639. // UCSR3A
  640. RXC3 = 7; // USART Receive Complete
  641. TXC3 = 6; // USART Transmitt Complete
  642. UDRE3 = 5; // USART Data Register Empty
  643. FE3 = 4; // Framing Error
  644. DOR3 = 3; // Data overRun
  645. UPE3 = 2; // Parity Error
  646. U2X3 = 1; // Double the USART transmission speed
  647. MPCM3 = 0; // Multi-processor Communication Mode
  648. // UCSR3B
  649. RXCIE3 = 7; // RX Complete Interrupt Enable
  650. TXCIE3 = 6; // TX Complete Interrupt Enable
  651. UDRIE3 = 5; // USART Data register Empty Interrupt Enable
  652. RXEN3 = 4; // Receiver Enable
  653. TXEN3 = 3; // Transmitter Enable
  654. UCSZ32 = 2; // Character Size
  655. RXB83 = 1; // Receive Data Bit 8
  656. TXB83 = 0; // Transmit Data Bit 8
  657. // UCSR3C
  658. UMSEL3 = 6; // USART Mode Select
  659. UPM3 = 4; // Parity Mode Bits
  660. USBS3 = 3; // Stop Bit Select
  661. UCSZ3 = 1; // Character Size
  662. UCPOL3 = 0; // Clock Polarity
  663. implementation
  664. {$i avrcommon.inc}
  665. procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 1 External Interrupt Request 0
  666. procedure INT1_ISR; external name 'INT1_ISR'; // Interrupt 2 External Interrupt Request 1
  667. procedure INT2_ISR; external name 'INT2_ISR'; // Interrupt 3 External Interrupt Request 2
  668. procedure INT3_ISR; external name 'INT3_ISR'; // Interrupt 4 External Interrupt Request 3
  669. procedure INT4_ISR; external name 'INT4_ISR'; // Interrupt 5 External Interrupt Request 4
  670. procedure INT5_ISR; external name 'INT5_ISR'; // Interrupt 6 External Interrupt Request 5
  671. procedure INT6_ISR; external name 'INT6_ISR'; // Interrupt 7 External Interrupt Request 6
  672. procedure INT7_ISR; external name 'INT7_ISR'; // Interrupt 8 External Interrupt Request 7
  673. procedure PCINT0_ISR; external name 'PCINT0_ISR'; // Interrupt 9 Pin Change Interrupt Request 0
  674. procedure PCINT1_ISR; external name 'PCINT1_ISR'; // Interrupt 10 Pin Change Interrupt Request 1
  675. procedure PCINT2_ISR; external name 'PCINT2_ISR'; // Interrupt 11 Pin Change Interrupt Request 2
  676. procedure WDT_ISR; external name 'WDT_ISR'; // Interrupt 12 Watchdog Time-out Interrupt
  677. procedure TIMER2_COMPA_ISR; external name 'TIMER2_COMPA_ISR'; // Interrupt 13 Timer/Counter2 Compare Match A
  678. procedure TIMER2_COMPB_ISR; external name 'TIMER2_COMPB_ISR'; // Interrupt 14 Timer/Counter2 Compare Match B
  679. procedure TIMER2_OVF_ISR; external name 'TIMER2_OVF_ISR'; // Interrupt 15 Timer/Counter2 Overflow
  680. procedure TIMER1_CAPT_ISR; external name 'TIMER1_CAPT_ISR'; // Interrupt 16 Timer/Counter1 Capture Event
  681. procedure TIMER1_COMPA_ISR; external name 'TIMER1_COMPA_ISR'; // Interrupt 17 Timer/Counter1 Compare Match A
  682. procedure TIMER1_COMPB_ISR; external name 'TIMER1_COMPB_ISR'; // Interrupt 18 Timer/Counter1 Compare Match B
  683. procedure TIMER1_COMPC_ISR; external name 'TIMER1_COMPC_ISR'; // Interrupt 19 Timer/Counter1 Compare Match C
  684. procedure TIMER1_OVF_ISR; external name 'TIMER1_OVF_ISR'; // Interrupt 20 Timer/Counter1 Overflow
  685. procedure TIMER0_COMPA_ISR; external name 'TIMER0_COMPA_ISR'; // Interrupt 21 Timer/Counter0 Compare Match A
  686. procedure TIMER0_COMPB_ISR; external name 'TIMER0_COMPB_ISR'; // Interrupt 22 Timer/Counter0 Compare Match B
  687. procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 23 Timer/Counter0 Overflow
  688. procedure SPI__STC_ISR; external name 'SPI__STC_ISR'; // Interrupt 24 SPI Serial Transfer Complete
  689. procedure USART0__RX_ISR; external name 'USART0__RX_ISR'; // Interrupt 25 USART0, Rx Complete
  690. procedure USART0__UDRE_ISR; external name 'USART0__UDRE_ISR'; // Interrupt 26 USART0 Data register Empty
  691. procedure USART0__TX_ISR; external name 'USART0__TX_ISR'; // Interrupt 27 USART0, Tx Complete
  692. procedure ANALOG_COMP_ISR; external name 'ANALOG_COMP_ISR'; // Interrupt 28 Analog Comparator
  693. procedure ADC_ISR; external name 'ADC_ISR'; // Interrupt 29 ADC Conversion Complete
  694. procedure EE_READY_ISR; external name 'EE_READY_ISR'; // Interrupt 30 EEPROM Ready
  695. procedure TIMER3_CAPT_ISR; external name 'TIMER3_CAPT_ISR'; // Interrupt 31 Timer/Counter3 Capture Event
  696. procedure TIMER3_COMPA_ISR; external name 'TIMER3_COMPA_ISR'; // Interrupt 32 Timer/Counter3 Compare Match A
  697. procedure TIMER3_COMPB_ISR; external name 'TIMER3_COMPB_ISR'; // Interrupt 33 Timer/Counter3 Compare Match B
  698. procedure TIMER3_COMPC_ISR; external name 'TIMER3_COMPC_ISR'; // Interrupt 34 Timer/Counter3 Compare Match C
  699. procedure TIMER3_OVF_ISR; external name 'TIMER3_OVF_ISR'; // Interrupt 35 Timer/Counter3 Overflow
  700. procedure USART1__RX_ISR; external name 'USART1__RX_ISR'; // Interrupt 36 USART1, Rx Complete
  701. procedure USART1__UDRE_ISR; external name 'USART1__UDRE_ISR'; // Interrupt 37 USART1 Data register Empty
  702. procedure USART1__TX_ISR; external name 'USART1__TX_ISR'; // Interrupt 38 USART1, Tx Complete
  703. procedure TWI_ISR; external name 'TWI_ISR'; // Interrupt 39 2-wire Serial Interface
  704. procedure SPM_READY_ISR; external name 'SPM_READY_ISR'; // Interrupt 40 Store Program Memory Read
  705. procedure TIMER4_CAPT_ISR; external name 'TIMER4_CAPT_ISR'; // Interrupt 41 Timer/Counter4 Capture Event
  706. procedure TIMER4_COMPA_ISR; external name 'TIMER4_COMPA_ISR'; // Interrupt 42 Timer/Counter4 Compare Match A
  707. procedure TIMER4_COMPB_ISR; external name 'TIMER4_COMPB_ISR'; // Interrupt 43 Timer/Counter4 Compare Match B
  708. procedure TIMER4_COMPC_ISR; external name 'TIMER4_COMPC_ISR'; // Interrupt 44 Timer/Counter4 Compare Match C
  709. procedure TIMER4_OVF_ISR; external name 'TIMER4_OVF_ISR'; // Interrupt 45 Timer/Counter4 Overflow
  710. procedure TIMER5_CAPT_ISR; external name 'TIMER5_CAPT_ISR'; // Interrupt 46 Timer/Counter5 Capture Event
  711. procedure TIMER5_COMPA_ISR; external name 'TIMER5_COMPA_ISR'; // Interrupt 47 Timer/Counter5 Compare Match A
  712. procedure TIMER5_COMPB_ISR; external name 'TIMER5_COMPB_ISR'; // Interrupt 48 Timer/Counter5 Compare Match B
  713. procedure TIMER5_COMPC_ISR; external name 'TIMER5_COMPC_ISR'; // Interrupt 49 Timer/Counter5 Compare Match C
  714. procedure TIMER5_OVF_ISR; external name 'TIMER5_OVF_ISR'; // Interrupt 50 Timer/Counter5 Overflow
  715. procedure USART2__RX_ISR; external name 'USART2__RX_ISR'; // Interrupt 51 USART2, Rx Complete
  716. procedure USART2__UDRE_ISR; external name 'USART2__UDRE_ISR'; // Interrupt 52 USART2 Data register Empty
  717. procedure USART2__TX_ISR; external name 'USART2__TX_ISR'; // Interrupt 53 USART2, Tx Complete
  718. procedure USART3__RX_ISR; external name 'USART3__RX_ISR'; // Interrupt 54 USART3, Rx Complete
  719. procedure USART3__UDRE_ISR; external name 'USART3__UDRE_ISR'; // Interrupt 55 USART3 Data register Empty
  720. procedure USART3__TX_ISR; external name 'USART3__TX_ISR'; // Interrupt 56 USART3, Tx Complete
  721. procedure _FPC_start; assembler; nostackframe;
  722. label
  723. _start;
  724. asm
  725. .init
  726. .globl _start
  727. jmp _start
  728. jmp INT0_ISR
  729. jmp INT1_ISR
  730. jmp INT2_ISR
  731. jmp INT3_ISR
  732. jmp INT4_ISR
  733. jmp INT5_ISR
  734. jmp INT6_ISR
  735. jmp INT7_ISR
  736. jmp PCINT0_ISR
  737. jmp PCINT1_ISR
  738. jmp PCINT2_ISR
  739. jmp WDT_ISR
  740. jmp TIMER2_COMPA_ISR
  741. jmp TIMER2_COMPB_ISR
  742. jmp TIMER2_OVF_ISR
  743. jmp TIMER1_CAPT_ISR
  744. jmp TIMER1_COMPA_ISR
  745. jmp TIMER1_COMPB_ISR
  746. jmp TIMER1_COMPC_ISR
  747. jmp TIMER1_OVF_ISR
  748. jmp TIMER0_COMPA_ISR
  749. jmp TIMER0_COMPB_ISR
  750. jmp TIMER0_OVF_ISR
  751. jmp SPI__STC_ISR
  752. jmp USART0__RX_ISR
  753. jmp USART0__UDRE_ISR
  754. jmp USART0__TX_ISR
  755. jmp ANALOG_COMP_ISR
  756. jmp ADC_ISR
  757. jmp EE_READY_ISR
  758. jmp TIMER3_CAPT_ISR
  759. jmp TIMER3_COMPA_ISR
  760. jmp TIMER3_COMPB_ISR
  761. jmp TIMER3_COMPC_ISR
  762. jmp TIMER3_OVF_ISR
  763. jmp USART1__RX_ISR
  764. jmp USART1__UDRE_ISR
  765. jmp USART1__TX_ISR
  766. jmp TWI_ISR
  767. jmp SPM_READY_ISR
  768. jmp TIMER4_CAPT_ISR
  769. jmp TIMER4_COMPA_ISR
  770. jmp TIMER4_COMPB_ISR
  771. jmp TIMER4_COMPC_ISR
  772. jmp TIMER4_OVF_ISR
  773. jmp TIMER5_CAPT_ISR
  774. jmp TIMER5_COMPA_ISR
  775. jmp TIMER5_COMPB_ISR
  776. jmp TIMER5_COMPC_ISR
  777. jmp TIMER5_OVF_ISR
  778. jmp USART2__RX_ISR
  779. jmp USART2__UDRE_ISR
  780. jmp USART2__TX_ISR
  781. jmp USART3__RX_ISR
  782. jmp USART3__UDRE_ISR
  783. jmp USART3__TX_ISR
  784. {$i start.inc}
  785. .weak INT0_ISR
  786. .weak INT1_ISR
  787. .weak INT2_ISR
  788. .weak INT3_ISR
  789. .weak INT4_ISR
  790. .weak INT5_ISR
  791. .weak INT6_ISR
  792. .weak INT7_ISR
  793. .weak PCINT0_ISR
  794. .weak PCINT1_ISR
  795. .weak PCINT2_ISR
  796. .weak WDT_ISR
  797. .weak TIMER2_COMPA_ISR
  798. .weak TIMER2_COMPB_ISR
  799. .weak TIMER2_OVF_ISR
  800. .weak TIMER1_CAPT_ISR
  801. .weak TIMER1_COMPA_ISR
  802. .weak TIMER1_COMPB_ISR
  803. .weak TIMER1_COMPC_ISR
  804. .weak TIMER1_OVF_ISR
  805. .weak TIMER0_COMPA_ISR
  806. .weak TIMER0_COMPB_ISR
  807. .weak TIMER0_OVF_ISR
  808. .weak SPI__STC_ISR
  809. .weak USART0__RX_ISR
  810. .weak USART0__UDRE_ISR
  811. .weak USART0__TX_ISR
  812. .weak ANALOG_COMP_ISR
  813. .weak ADC_ISR
  814. .weak EE_READY_ISR
  815. .weak TIMER3_CAPT_ISR
  816. .weak TIMER3_COMPA_ISR
  817. .weak TIMER3_COMPB_ISR
  818. .weak TIMER3_COMPC_ISR
  819. .weak TIMER3_OVF_ISR
  820. .weak USART1__RX_ISR
  821. .weak USART1__UDRE_ISR
  822. .weak USART1__TX_ISR
  823. .weak TWI_ISR
  824. .weak SPM_READY_ISR
  825. .weak TIMER4_CAPT_ISR
  826. .weak TIMER4_COMPA_ISR
  827. .weak TIMER4_COMPB_ISR
  828. .weak TIMER4_COMPC_ISR
  829. .weak TIMER4_OVF_ISR
  830. .weak TIMER5_CAPT_ISR
  831. .weak TIMER5_COMPA_ISR
  832. .weak TIMER5_COMPB_ISR
  833. .weak TIMER5_COMPC_ISR
  834. .weak TIMER5_OVF_ISR
  835. .weak USART2__RX_ISR
  836. .weak USART2__UDRE_ISR
  837. .weak USART2__TX_ISR
  838. .weak USART3__RX_ISR
  839. .weak USART3__UDRE_ISR
  840. .weak USART3__TX_ISR
  841. .set INT0_ISR, Default_IRQ_handler
  842. .set INT1_ISR, Default_IRQ_handler
  843. .set INT2_ISR, Default_IRQ_handler
  844. .set INT3_ISR, Default_IRQ_handler
  845. .set INT4_ISR, Default_IRQ_handler
  846. .set INT5_ISR, Default_IRQ_handler
  847. .set INT6_ISR, Default_IRQ_handler
  848. .set INT7_ISR, Default_IRQ_handler
  849. .set PCINT0_ISR, Default_IRQ_handler
  850. .set PCINT1_ISR, Default_IRQ_handler
  851. .set PCINT2_ISR, Default_IRQ_handler
  852. .set WDT_ISR, Default_IRQ_handler
  853. .set TIMER2_COMPA_ISR, Default_IRQ_handler
  854. .set TIMER2_COMPB_ISR, Default_IRQ_handler
  855. .set TIMER2_OVF_ISR, Default_IRQ_handler
  856. .set TIMER1_CAPT_ISR, Default_IRQ_handler
  857. .set TIMER1_COMPA_ISR, Default_IRQ_handler
  858. .set TIMER1_COMPB_ISR, Default_IRQ_handler
  859. .set TIMER1_COMPC_ISR, Default_IRQ_handler
  860. .set TIMER1_OVF_ISR, Default_IRQ_handler
  861. .set TIMER0_COMPA_ISR, Default_IRQ_handler
  862. .set TIMER0_COMPB_ISR, Default_IRQ_handler
  863. .set TIMER0_OVF_ISR, Default_IRQ_handler
  864. .set SPI__STC_ISR, Default_IRQ_handler
  865. .set USART0__RX_ISR, Default_IRQ_handler
  866. .set USART0__UDRE_ISR, Default_IRQ_handler
  867. .set USART0__TX_ISR, Default_IRQ_handler
  868. .set ANALOG_COMP_ISR, Default_IRQ_handler
  869. .set ADC_ISR, Default_IRQ_handler
  870. .set EE_READY_ISR, Default_IRQ_handler
  871. .set TIMER3_CAPT_ISR, Default_IRQ_handler
  872. .set TIMER3_COMPA_ISR, Default_IRQ_handler
  873. .set TIMER3_COMPB_ISR, Default_IRQ_handler
  874. .set TIMER3_COMPC_ISR, Default_IRQ_handler
  875. .set TIMER3_OVF_ISR, Default_IRQ_handler
  876. .set USART1__RX_ISR, Default_IRQ_handler
  877. .set USART1__UDRE_ISR, Default_IRQ_handler
  878. .set USART1__TX_ISR, Default_IRQ_handler
  879. .set TWI_ISR, Default_IRQ_handler
  880. .set SPM_READY_ISR, Default_IRQ_handler
  881. .set TIMER4_CAPT_ISR, Default_IRQ_handler
  882. .set TIMER4_COMPA_ISR, Default_IRQ_handler
  883. .set TIMER4_COMPB_ISR, Default_IRQ_handler
  884. .set TIMER4_COMPC_ISR, Default_IRQ_handler
  885. .set TIMER4_OVF_ISR, Default_IRQ_handler
  886. .set TIMER5_CAPT_ISR, Default_IRQ_handler
  887. .set TIMER5_COMPA_ISR, Default_IRQ_handler
  888. .set TIMER5_COMPB_ISR, Default_IRQ_handler
  889. .set TIMER5_COMPC_ISR, Default_IRQ_handler
  890. .set TIMER5_OVF_ISR, Default_IRQ_handler
  891. .set USART2__RX_ISR, Default_IRQ_handler
  892. .set USART2__UDRE_ISR, Default_IRQ_handler
  893. .set USART2__TX_ISR, Default_IRQ_handler
  894. .set USART3__RX_ISR, Default_IRQ_handler
  895. .set USART3__UDRE_ISR, Default_IRQ_handler
  896. .set USART3__TX_ISR, Default_IRQ_handler
  897. end;
  898. end.