at90pwm3.pp 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061
  1. unit AT90PWM3;
  2. interface
  3. var
  4. PINB: byte absolute $23; // Port B Input Pins
  5. DDRB: byte absolute $24; // Port B Data Direction Register
  6. PORTB: byte absolute $25; // Port B Data Register
  7. PINC: byte absolute $26; // Port C Input Pins
  8. DDRC: byte absolute $27; // Port C Data Direction Register
  9. PORTC: byte absolute $28; // Port C Data Register
  10. PIND: byte absolute $29; // Port D Input Pins
  11. DDRD: byte absolute $2A; // Port D Data Direction Register
  12. PORTD: byte absolute $2B; // Port D Data Register
  13. PINE: byte absolute $2C; // Port E Input Pins
  14. DDRE: byte absolute $2D; // Port E Data Direction Register
  15. PORTE: byte absolute $2E; // Port E Data Register
  16. TIFR0: byte absolute $35; // Timer/Counter0 Interrupt Flag register
  17. TIFR1: byte absolute $36; // Timer/Counter Interrupt Flag register
  18. GPIOR1: byte absolute $39; // General Purpose IO Register 1
  19. GPIOR2: byte absolute $3A; // General Purpose IO Register 2
  20. GPIOR3: byte absolute $3B; // General Purpose IO Register 3
  21. EIFR: byte absolute $3C; // External Interrupt Flag Register
  22. EIMSK: byte absolute $3D; // External Interrupt Mask Register
  23. GPIOR0: byte absolute $3E; // General Purpose IO Register 0
  24. EECR: byte absolute $3F; // EEPROM Control Register
  25. EEDR: byte absolute $40; // EEPROM Data Register
  26. EEAR: word absolute $41; // EEPROM Read/Write Access Bytes
  27. EEARL: byte absolute $41; // EEPROM Read/Write Access Bytes
  28. EEARH: byte absolute $42; // EEPROM Read/Write Access Bytes;
  29. GTCCR: byte absolute $43; // General Timer/Counter Control Register
  30. TCCR0A: byte absolute $44; // Timer/Counter Control Register A
  31. TCCR0B: byte absolute $45; // Timer/Counter Control Register B
  32. TCNT0: byte absolute $46; // Timer/Counter0
  33. OCR0A: byte absolute $47; // Timer/Counter0 Output Compare Register
  34. OCR0B: byte absolute $48; // Timer/Counter0 Output Compare Register
  35. PLLCSR: byte absolute $49; // PLL Control And Status Register
  36. SPCR: byte absolute $4C; // SPI Control Register
  37. SPSR: byte absolute $4D; // SPI Status Register
  38. SPDR: byte absolute $4E; // SPI Data Register
  39. ACSR: byte absolute $50; // Analog Comparator Status Register
  40. SMCR: byte absolute $53; // Sleep Mode Control Register
  41. MCUSR: byte absolute $54; // MCU Status Register
  42. MCUCR: byte absolute $55; // MCU Control Register
  43. SPMCSR: byte absolute $57; // Store Program Memory Control Register
  44. SP: word absolute $5D; // Stack Pointer
  45. SPL: byte absolute $5D; // Stack Pointer
  46. SPH: byte absolute $5E; // Stack Pointer ;
  47. SREG: byte absolute $5F; // Status Register
  48. WDTCSR: byte absolute $60; // Watchdog Timer Control Register
  49. CLKPR: byte absolute $61;
  50. PRR: byte absolute $64; // Power Reduction Register
  51. OSCCAL: byte absolute $66; // Oscillator Calibration Value
  52. EICRA: byte absolute $69; // External Interrupt Control Register A
  53. TIMSK0: byte absolute $6E; // Timer/Counter0 Interrupt Mask Register
  54. TIMSK1: byte absolute $6F; // Timer/Counter Interrupt Mask Register
  55. AMP0CSR: byte absolute $76;
  56. AMP1CSR: byte absolute $77;
  57. ADC: word absolute $78; // ADC Data Register Bytes
  58. ADCL: byte absolute $78; // ADC Data Register Bytes
  59. ADCH: byte absolute $79; // ADC Data Register Bytes;
  60. ADCSRA: byte absolute $7A; // The ADC Control and Status register
  61. ADCSRB: byte absolute $7B; // ADC Control and Status Register B
  62. ADMUX: byte absolute $7C; // The ADC multiplexer Selection Register
  63. DIDR0: byte absolute $7E; // Digital Input Disable Register 0
  64. DIDR1: byte absolute $7F; // Digital Input Disable Register 1
  65. TCCR1A: byte absolute $80; // Timer/Counter1 Control Register A
  66. TCCR1B: byte absolute $81; // Timer/Counter1 Control Register B
  67. TCCR1C: byte absolute $82; // Timer/Counter1 Control Register C
  68. TCNT1: word absolute $84; // Timer/Counter1 Bytes
  69. TCNT1L: byte absolute $84; // Timer/Counter1 Bytes
  70. TCNT1H: byte absolute $85; // Timer/Counter1 Bytes;
  71. ICR1: word absolute $86; // Timer/Counter1 Input Capture Register Bytes
  72. ICR1L: byte absolute $86; // Timer/Counter1 Input Capture Register Bytes
  73. ICR1H: byte absolute $87; // Timer/Counter1 Input Capture Register Bytes;
  74. OCR1A: word absolute $88; // Timer/Counter1 Output Compare Register Bytes
  75. OCR1AL: byte absolute $88; // Timer/Counter1 Output Compare Register Bytes
  76. OCR1AH: byte absolute $89; // Timer/Counter1 Output Compare Register Bytes;
  77. OCR1B: word absolute $8A; // Timer/Counter1 Output Compare Register Bytes
  78. OCR1BL: byte absolute $8A; // Timer/Counter1 Output Compare Register Bytes
  79. OCR1BH: byte absolute $8B; // Timer/Counter1 Output Compare Register Bytes;
  80. PIFR0: byte absolute $A0; // PSC0 Interrupt Flag Register
  81. PIM0: byte absolute $A1; // PSC0 Interrupt Mask Register
  82. PIFR1: byte absolute $A2; // PSC1 Interrupt Flag Register
  83. PIM1: byte absolute $A3; // PSC1 Interrupt Mask Register
  84. PIFR2: byte absolute $A4; // PSC2 Interrupt Flag Register
  85. PIM2: byte absolute $A5; // PSC2 Interrupt Mask Register
  86. DACON: byte absolute $AA; // DAC Control Register
  87. DAC: word absolute $AB; // DAC Data Register
  88. DACL: byte absolute $AB; // DAC Data Register
  89. DACH: byte absolute $AC; // DAC Data Register;
  90. AC0CON: byte absolute $AD; // Analog Comparator 0 Control Register
  91. AC1CON: byte absolute $AE; // Analog Comparator 1 Control Register
  92. AC2CON: byte absolute $AF; // Analog Comparator 2 Control Register
  93. UCSRA: byte absolute $C0; // USART Control and Status register A
  94. UCSRB: byte absolute $C1; // USART Control an Status register B
  95. UCSRC: byte absolute $C2; // USART Control an Status register C
  96. UBRR: word absolute $C4; // USART Baud Rate Register
  97. UBRRL: byte absolute $C4; // USART Baud Rate Register
  98. UBRRH: byte absolute $C5; // USART Baud Rate Register;
  99. UDR: byte absolute $C6; // USART I/O Data Register
  100. EUCSRA: byte absolute $C8; // EUSART Control and Status Register A
  101. EUCSRB: byte absolute $C9; // EUSART Control Register B
  102. EUCSRC: byte absolute $CA; // EUSART Status Register C
  103. MUBRR: word absolute $CC; // Manchester Receiver Baud Rate Register
  104. MUBRRL: byte absolute $CC; // Manchester Receiver Baud Rate Register
  105. MUBRRH: byte absolute $CD; // Manchester Receiver Baud Rate Register;
  106. EUDR: byte absolute $CE; // EUSART I/O Data Register
  107. PSOC0: byte absolute $D0; // PSC0 Synchro and Output Configuration
  108. OCR0SA: word absolute $D2; // Output Compare 0 SA Register
  109. OCR0SAL: byte absolute $D2; // Output Compare 0 SA Register
  110. OCR0SAH: byte absolute $D3; // Output Compare 0 SA Register;
  111. OCR0RA: word absolute $D4; // Output Compare 0 RA Register
  112. OCR0RAL: byte absolute $D4; // Output Compare 0 RA Register
  113. OCR0RAH: byte absolute $D5; // Output Compare 0 RA Register;
  114. OCR0SB: word absolute $D6; // Output Compare 0 SB Register
  115. OCR0SBL: byte absolute $D6; // Output Compare 0 SB Register
  116. OCR0SBH: byte absolute $D7; // Output Compare 0 SB Register;
  117. OCR0RB: word absolute $D8; // Output Compare 0 RB Register
  118. OCR0RBL: byte absolute $D8; // Output Compare 0 RB Register
  119. OCR0RBH: byte absolute $D9; // Output Compare 0 RB Register;
  120. PCNF0: byte absolute $DA; // PSC 0 Configuration Register
  121. PCTL0: byte absolute $DB; // PSC 0 Control Register
  122. PFRC0A: byte absolute $DC; // PSC 0 Input A Control
  123. PFRC0B: byte absolute $DD; // PSC 0 Input B Control
  124. PICR0: word absolute $DE; // PSC 0 Input Capture Register
  125. PICR0L: byte absolute $DE; // PSC 0 Input Capture Register
  126. PICR0H: byte absolute $DF; // PSC 0 Input Capture Register ;
  127. PSOC1: byte absolute $E0; // PSC1 Synchro and Output Configuration
  128. OCR1SA: word absolute $E2; // Output Compare SA Register
  129. OCR1SAL: byte absolute $E2; // Output Compare SA Register
  130. OCR1SAH: byte absolute $E3; // Output Compare SA Register ;
  131. OCR1RA: word absolute $E4; // Output Compare RA Register
  132. OCR1RAL: byte absolute $E4; // Output Compare RA Register
  133. OCR1RAH: byte absolute $E5; // Output Compare RA Register ;
  134. OCR1SB: word absolute $E6; // Output Compare SB Register
  135. OCR1SBL: byte absolute $E6; // Output Compare SB Register
  136. OCR1SBH: byte absolute $E7; // Output Compare SB Register ;
  137. OCR1RB: word absolute $E8; // Output Compare RB Register
  138. OCR1RBL: byte absolute $E8; // Output Compare RB Register
  139. OCR1RBH: byte absolute $E9; // Output Compare RB Register ;
  140. PCNF1: byte absolute $EA; // PSC 1 Configuration Register
  141. PCTL1: byte absolute $EB; // PSC 1 Control Register
  142. PFRC1A: byte absolute $EC; // PSC 1 Input B Control
  143. PFRC1B: byte absolute $ED; // PSC 1 Input B Control
  144. PICR1: word absolute $EE; // PSC 1 Input Capture Register
  145. PICR1L: byte absolute $EE; // PSC 1 Input Capture Register
  146. PICR1H: byte absolute $EF; // PSC 1 Input Capture Register ;
  147. PSOC2: byte absolute $F0; // PSC2 Synchro and Output Configuration
  148. POM2: byte absolute $F1; // PSC 2 Output Matrix
  149. OCR2SA: word absolute $F2; // Output Compare 2 SA Register
  150. OCR2SAL: byte absolute $F2; // Output Compare 2 SA Register
  151. OCR2SAH: byte absolute $F3; // Output Compare 2 SA Register;
  152. OCR2RA: word absolute $F4; // Output Compare 2 RA Register
  153. OCR2RAL: byte absolute $F4; // Output Compare 2 RA Register
  154. OCR2RAH: byte absolute $F5; // Output Compare 2 RA Register;
  155. OCR2SB: word absolute $F6; // Output Compare 2 SB Register
  156. OCR2SBL: byte absolute $F6; // Output Compare 2 SB Register
  157. OCR2SBH: byte absolute $F7; // Output Compare 2 SB Register;
  158. OCR2RB: word absolute $F8; // Output Compare 2 RB Register
  159. OCR2RBL: byte absolute $F8; // Output Compare 2 RB Register
  160. OCR2RBH: byte absolute $F9; // Output Compare 2 RB Register;
  161. PCNF2: byte absolute $FA; // PSC 2 Configuration Register
  162. PCTL2: byte absolute $FB; // PSC 2 Control Register
  163. PFRC2A: byte absolute $FC; // PSC 2 Input B Control
  164. PFRC2B: byte absolute $FD; // PSC 2 Input B Control
  165. PICR2: word absolute $FE; // PSC 2 Input Capture Register
  166. PICR2L: byte absolute $FE; // PSC 2 Input Capture Register
  167. PICR2H: byte absolute $FF; // PSC 2 Input Capture Register ;
  168. const
  169. // Port B Data Register
  170. PB0 = $00;
  171. PB1 = $01;
  172. PB2 = $02;
  173. PB3 = $03;
  174. PB4 = $04;
  175. PB5 = $05;
  176. PB6 = $06;
  177. PB7 = $07;
  178. // Port C Data Register
  179. PC0 = $00;
  180. PC1 = $01;
  181. PC2 = $02;
  182. PC3 = $03;
  183. PC4 = $04;
  184. PC5 = $05;
  185. PC6 = $06;
  186. PC7 = $07;
  187. // Port D Data Register
  188. PD0 = $00;
  189. PD1 = $01;
  190. PD2 = $02;
  191. PD3 = $03;
  192. PD4 = $04;
  193. PD5 = $05;
  194. PD6 = $06;
  195. PD7 = $07;
  196. // Port E Data Register
  197. PE0 = $00;
  198. PE1 = $01;
  199. PE2 = $02;
  200. // Timer/Counter0 Interrupt Flag register
  201. TOV0 = $00;
  202. OCF0A = $01;
  203. OCF0B = $02;
  204. // Timer/Counter Interrupt Flag register
  205. TOV1 = $00;
  206. OCF1A = $01;
  207. OCF1B = $02;
  208. ICF1 = $05;
  209. // General Purpose IO Register 3
  210. GPIOR30 = $00; // General Purpose IO Register 3 bis
  211. GPIOR31 = $01; // General Purpose IO Register 3 bis
  212. GPIOR32 = $02; // General Purpose IO Register 3 bis
  213. GPIOR33 = $03; // General Purpose IO Register 3 bis
  214. GPIOR34 = $04; // General Purpose IO Register 3 bis
  215. GPIOR35 = $05; // General Purpose IO Register 3 bis
  216. GPIOR36 = $06; // General Purpose IO Register 3 bis
  217. GPIOR37 = $07; // General Purpose IO Register 3 bis
  218. // External Interrupt Flag Register
  219. INTF0 = $00; // External Interrupt Flags
  220. INTF1 = $01; // External Interrupt Flags
  221. INTF2 = $02; // External Interrupt Flags
  222. INTF3 = $03; // External Interrupt Flags
  223. // External Interrupt Mask Register
  224. INT0 = $00; // External Interrupt Request Enable
  225. INT1 = $01; // External Interrupt Request Enable
  226. INT2 = $02; // External Interrupt Request Enable
  227. INT3 = $03; // External Interrupt Request Enable
  228. // General Purpose IO Register 0
  229. GPIOR00 = $00;
  230. GPIOR01 = $01;
  231. GPIOR02 = $02;
  232. GPIOR03 = $03;
  233. GPIOR04 = $04;
  234. GPIOR05 = $05;
  235. GPIOR06 = $06;
  236. GPIOR07 = $07;
  237. // EEPROM Control Register
  238. EERE = $00;
  239. EEWE = $01;
  240. EEMWE = $02;
  241. EERIE = $03;
  242. EEPM0 = $04; // EEPROM Programming Mode
  243. EEPM1 = $05; // EEPROM Programming Mode
  244. // EEPROM Data Register
  245. EEDR0 = $00; // EEPROM Data Bits
  246. EEDR1 = $01; // EEPROM Data Bits
  247. EEDR2 = $02; // EEPROM Data Bits
  248. EEDR3 = $03; // EEPROM Data Bits
  249. EEDR4 = $04; // EEPROM Data Bits
  250. EEDR5 = $05; // EEPROM Data Bits
  251. EEDR6 = $06; // EEPROM Data Bits
  252. EEDR7 = $07; // EEPROM Data Bits
  253. // EEPROM Read/Write Access Bytes
  254. EEAR0 = $00; // EEPROM Address bytes
  255. EEAR1 = $01; // EEPROM Address bytes
  256. EEAR2 = $02; // EEPROM Address bytes
  257. EEAR3 = $03; // EEPROM Address bytes
  258. EEAR4 = $04; // EEPROM Address bytes
  259. EEAR5 = $05; // EEPROM Address bytes
  260. EEAR6 = $06; // EEPROM Address bytes
  261. EEAR7 = $07; // EEPROM Address bytes
  262. // General Timer/Counter Control Register
  263. PSR10 = $00;
  264. PSRSYNC = $00;
  265. ICPSEL1 = $06;
  266. TSM = $07;
  267. // Timer/Counter Control Register A
  268. WGM00 = $00; // Waveform Generation Mode
  269. WGM01 = $01; // Waveform Generation Mode
  270. COM0B0 = $04; // Compare Output Mode, Fast PWm
  271. COM0B1 = $05; // Compare Output Mode, Fast PWm
  272. COM0A0 = $06; // Compare Output Mode, Phase Correct PWM Mode
  273. COM0A1 = $07; // Compare Output Mode, Phase Correct PWM Mode
  274. // Timer/Counter Control Register B
  275. CS00 = $00; // Clock Select
  276. CS01 = $01; // Clock Select
  277. CS02 = $02; // Clock Select
  278. WGM02 = $03;
  279. FOC0B = $06;
  280. FOC0A = $07;
  281. // Timer/Counter0
  282. TCNT00 = $00; // Timer Counter 0 value
  283. TCNT01 = $01; // Timer Counter 0 value
  284. TCNT02 = $02; // Timer Counter 0 value
  285. TCNT03 = $03; // Timer Counter 0 value
  286. TCNT04 = $04; // Timer Counter 0 value
  287. TCNT05 = $05; // Timer Counter 0 value
  288. TCNT06 = $06; // Timer Counter 0 value
  289. TCNT07 = $07; // Timer Counter 0 value
  290. // Timer/Counter0 Output Compare Register
  291. OCR0A0 = $00; // Timer/Counter0 Output Compare A
  292. OCR0A1 = $01; // Timer/Counter0 Output Compare A
  293. OCR0A2 = $02; // Timer/Counter0 Output Compare A
  294. OCR0A3 = $03; // Timer/Counter0 Output Compare A
  295. OCR0A4 = $04; // Timer/Counter0 Output Compare A
  296. OCR0A5 = $05; // Timer/Counter0 Output Compare A
  297. OCR0A6 = $06; // Timer/Counter0 Output Compare A
  298. OCR0A7 = $07; // Timer/Counter0 Output Compare A
  299. // Timer/Counter0 Output Compare Register
  300. OCR0B0 = $00; // Timer/Counter0 Output Compare B
  301. OCR0B1 = $01; // Timer/Counter0 Output Compare B
  302. OCR0B2 = $02; // Timer/Counter0 Output Compare B
  303. OCR0B3 = $03; // Timer/Counter0 Output Compare B
  304. OCR0B4 = $04; // Timer/Counter0 Output Compare B
  305. OCR0B5 = $05; // Timer/Counter0 Output Compare B
  306. OCR0B6 = $06; // Timer/Counter0 Output Compare B
  307. OCR0B7 = $07; // Timer/Counter0 Output Compare B
  308. // PLL Control And Status Register
  309. PLOCK = $00;
  310. PLLE = $01;
  311. PLLF = $02;
  312. // SPI Control Register
  313. SPR0 = $00; // SPI Clock Rate Selects
  314. SPR1 = $01; // SPI Clock Rate Selects
  315. CPHA = $02;
  316. CPOL = $03;
  317. MSTR = $04;
  318. DORD = $05;
  319. SPE = $06;
  320. SPIE = $07;
  321. // SPI Status Register
  322. SPI2X = $00;
  323. WCOL = $06;
  324. SPIF = $07;
  325. // SPI Data Register
  326. SPD0 = $00; // SPI Data bits
  327. SPD1 = $01; // SPI Data bits
  328. SPD2 = $02; // SPI Data bits
  329. SPD3 = $03; // SPI Data bits
  330. SPD4 = $04; // SPI Data bits
  331. SPD5 = $05; // SPI Data bits
  332. SPD6 = $06; // SPI Data bits
  333. SPD7 = $07; // SPI Data bits
  334. // Analog Comparator Status Register
  335. AC0O = $00;
  336. AC1O = $01;
  337. AC2O = $02;
  338. AC0IF = $04;
  339. AC1IF = $05;
  340. AC2IF = $06;
  341. ACCKDIV = $07;
  342. // Sleep Mode Control Register
  343. SE = $00;
  344. SM0 = $01; // Sleep Mode Select bits
  345. SM1 = $02; // Sleep Mode Select bits
  346. SM2 = $03; // Sleep Mode Select bits
  347. // MCU Status Register
  348. PORF = $00;
  349. EXTRF = $01;
  350. BORF = $02;
  351. WDRF = $03;
  352. // MCU Control Register
  353. IVCE = $00;
  354. IVSEL = $01;
  355. PUD = $04;
  356. SPIPS = $07;
  357. // Store Program Memory Control Register
  358. SPMEN = $00;
  359. PGERS = $01;
  360. PGWRT = $02;
  361. BLBSET = $03;
  362. RWWSRE = $04;
  363. RWWSB = $06;
  364. SPMIE = $07;
  365. // Status Register
  366. C = $00;
  367. Z = $01;
  368. N = $02;
  369. V = $03;
  370. S = $04;
  371. H = $05;
  372. T = $06;
  373. I = $07;
  374. // Watchdog Timer Control Register
  375. WDE = $03;
  376. WDCE = $04;
  377. WDP0 = $00; // Watchdog Timer Prescaler Bits
  378. WDP1 = $01; // Watchdog Timer Prescaler Bits
  379. WDP2 = $02; // Watchdog Timer Prescaler Bits
  380. WDP3 = $05; // Watchdog Timer Prescaler Bits
  381. WDIE = $06;
  382. WDIF = $07;
  383. CLKPS0 = $00;
  384. CLKPS1 = $01;
  385. CLKPS2 = $02;
  386. CLKPS3 = $03;
  387. CLKPCE = $07;
  388. // Power Reduction Register
  389. PRADC = $00;
  390. PRUSART0 = $01;
  391. PRSPI = $02;
  392. PRTIM0 = $03;
  393. PRTIM1 = $04;
  394. PRPSC0 = $05;
  395. PRPSC1 = $06;
  396. PRPSC2 = $07;
  397. // Oscillator Calibration Value
  398. OSCCAL0 = $00; // Oscillator Calibration
  399. OSCCAL1 = $01; // Oscillator Calibration
  400. OSCCAL2 = $02; // Oscillator Calibration
  401. OSCCAL3 = $03; // Oscillator Calibration
  402. OSCCAL4 = $04; // Oscillator Calibration
  403. OSCCAL5 = $05; // Oscillator Calibration
  404. OSCCAL6 = $06; // Oscillator Calibration
  405. OSCCAL7 = $07; // Oscillator Calibration
  406. // External Interrupt Control Register A
  407. ISC00 = $00; // External Interrupt Sense Control Bit
  408. ISC01 = $01; // External Interrupt Sense Control Bit
  409. ISC10 = $02; // External Interrupt Sense Control Bit
  410. ISC11 = $03; // External Interrupt Sense Control Bit
  411. ISC20 = $04; // External Interrupt Sense Control Bit
  412. ISC21 = $05; // External Interrupt Sense Control Bit
  413. ISC30 = $06; // External Interrupt Sense Control Bit
  414. ISC31 = $07; // External Interrupt Sense Control Bit
  415. // Timer/Counter0 Interrupt Mask Register
  416. TOIE0 = $00;
  417. OCIE0A = $01;
  418. OCIE0B = $02;
  419. // Timer/Counter Interrupt Mask Register
  420. TOIE1 = $00;
  421. OCIE1A = $01;
  422. OCIE1B = $02;
  423. ICIE1 = $05;
  424. AMP0TS0 = $00;
  425. AMP0TS1 = $01;
  426. AMP0G0 = $04;
  427. AMP0G1 = $05;
  428. AMP0IS = $06;
  429. AMP0EN = $07;
  430. AMP1TS0 = $00;
  431. AMP1TS1 = $01;
  432. AMP1G0 = $04;
  433. AMP1G1 = $05;
  434. AMP1IS = $06;
  435. AMP1EN = $07;
  436. // ADC Data Register Bytes
  437. ADC0 = $00; // ADC Data Register
  438. ADC1 = $01; // ADC Data Register
  439. ADC2 = $02; // ADC Data Register
  440. ADC3 = $03; // ADC Data Register
  441. ADC4 = $04; // ADC Data Register
  442. ADC5 = $05; // ADC Data Register
  443. ADC6 = $06; // ADC Data Register
  444. ADC7 = $07; // ADC Data Register
  445. // The ADC Control and Status register
  446. ADPS0 = $00; // ADC Prescaler Select Bits
  447. ADPS1 = $01; // ADC Prescaler Select Bits
  448. ADPS2 = $02; // ADC Prescaler Select Bits
  449. ADIE = $03;
  450. ADIF = $04;
  451. ADATE = $05;
  452. ADSC = $06;
  453. ADEN = $07;
  454. // ADC Control and Status Register B
  455. ADTS0 = $00; // ADC Auto Trigger Source
  456. ADTS1 = $01; // ADC Auto Trigger Source
  457. ADTS2 = $02; // ADC Auto Trigger Source
  458. ADTS3 = $03; // ADC Auto Trigger Source
  459. ADASCR = $04;
  460. ADHSM = $07;
  461. // The ADC multiplexer Selection Register
  462. MUX0 = $00; // Analog Channel and Gain Selection Bits
  463. MUX1 = $01; // Analog Channel and Gain Selection Bits
  464. MUX2 = $02; // Analog Channel and Gain Selection Bits
  465. MUX3 = $03; // Analog Channel and Gain Selection Bits
  466. ADLAR = $05;
  467. REFS0 = $06; // Reference Selection Bits
  468. REFS1 = $07; // Reference Selection Bits
  469. // Digital Input Disable Register 0
  470. ADC0D = $00;
  471. ADC1D = $01;
  472. ADC2D = $02;
  473. ADC3D = $03;
  474. ADC4D = $04;
  475. ADC5D = $05;
  476. ADC6D = $06;
  477. ADC7D = $07;
  478. // Digital Input Disable Register 1
  479. ADC8D = $00;
  480. ADC9D = $01;
  481. ADC10D = $02;
  482. AMP0ND = $03;
  483. AMP0PD = $04;
  484. ACMP0D = $05;
  485. // Timer/Counter1 Control Register A
  486. WGM10 = $00; // Waveform Generation Mode
  487. WGM11 = $01; // Waveform Generation Mode
  488. COM1B0 = $04; // Compare Output Mode 1B, bits
  489. COM1B1 = $05; // Compare Output Mode 1B, bits
  490. COM1A0 = $06; // Compare Output Mode 1A, bits
  491. COM1A1 = $07; // Compare Output Mode 1A, bits
  492. // Timer/Counter1 Control Register B
  493. CS10 = $00; // Prescaler source of Timer/Counter 1
  494. CS11 = $01; // Prescaler source of Timer/Counter 1
  495. CS12 = $02; // Prescaler source of Timer/Counter 1
  496. ICES1 = $06;
  497. ICNC1 = $07;
  498. // Timer/Counter1 Control Register C
  499. FOC1B = $06;
  500. FOC1A = $07;
  501. // Timer/Counter1 Bytes
  502. TCNT10 = $00; // Timer/Counter1
  503. TCNT11 = $01; // Timer/Counter1
  504. TCNT12 = $02; // Timer/Counter1
  505. TCNT13 = $03; // Timer/Counter1
  506. TCNT14 = $04; // Timer/Counter1
  507. TCNT15 = $05; // Timer/Counter1
  508. TCNT16 = $06; // Timer/Counter1
  509. TCNT17 = $07; // Timer/Counter1
  510. // Timer/Counter1 Input Capture Register Bytes
  511. ICR10 = $00; // Timer/Counter1 Input Capture
  512. ICR11 = $01; // Timer/Counter1 Input Capture
  513. ICR12 = $02; // Timer/Counter1 Input Capture
  514. ICR13 = $03; // Timer/Counter1 Input Capture
  515. ICR14 = $04; // Timer/Counter1 Input Capture
  516. ICR15 = $05; // Timer/Counter1 Input Capture
  517. ICR16 = $06; // Timer/Counter1 Input Capture
  518. ICR17 = $07; // Timer/Counter1 Input Capture
  519. // Timer/Counter1 Output Compare Register Bytes
  520. OCR1A0 = $00; // Timer/Counter1 Output Capture A
  521. OCR1A1 = $01; // Timer/Counter1 Output Capture A
  522. OCR1A2 = $02; // Timer/Counter1 Output Capture A
  523. OCR1A3 = $03; // Timer/Counter1 Output Capture A
  524. OCR1A4 = $04; // Timer/Counter1 Output Capture A
  525. OCR1A5 = $05; // Timer/Counter1 Output Capture A
  526. OCR1A6 = $06; // Timer/Counter1 Output Capture A
  527. OCR1A7 = $07; // Timer/Counter1 Output Capture A
  528. // Timer/Counter1 Output Compare Register Bytes
  529. OCR1B0 = $00; // Timer/Counter1 Output Capture B
  530. OCR1B1 = $01; // Timer/Counter1 Output Capture B
  531. OCR1B2 = $02; // Timer/Counter1 Output Capture B
  532. OCR1B3 = $03; // Timer/Counter1 Output Capture B
  533. OCR1B4 = $04; // Timer/Counter1 Output Capture B
  534. OCR1B5 = $05; // Timer/Counter1 Output Capture B
  535. OCR1B6 = $06; // Timer/Counter1 Output Capture B
  536. OCR1B7 = $07; // Timer/Counter1 Output Capture B
  537. // PSC0 Interrupt Flag Register
  538. PEOP0 = $00;
  539. PRN00 = $01; // Ramp Number
  540. PRN01 = $02; // Ramp Number
  541. PEV0A = $03;
  542. PEV0B = $04;
  543. PSEI0 = $05;
  544. // PSC0 Interrupt Mask Register
  545. PEOPE0 = $00;
  546. PEVE0A = $03;
  547. PEVE0B = $04;
  548. PSEIE0 = $05;
  549. // PSC1 Interrupt Flag Register
  550. PEOP1 = $00;
  551. PRN10 = $01; // Ramp Number
  552. PRN11 = $02; // Ramp Number
  553. PEV1A = $03;
  554. PEV1B = $04;
  555. PSEI1 = $05;
  556. // PSC1 Interrupt Mask Register
  557. PEOPE1 = $00;
  558. PEVE1A = $03;
  559. PEVE1B = $04;
  560. PSEIE1 = $05;
  561. // PSC2 Interrupt Flag Register
  562. PEOP2 = $00;
  563. PRN20 = $01; // Ramp Number
  564. PRN21 = $02; // Ramp Number
  565. PEV2A = $03;
  566. PEV2B = $04;
  567. PSEI2 = $05;
  568. // PSC2 Interrupt Mask Register
  569. PEOPE2 = $00;
  570. PEVE2A = $03;
  571. PEVE2B = $04;
  572. PSEIE2 = $05;
  573. // DAC Control Register
  574. DAEN = $00;
  575. DAOE = $01;
  576. DALA = $02;
  577. DATS0 = $04; // DAC Trigger Selection Bits
  578. DATS1 = $05; // DAC Trigger Selection Bits
  579. DATS2 = $06; // DAC Trigger Selection Bits
  580. DAATE = $07;
  581. // DAC Data Register
  582. DAC0 = $00; // DAC Data Register Bits
  583. DAC1 = $01; // DAC Data Register Bits
  584. DAC2 = $02; // DAC Data Register Bits
  585. DAC3 = $03; // DAC Data Register Bits
  586. DAC4 = $04; // DAC Data Register Bits
  587. DAC5 = $05; // DAC Data Register Bits
  588. DAC6 = $06; // DAC Data Register Bits
  589. DAC7 = $07; // DAC Data Register Bits
  590. // Analog Comparator 0 Control Register
  591. AC0M0 = $00; // Analog Comparator 0 Multiplexer Register
  592. AC0M1 = $01; // Analog Comparator 0 Multiplexer Register
  593. AC0M2 = $02; // Analog Comparator 0 Multiplexer Register
  594. AC0IS0 = $04; // Analog Comparator 0 Interrupt Select Bit
  595. AC0IS1 = $05; // Analog Comparator 0 Interrupt Select Bit
  596. AC0IE = $06;
  597. AC0EN = $07;
  598. // Analog Comparator 1 Control Register
  599. AC1M0 = $00; // Analog Comparator 1 Multiplexer Register
  600. AC1M1 = $01; // Analog Comparator 1 Multiplexer Register
  601. AC1M2 = $02; // Analog Comparator 1 Multiplexer Register
  602. AC1ICE = $03;
  603. AC1IS0 = $04; // Analog Comparator 1 Interrupt Select Bit
  604. AC1IS1 = $05; // Analog Comparator 1 Interrupt Select Bit
  605. AC1IE = $06;
  606. AC1EN = $07;
  607. // Analog Comparator 2 Control Register
  608. AC2M0 = $00; // Analog Comparator 2 Multiplexer Register
  609. AC2M1 = $01; // Analog Comparator 2 Multiplexer Register
  610. AC2M2 = $02; // Analog Comparator 2 Multiplexer Register
  611. AC2IS0 = $04; // Analog Comparator 2 Interrupt Select Bit
  612. AC2IS1 = $05; // Analog Comparator 2 Interrupt Select Bit
  613. AC2IE = $06;
  614. AC2EN = $07;
  615. // USART Control and Status register A
  616. MPCM = $00;
  617. U2X = $01;
  618. UPE = $02;
  619. DOR = $03;
  620. FE = $04;
  621. UDRE = $05;
  622. TXC = $06;
  623. RXC = $07;
  624. // USART Control an Status register B
  625. TXB8 = $00;
  626. RXB8 = $01;
  627. UCSZ2 = $02;
  628. TXEN = $03;
  629. RXEN = $04;
  630. UDRIE = $05;
  631. TXCIE = $06;
  632. RXCIE = $07;
  633. // USART Control an Status register C
  634. UCPOL = $00;
  635. UCSZ0 = $01; // Character Size Bits
  636. UCSZ1 = $02; // Character Size Bits
  637. USBS = $03;
  638. UPM0 = $04; // Parity Mode Bits
  639. UPM1 = $05; // Parity Mode Bits
  640. UMSEL0 = $06;
  641. // USART Baud Rate Register
  642. UBRR0 = $00; // USART Baud Rate Register Bits
  643. UBRR1 = $01; // USART Baud Rate Register Bits
  644. UBRR2 = $02; // USART Baud Rate Register Bits
  645. UBRR3 = $03; // USART Baud Rate Register Bits
  646. UBRR4 = $04; // USART Baud Rate Register Bits
  647. UBRR5 = $05; // USART Baud Rate Register Bits
  648. UBRR6 = $06; // USART Baud Rate Register Bits
  649. UBRR7 = $07; // USART Baud Rate Register Bits
  650. // USART I/O Data Register
  651. UDR0 = $00; // USART I/O Data
  652. UDR1 = $01; // USART I/O Data
  653. UDR2 = $02; // USART I/O Data
  654. UDR3 = $03; // USART I/O Data
  655. UDR4 = $04; // USART I/O Data
  656. UDR5 = $05; // USART I/O Data
  657. UDR6 = $06; // USART I/O Data
  658. UDR7 = $07; // USART I/O Data
  659. // EUSART Control and Status Register A
  660. URxS0 = $00; // EUSART Control and Status Register A Bits
  661. URxS1 = $01; // EUSART Control and Status Register A Bits
  662. URxS2 = $02; // EUSART Control and Status Register A Bits
  663. URxS3 = $03; // EUSART Control and Status Register A Bits
  664. UTxS0 = $04; // EUSART Control and Status Register A Bits
  665. UTxS1 = $05; // EUSART Control and Status Register A Bits
  666. UTxS2 = $06; // EUSART Control and Status Register A Bits
  667. UTxS3 = $07; // EUSART Control and Status Register A Bits
  668. // EUSART Control Register B
  669. BODR = $00;
  670. EMCH = $01;
  671. EUSBS = $03;
  672. EUSART = $04;
  673. // EUSART Status Register C
  674. STP0 = $00; // Stop Bits
  675. STP1 = $01; // Stop Bits
  676. F1617 = $02;
  677. FEM = $03;
  678. // Manchester Receiver Baud Rate Register
  679. MUBRR0 = $00; // Manchester Receiver Baud Rate Register Bits
  680. MUBRR1 = $01; // Manchester Receiver Baud Rate Register Bits
  681. MUBRR2 = $02; // Manchester Receiver Baud Rate Register Bits
  682. MUBRR3 = $03; // Manchester Receiver Baud Rate Register Bits
  683. MUBRR4 = $04; // Manchester Receiver Baud Rate Register Bits
  684. MUBRR5 = $05; // Manchester Receiver Baud Rate Register Bits
  685. MUBRR6 = $06; // Manchester Receiver Baud Rate Register Bits
  686. MUBRR7 = $07; // Manchester Receiver Baud Rate Register Bits
  687. // EUSART I/O Data Register
  688. EUDR0 = $00; // EUSART Extended data bits
  689. EUDR1 = $01; // EUSART Extended data bits
  690. EUDR2 = $02; // EUSART Extended data bits
  691. EUDR3 = $03; // EUSART Extended data bits
  692. EUDR4 = $04; // EUSART Extended data bits
  693. EUDR5 = $05; // EUSART Extended data bits
  694. EUDR6 = $06; // EUSART Extended data bits
  695. EUDR7 = $07; // EUSART Extended data bits
  696. // PSC0 Synchro and Output Configuration
  697. POEN0A = $00;
  698. POEN0B = $02;
  699. PSYNC00 = $04; // Synchronization Out for ADC Selection
  700. PSYNC01 = $05; // Synchronization Out for ADC Selection
  701. // Output Compare 0 SA Register
  702. OCR0SA0 = $00; // Output Compare SA
  703. OCR0SA1 = $01; // Output Compare SA
  704. OCR0SA2 = $02; // Output Compare SA
  705. OCR0SA3 = $03; // Output Compare SA
  706. OCR0SA4 = $04; // Output Compare SA
  707. OCR0SA5 = $05; // Output Compare SA
  708. OCR0SA6 = $06; // Output Compare SA
  709. OCR0SA7 = $07; // Output Compare SA
  710. // Output Compare 0 RA Register
  711. OCR0RA0 = $00; // Output Compare RA
  712. OCR0RA1 = $01; // Output Compare RA
  713. OCR0RA2 = $02; // Output Compare RA
  714. OCR0RA3 = $03; // Output Compare RA
  715. OCR0RA4 = $04; // Output Compare RA
  716. OCR0RA5 = $05; // Output Compare RA
  717. OCR0RA6 = $06; // Output Compare RA
  718. OCR0RA7 = $07; // Output Compare RA
  719. // Output Compare 0 SB Register
  720. OCR0SB0 = $00; // Output Compare SB
  721. OCR0SB1 = $01; // Output Compare SB
  722. OCR0SB2 = $02; // Output Compare SB
  723. OCR0SB3 = $03; // Output Compare SB
  724. OCR0SB4 = $04; // Output Compare SB
  725. OCR0SB5 = $05; // Output Compare SB
  726. OCR0SB6 = $06; // Output Compare SB
  727. OCR0SB7 = $07; // Output Compare SB
  728. // Output Compare 0 RB Register
  729. OCR0RB0 = $00; // Output Compare RB
  730. OCR0RB1 = $01; // Output Compare RB
  731. OCR0RB2 = $02; // Output Compare RB
  732. OCR0RB3 = $03; // Output Compare RB
  733. OCR0RB4 = $04; // Output Compare RB
  734. OCR0RB5 = $05; // Output Compare RB
  735. OCR0RB6 = $06; // Output Compare RB
  736. OCR0RB7 = $07; // Output Compare RB
  737. // PSC 0 Configuration Register
  738. PCLKSEL0 = $01;
  739. POP0 = $02;
  740. PMODE00 = $03; // PSC 0 Mode
  741. PMODE01 = $04; // PSC 0 Mode
  742. PLOCK0 = $05;
  743. PALOCK0 = $06;
  744. PFIFTY0 = $07;
  745. // PSC 0 Control Register
  746. PRUN0 = $00;
  747. PCCYC0 = $01;
  748. PARUN0 = $02;
  749. PAOC0A = $03;
  750. PAOC0B = $04;
  751. PBFM0 = $05;
  752. PPRE00 = $06; // PSC 0 Prescaler Selects
  753. PPRE01 = $07; // PSC 0 Prescaler Selects
  754. // PSC 0 Input A Control
  755. PRFM0A0 = $00; // PSC 0 Retrigger and Fault Mode for Part A
  756. PRFM0A1 = $01; // PSC 0 Retrigger and Fault Mode for Part A
  757. PRFM0A2 = $02; // PSC 0 Retrigger and Fault Mode for Part A
  758. PRFM0A3 = $03; // PSC 0 Retrigger and Fault Mode for Part A
  759. PFLTE0A = $04;
  760. PELEV0A = $05;
  761. PISEL0A = $06;
  762. PCAE0A = $07;
  763. // PSC 0 Input B Control
  764. PRFM0B0 = $00; // PSC 0 Retrigger and Fault Mode for Part B
  765. PRFM0B1 = $01; // PSC 0 Retrigger and Fault Mode for Part B
  766. PRFM0B2 = $02; // PSC 0 Retrigger and Fault Mode for Part B
  767. PRFM0B3 = $03; // PSC 0 Retrigger and Fault Mode for Part B
  768. PFLTE0B = $04;
  769. PELEV0B = $05;
  770. PISEL0B = $06;
  771. PCAE0B = $07;
  772. // PSC 0 Input Capture Register
  773. PICR00 = $00; // PSC 0 Input Capture Bytes
  774. PICR01 = $01; // PSC 0 Input Capture Bytes
  775. PICR02 = $02; // PSC 0 Input Capture Bytes
  776. PICR03 = $03; // PSC 0 Input Capture Bytes
  777. PICR04 = $04; // PSC 0 Input Capture Bytes
  778. PICR05 = $05; // PSC 0 Input Capture Bytes
  779. PICR06 = $06; // PSC 0 Input Capture Bytes
  780. PICR07 = $07; // PSC 0 Input Capture Bytes
  781. // PSC1 Synchro and Output Configuration
  782. POEN1A = $00;
  783. POEN1B = $02;
  784. PSYNC1_0 = $04; // Synchronization Out for ADC Selection
  785. PSYNC1_1 = $05; // Synchronization Out for ADC Selection
  786. // PSC 1 Configuration Register
  787. PCLKSEL1 = $01;
  788. POP1 = $02;
  789. PMODE10 = $03; // PSC 1 Mode
  790. PMODE11 = $04; // PSC 1 Mode
  791. PLOCK1 = $05;
  792. PALOCK1 = $06;
  793. PFIFTY1 = $07;
  794. // PSC 1 Control Register
  795. PRUN1 = $00;
  796. PCCYC1 = $01;
  797. PARUN1 = $02;
  798. PAOC1A = $03;
  799. PAOC1B = $04;
  800. PBFM1 = $05;
  801. PPRE10 = $06; // PSC 1 Prescaler Selects
  802. PPRE11 = $07; // PSC 1 Prescaler Selects
  803. // PSC 1 Input B Control
  804. PRFM1A0 = $00; // PSC 1 Retrigger and Fault Mode for Part A
  805. PRFM1A1 = $01; // PSC 1 Retrigger and Fault Mode for Part A
  806. PRFM1A2 = $02; // PSC 1 Retrigger and Fault Mode for Part A
  807. PRFM1A3 = $03; // PSC 1 Retrigger and Fault Mode for Part A
  808. PFLTE1A = $04;
  809. PELEV1A = $05;
  810. PISEL1A = $06;
  811. PCAE1A = $07;
  812. // PSC 1 Input B Control
  813. PRFM1B0 = $00; // PSC 1 Retrigger and Fault Mode for Part B
  814. PRFM1B1 = $01; // PSC 1 Retrigger and Fault Mode for Part B
  815. PRFM1B2 = $02; // PSC 1 Retrigger and Fault Mode for Part B
  816. PRFM1B3 = $03; // PSC 1 Retrigger and Fault Mode for Part B
  817. PFLTE1B = $04;
  818. PELEV1B = $05;
  819. PISEL1B = $06;
  820. PCAE1B = $07;
  821. // PSC2 Synchro and Output Configuration
  822. POEN2A = $00;
  823. POEN2C = $01;
  824. POEN2B = $02;
  825. POEN2D = $03;
  826. PSYNC2_0 = $04; // Synchronization Out for ADC Selection
  827. PSYNC2_1 = $05; // Synchronization Out for ADC Selection
  828. POS22 = $06; // PSC 2 Output 23 Select
  829. POS23 = $07; // PSC 2 Output 23 Select
  830. // PSC 2 Output Matrix
  831. POMV2A0 = $00; // Output Matrix Output A Ramps
  832. POMV2A1 = $01; // Output Matrix Output A Ramps
  833. POMV2A2 = $02; // Output Matrix Output A Ramps
  834. POMV2A3 = $03; // Output Matrix Output A Ramps
  835. POMV2B0 = $04; // Output Matrix Output B Ramps
  836. POMV2B1 = $05; // Output Matrix Output B Ramps
  837. POMV2B2 = $06; // Output Matrix Output B Ramps
  838. POMV2B3 = $07; // Output Matrix Output B Ramps
  839. // Output Compare 2 SA Register
  840. OCR2SA0 = $00; // Output Compare SA
  841. OCR2SA1 = $01; // Output Compare SA
  842. OCR2SA2 = $02; // Output Compare SA
  843. OCR2SA3 = $03; // Output Compare SA
  844. OCR2SA4 = $04; // Output Compare SA
  845. OCR2SA5 = $05; // Output Compare SA
  846. OCR2SA6 = $06; // Output Compare SA
  847. OCR2SA7 = $07; // Output Compare SA
  848. // Output Compare 2 RA Register
  849. OCR2RA0 = $00; // Output Compare RA
  850. OCR2RA1 = $01; // Output Compare RA
  851. OCR2RA2 = $02; // Output Compare RA
  852. OCR2RA3 = $03; // Output Compare RA
  853. OCR2RA4 = $04; // Output Compare RA
  854. OCR2RA5 = $05; // Output Compare RA
  855. OCR2RA6 = $06; // Output Compare RA
  856. OCR2RA7 = $07; // Output Compare RA
  857. // Output Compare 2 SB Register
  858. OCR2SB0 = $00; // Output Compare SB
  859. OCR2SB1 = $01; // Output Compare SB
  860. OCR2SB2 = $02; // Output Compare SB
  861. OCR2SB3 = $03; // Output Compare SB
  862. OCR2SB4 = $04; // Output Compare SB
  863. OCR2SB5 = $05; // Output Compare SB
  864. OCR2SB6 = $06; // Output Compare SB
  865. OCR2SB7 = $07; // Output Compare SB
  866. // Output Compare 2 RB Register
  867. OCR2RB0 = $00; // Output Compare RB
  868. OCR2RB1 = $01; // Output Compare RB
  869. OCR2RB2 = $02; // Output Compare RB
  870. OCR2RB3 = $03; // Output Compare RB
  871. OCR2RB4 = $04; // Output Compare RB
  872. OCR2RB5 = $05; // Output Compare RB
  873. OCR2RB6 = $06; // Output Compare RB
  874. OCR2RB7 = $07; // Output Compare RB
  875. // PSC 2 Configuration Register
  876. POME2 = $00;
  877. PCLKSEL2 = $01;
  878. POP2 = $02;
  879. PMODE20 = $03; // PSC 2 Mode
  880. PMODE21 = $04; // PSC 2 Mode
  881. PLOCK2 = $05;
  882. PALOCK2 = $06;
  883. PFIFTY2 = $07;
  884. // PSC 2 Control Register
  885. PRUN2 = $00;
  886. PCCYC2 = $01;
  887. PARUN2 = $02;
  888. PAOC2A = $03;
  889. PAOC2B = $04;
  890. PBFM2 = $05;
  891. PPRE20 = $06; // PSC 2 Prescaler Selects
  892. PPRE21 = $07; // PSC 2 Prescaler Selects
  893. // PSC 2 Input B Control
  894. PRFM2A0 = $00; // PSC 2 Retrigger and Fault Mode for Part A
  895. PRFM2A1 = $01; // PSC 2 Retrigger and Fault Mode for Part A
  896. PRFM2A2 = $02; // PSC 2 Retrigger and Fault Mode for Part A
  897. PRFM2A3 = $03; // PSC 2 Retrigger and Fault Mode for Part A
  898. PFLTE2A = $04;
  899. PELEV2A = $05;
  900. PISEL2A = $06;
  901. PCAE2A = $07;
  902. // PSC 2 Input B Control
  903. PRFM2B0 = $00; // PSC 2 Retrigger and Fault Mode for Part B
  904. PRFM2B1 = $01; // PSC 2 Retrigger and Fault Mode for Part B
  905. PRFM2B2 = $02; // PSC 2 Retrigger and Fault Mode for Part B
  906. PRFM2B3 = $03; // PSC 2 Retrigger and Fault Mode for Part B
  907. PFLTE2B = $04;
  908. PELEV2B = $05;
  909. PISEL2B = $06;
  910. PCAE2B = $07;
  911. // PSC 2 Input Capture Register
  912. PICR20 = $00; // PSC 2 Input Capture Bytes
  913. PICR21 = $01; // PSC 2 Input Capture Bytes
  914. PICR22 = $02; // PSC 2 Input Capture Bytes
  915. PICR23 = $03; // PSC 2 Input Capture Bytes
  916. PICR24 = $04; // PSC 2 Input Capture Bytes
  917. PICR25 = $05; // PSC 2 Input Capture Bytes
  918. PICR26 = $06; // PSC 2 Input Capture Bytes
  919. PICR27 = $07; // PSC 2 Input Capture Bytes
  920. implementation
  921. {$define RELBRANCHES}
  922. {$i avrcommon.inc}
  923. procedure PSC2_CAPT_ISR; external name 'PSC2_CAPT_ISR'; // Interrupt 1 PSC2 Capture Event
  924. procedure PSC2_EC_ISR; external name 'PSC2_EC_ISR'; // Interrupt 2 PSC2 End Cycle
  925. procedure PSC1_CAPT_ISR; external name 'PSC1_CAPT_ISR'; // Interrupt 3 PSC1 Capture Event
  926. procedure PSC1_EC_ISR; external name 'PSC1_EC_ISR'; // Interrupt 4 PSC1 End Cycle
  927. procedure PSC0_CAPT_ISR; external name 'PSC0_CAPT_ISR'; // Interrupt 5 PSC0 Capture Event
  928. procedure PSC0_EC_ISR; external name 'PSC0_EC_ISR'; // Interrupt 6 PSC0 End Cycle
  929. procedure ANALOG_COMP_0_ISR; external name 'ANALOG_COMP_0_ISR'; // Interrupt 7 Analog Comparator 0
  930. procedure ANALOG_COMP_1_ISR; external name 'ANALOG_COMP_1_ISR'; // Interrupt 8 Analog Comparator 1
  931. procedure ANALOG_COMP_2_ISR; external name 'ANALOG_COMP_2_ISR'; // Interrupt 9 Analog Comparator 2
  932. procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 10 External Interrupt Request 0
  933. procedure TIMER1_CAPT_ISR; external name 'TIMER1_CAPT_ISR'; // Interrupt 11 Timer/Counter1 Capture Event
  934. procedure TIMER1_COMPA_ISR; external name 'TIMER1_COMPA_ISR'; // Interrupt 12 Timer/Counter1 Compare Match A
  935. procedure TIMER1_COMPB_ISR; external name 'TIMER1_COMPB_ISR'; // Interrupt 13 Timer/Counter Compare Match B
  936. procedure RESERVED15_ISR; external name 'RESERVED15_ISR'; // Interrupt 14
  937. procedure TIMER1_OVF_ISR; external name 'TIMER1_OVF_ISR'; // Interrupt 15 Timer/Counter1 Overflow
  938. procedure TIMER0_COMPA_ISR; external name 'TIMER0_COMPA_ISR'; // Interrupt 16 Timer/Counter0 Compare Match A
  939. procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 17 Timer/Counter0 Overflow
  940. procedure ADC_ISR; external name 'ADC_ISR'; // Interrupt 18 ADC Conversion Complete
  941. procedure INT1_ISR; external name 'INT1_ISR'; // Interrupt 19 External Interrupt Request 1
  942. procedure SPI_STC_ISR; external name 'SPI_STC_ISR'; // Interrupt 20 SPI Serial Transfer Complete
  943. procedure USART_RX_ISR; external name 'USART_RX_ISR'; // Interrupt 21 USART, Rx Complete
  944. procedure USART_UDRE_ISR; external name 'USART_UDRE_ISR'; // Interrupt 22 USART Data Register Empty
  945. procedure USART_TX_ISR; external name 'USART_TX_ISR'; // Interrupt 23 USART, Tx Complete
  946. procedure INT2_ISR; external name 'INT2_ISR'; // Interrupt 24 External Interrupt Request 2
  947. procedure WDT_ISR; external name 'WDT_ISR'; // Interrupt 25 Watchdog Timeout Interrupt
  948. procedure EE_READY_ISR; external name 'EE_READY_ISR'; // Interrupt 26 EEPROM Ready
  949. procedure TIMER0_COMPB_ISR; external name 'TIMER0_COMPB_ISR'; // Interrupt 27 Timer Counter 0 Compare Match B
  950. procedure INT3_ISR; external name 'INT3_ISR'; // Interrupt 28 External Interrupt Request 3
  951. procedure RESERVED30_ISR; external name 'RESERVED30_ISR'; // Interrupt 29
  952. procedure RESERVED31_ISR; external name 'RESERVED31_ISR'; // Interrupt 30
  953. procedure SPM_READY_ISR; external name 'SPM_READY_ISR'; // Interrupt 31 Store Program Memory Read
  954. procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  955. asm
  956. rjmp __dtors_end
  957. rjmp PSC2_CAPT_ISR
  958. rjmp PSC2_EC_ISR
  959. rjmp PSC1_CAPT_ISR
  960. rjmp PSC1_EC_ISR
  961. rjmp PSC0_CAPT_ISR
  962. rjmp PSC0_EC_ISR
  963. rjmp ANALOG_COMP_0_ISR
  964. rjmp ANALOG_COMP_1_ISR
  965. rjmp ANALOG_COMP_2_ISR
  966. rjmp INT0_ISR
  967. rjmp TIMER1_CAPT_ISR
  968. rjmp TIMER1_COMPA_ISR
  969. rjmp TIMER1_COMPB_ISR
  970. rjmp RESERVED15_ISR
  971. rjmp TIMER1_OVF_ISR
  972. rjmp TIMER0_COMPA_ISR
  973. rjmp TIMER0_OVF_ISR
  974. rjmp ADC_ISR
  975. rjmp INT1_ISR
  976. rjmp SPI_STC_ISR
  977. rjmp USART_RX_ISR
  978. rjmp USART_UDRE_ISR
  979. rjmp USART_TX_ISR
  980. rjmp INT2_ISR
  981. rjmp WDT_ISR
  982. rjmp EE_READY_ISR
  983. rjmp TIMER0_COMPB_ISR
  984. rjmp INT3_ISR
  985. rjmp RESERVED30_ISR
  986. rjmp RESERVED31_ISR
  987. rjmp SPM_READY_ISR
  988. .weak PSC2_CAPT_ISR
  989. .weak PSC2_EC_ISR
  990. .weak PSC1_CAPT_ISR
  991. .weak PSC1_EC_ISR
  992. .weak PSC0_CAPT_ISR
  993. .weak PSC0_EC_ISR
  994. .weak ANALOG_COMP_0_ISR
  995. .weak ANALOG_COMP_1_ISR
  996. .weak ANALOG_COMP_2_ISR
  997. .weak INT0_ISR
  998. .weak TIMER1_CAPT_ISR
  999. .weak TIMER1_COMPA_ISR
  1000. .weak TIMER1_COMPB_ISR
  1001. .weak RESERVED15_ISR
  1002. .weak TIMER1_OVF_ISR
  1003. .weak TIMER0_COMPA_ISR
  1004. .weak TIMER0_OVF_ISR
  1005. .weak ADC_ISR
  1006. .weak INT1_ISR
  1007. .weak SPI_STC_ISR
  1008. .weak USART_RX_ISR
  1009. .weak USART_UDRE_ISR
  1010. .weak USART_TX_ISR
  1011. .weak INT2_ISR
  1012. .weak WDT_ISR
  1013. .weak EE_READY_ISR
  1014. .weak TIMER0_COMPB_ISR
  1015. .weak INT3_ISR
  1016. .weak RESERVED30_ISR
  1017. .weak RESERVED31_ISR
  1018. .weak SPM_READY_ISR
  1019. .set PSC2_CAPT_ISR, Default_IRQ_handler
  1020. .set PSC2_EC_ISR, Default_IRQ_handler
  1021. .set PSC1_CAPT_ISR, Default_IRQ_handler
  1022. .set PSC1_EC_ISR, Default_IRQ_handler
  1023. .set PSC0_CAPT_ISR, Default_IRQ_handler
  1024. .set PSC0_EC_ISR, Default_IRQ_handler
  1025. .set ANALOG_COMP_0_ISR, Default_IRQ_handler
  1026. .set ANALOG_COMP_1_ISR, Default_IRQ_handler
  1027. .set ANALOG_COMP_2_ISR, Default_IRQ_handler
  1028. .set INT0_ISR, Default_IRQ_handler
  1029. .set TIMER1_CAPT_ISR, Default_IRQ_handler
  1030. .set TIMER1_COMPA_ISR, Default_IRQ_handler
  1031. .set TIMER1_COMPB_ISR, Default_IRQ_handler
  1032. .set RESERVED15_ISR, Default_IRQ_handler
  1033. .set TIMER1_OVF_ISR, Default_IRQ_handler
  1034. .set TIMER0_COMPA_ISR, Default_IRQ_handler
  1035. .set TIMER0_OVF_ISR, Default_IRQ_handler
  1036. .set ADC_ISR, Default_IRQ_handler
  1037. .set INT1_ISR, Default_IRQ_handler
  1038. .set SPI_STC_ISR, Default_IRQ_handler
  1039. .set USART_RX_ISR, Default_IRQ_handler
  1040. .set USART_UDRE_ISR, Default_IRQ_handler
  1041. .set USART_TX_ISR, Default_IRQ_handler
  1042. .set INT2_ISR, Default_IRQ_handler
  1043. .set WDT_ISR, Default_IRQ_handler
  1044. .set EE_READY_ISR, Default_IRQ_handler
  1045. .set TIMER0_COMPB_ISR, Default_IRQ_handler
  1046. .set INT3_ISR, Default_IRQ_handler
  1047. .set RESERVED30_ISR, Default_IRQ_handler
  1048. .set RESERVED31_ISR, Default_IRQ_handler
  1049. .set SPM_READY_ISR, Default_IRQ_handler
  1050. end;
  1051. end.