atmega32c1.pp 26 KB

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