attiny2313.pp 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. {******************************************************************************
  2. Register definitions and startup code for ATMEL ATtiny 24/44/84
  3. ******************************************************************************}
  4. unit attiny2313;
  5. {$goto on}
  6. interface
  7. var
  8. DIDR : byte absolute $21;
  9. UBRRH : byte absolute $22;
  10. UCSRC : byte absolute $23;
  11. ACSR : byte absolute $28;
  12. UBRRL : byte absolute $29;
  13. UCSRB : byte absolute $2A;
  14. UCSRA : byte absolute $2B;
  15. UDR : byte absolute $2C;
  16. USICR : byte absolute $2D;
  17. USISR : byte absolute $2E;
  18. USIDR : byte absolute $2F;
  19. PIND : byte absolute $30;
  20. DDRD : byte absolute $31;
  21. PORTD : byte absolute $32;
  22. GPIOR0 : byte absolute $33;
  23. GPIOR1 : byte absolute $34;
  24. GPIOR2 : byte absolute $35;
  25. PINB : byte absolute $36;
  26. DDRB : byte absolute $37;
  27. PORTB : byte absolute $38;
  28. PINA : byte absolute $39;
  29. DDRA : byte absolute $3A;
  30. PORTA : byte absolute $3B;
  31. EECR : byte absolute $3C;
  32. EEDR : byte absolute $3D;
  33. EEAR : byte absolute $3E;
  34. PCMSK : byte absolute $40;
  35. WDTCSR : byte absolute $41;
  36. TCCR1C : byte absolute $42;
  37. GTCCR : byte absolute $43;
  38. ICR1L : byte absolute $44;
  39. ICR1H : byte absolute $45;
  40. ICR1 : word absolute $44;
  41. CLKPR : byte absolute $46;
  42. OCR1BL : byte absolute $48;
  43. OCR1BH : byte absolute $49;
  44. OCR1B : word absolute $48;
  45. OCR1AL : byte absolute $4A;
  46. OCR1AH : byte absolute $4B;
  47. OCR1A : word absolute $4A;
  48. TCNT1L : byte absolute $4C;
  49. TCNT1H : byte absolute $4D;
  50. TCNT1 : word absolute $4C;
  51. TCCR1B : byte absolute $4E;
  52. TCCR1A : byte absolute $4F;
  53. TCCR0A : byte absolute $50;
  54. OSCCAL : byte absolute $51;
  55. TCNT0 : byte absolute $52;
  56. TCCR0B : byte absolute $53;
  57. MCUSR : byte absolute $54;
  58. MCUCR : byte absolute $55;
  59. OCR0A : byte absolute $56;
  60. SPMCSR : byte absolute $57;
  61. TIFR : byte absolute $58;
  62. TIMSK : byte absolute $59;
  63. EIFR : byte absolute $5A;
  64. GIMSK : byte absolute $5B;
  65. OCR0B : byte absolute $5C;
  66. SPL : byte absolute $5D;
  67. SREG : byte absolute $5F;
  68. const
  69. { DIDR }
  70. AIN1D = 1;
  71. AIN0D = 0;
  72. { UCSRC }
  73. UMSEL = 6;
  74. UPM1 = 5;
  75. UPM0 = 4;
  76. USBS = 3;
  77. UCSZ1 = 2;
  78. UCSZ0 = 1;
  79. UCPO = 0;
  80. { ACSR }
  81. ACD = 7;
  82. ACBG = 6;
  83. ACO = 5;
  84. ACI = 4;
  85. ACIE = 3;
  86. ACIC = 2;
  87. ACIS1 = 1;
  88. ACIS0 = 0;
  89. { UCSRB }
  90. RXCIE = 7;
  91. TXCIE = 6;
  92. UDRIE = 5;
  93. RXEN = 4;
  94. TXEN = 3;
  95. UCSZ2 = 2;
  96. RXB8 = 1;
  97. TXB8 = 0;
  98. { UCSRA }
  99. RXC = 7;
  100. TXC = 6;
  101. UDRE = 5;
  102. FE = 4;
  103. DOR = 3;
  104. UPE = 2;
  105. U2X = 1;
  106. MPCM = 0;
  107. { USICR }
  108. USISIE = 7;
  109. USIOIE = 6;
  110. USIWM1 = 5;
  111. USIWM0 = 4;
  112. USICS1 = 3;
  113. USICS0 = 2;
  114. USICLK = 1;
  115. USITC = 0;
  116. { USISR }
  117. USISIF = 7;
  118. USIOIF = 6;
  119. USIPF = 5;
  120. USIDC = 4;
  121. USICNT3 = 3;
  122. USICNT2 = 2;
  123. USICNT1 = 1;
  124. USICNT0 = 0;
  125. { PCMSK }
  126. PCINT7 = 7;
  127. PCINT6 = 6;
  128. PCINT5 = 5;
  129. PCINT4 = 4;
  130. PCINT3 = 3;
  131. PCINT2 = 2;
  132. PCINT1 = 1;
  133. PCINT0 = 0;
  134. { PINB }
  135. PINB3 = 3;
  136. PINB2 = 2;
  137. PINB1 = 1;
  138. PINB0 = 0;
  139. { DDRB }
  140. DDB3 = 3;
  141. DDB2 = 2;
  142. DDB1 = 1;
  143. DDB0 = 0;
  144. { PORTB }
  145. PORTB3 = 3;
  146. PORTB2 = 2;
  147. PORTB1 = 1;
  148. PORTB0 = 0;
  149. { PINA }
  150. PINA7 = 7;
  151. PINA6 = 6;
  152. PINA5 = 5;
  153. PINA4 = 4;
  154. PINA3 = 3;
  155. PINA2 = 2;
  156. PINA1 = 1;
  157. PINA0 = 0;
  158. { DDRA }
  159. DDA7 = 7;
  160. DDA6 = 6;
  161. DDA5 = 5;
  162. DDA4 = 4;
  163. DDA3 = 3;
  164. DDA2 = 2;
  165. DDA1 = 1;
  166. DDA0 = 0;
  167. { PORTA }
  168. PORTA7 = 7;
  169. PORTA6 = 6;
  170. PORTA5 = 5;
  171. PORTA4 = 4;
  172. PORTA3 = 3;
  173. PORTA2 = 2;
  174. PORTA1 = 1;
  175. PORTA0 = 0;
  176. { EECR }
  177. EEPM1 = 5;
  178. EEPM0 = 4;
  179. EERIE = 3;
  180. EEMPE = 2;
  181. EEPE = 1;
  182. EERE = 0;
  183. { EEARL }
  184. EEAR7 = 7;
  185. EEAR6 = 6;
  186. EEAR5 = 5;
  187. EEAR4 = 4;
  188. EEAR3 = 3;
  189. EEAR2 = 2;
  190. EEAR1 = 1;
  191. EEAR0 = 0;
  192. { EEARH }
  193. EEAR8 = 0;
  194. { PCMSK1 }
  195. PCINT11 = 3;
  196. PCINT10 = 2;
  197. PCINT9 = 1;
  198. PCINT8 = 0;
  199. { WDTCSR }
  200. WDIF = 7;
  201. WDIE = 6;
  202. WDP3 = 5;
  203. WDCE = 4;
  204. WDE = 3;
  205. WDP2 = 2;
  206. WDP1 = 1;
  207. WDP0 = 0;
  208. { TCCR1C }
  209. FOC1A = 7;
  210. FOC1B = 6;
  211. { GTCCR }
  212. PSR10 = 0;
  213. { CLKPR }
  214. CLKPCE = 7;
  215. CLKPS3 = 3;
  216. CLKPS2 = 2;
  217. CLKPS1 = 1;
  218. CLKPS0 = 0;
  219. { TCCR1B }
  220. ICNC1 = 7;
  221. ICES1 = 6;
  222. WGM13 = 4;
  223. WGM12 = 3;
  224. CS12 = 2;
  225. CS11 = 1;
  226. CS10 = 0;
  227. { TCCR1A }
  228. COM1A1 = 7;
  229. COM1A0 = 6;
  230. COM1B1 = 5;
  231. COM1B0 = 4;
  232. WGM11 = 1;
  233. WGM10 = 0;
  234. { TCCR0A }
  235. COM0A1 = 7;
  236. COM0A0 = 6;
  237. COM0B1 = 5;
  238. COM0B0 = 4;
  239. WGM01 = 1;
  240. WGM00 = 0;
  241. { OSCCAL }
  242. CAL6 = 6;
  243. CAL5 = 5;
  244. CAL4 = 4;
  245. CAL3 = 3;
  246. CAL2 = 2;
  247. CAL1 = 1;
  248. CAL0 = 0;
  249. { TCCR0B }
  250. FOC0A = 7;
  251. FOC0B = 6;
  252. WGM02 = 3;
  253. CS02 = 2;
  254. CS01 = 1;
  255. CS00 = 0;
  256. { MCUSR }
  257. WDRF = 3;
  258. BORF = 2;
  259. EXTRF = 1;
  260. PORF = 0;
  261. { MCUCR }
  262. PUD = 7;
  263. SM1 = 6;
  264. SE = 5;
  265. SM0 = 4;
  266. ISC11 = 3;
  267. ISC10 = 2;
  268. ISC01 = 1;
  269. ISC00 = 0;
  270. { SPMCSR }
  271. CTPB = 4;
  272. RFLB = 3;
  273. PGWRT = 2;
  274. PGERS = 1;
  275. SELFPRGEN= 0;
  276. { TIFR }
  277. TOV1 = 7;
  278. OCF1A = 6;
  279. OCF1B = 5;
  280. ICF1 = 3;
  281. OCF0B = 2;
  282. TOV0 = 1;
  283. OCF0A = 0;
  284. { TIMSK }
  285. TOIE1 = 7;
  286. OCIE1A = 6;
  287. OCIE1B = 5;
  288. ICIE1 = 3;
  289. OCIE0B = 2;
  290. TOIE0 = 1;
  291. OCIE0A = 0;
  292. { GIMSK }
  293. INT1 = 7;
  294. INT0 = 6;
  295. PCIE = 5;
  296. { EIFR }
  297. INTF1 = 7;
  298. INTF0 = 6;
  299. PCIF = 5;
  300. {$define RELBRANCHES}
  301. implementation
  302. {$i avrcommon.inc}
  303. procedure Int00Handler; external name 'Int00Handler';
  304. procedure Int01Handler; external name 'Int01Handler';
  305. procedure Int02Handler; external name 'Int02Handler';
  306. procedure Int03Handler; external name 'Int03Handler';
  307. procedure Int04Handler; external name 'Int04Handler';
  308. procedure Int05Handler; external name 'Int05Handler';
  309. procedure Int06Handler; external name 'Int06Handler';
  310. procedure Int07Handler; external name 'Int07Handler';
  311. procedure Int08Handler; external name 'Int08Handler';
  312. procedure Int09Handler; external name 'Int09Handler';
  313. procedure Int10Handler; external name 'Int10Handler';
  314. procedure Int11Handler; external name 'Int11Handler';
  315. procedure Int12Handler; external name 'Int12Handler';
  316. procedure Int13Handler; external name 'Int13Handler';
  317. procedure Int14Handler; external name 'Int14Handler';
  318. procedure Int15Handler; external name 'Int15Handler';
  319. procedure Int16Handler; external name 'Int16Handler';
  320. procedure Int17Handler; external name 'Int17Handler';
  321. procedure _FPC_start; assembler; nostackframe;
  322. label
  323. _start;
  324. asm
  325. .init
  326. .globl _start
  327. rjmp _start
  328. rjmp Int00Handler
  329. rjmp Int01Handler
  330. rjmp Int02Handler
  331. rjmp Int03Handler
  332. rjmp Int04Handler
  333. rjmp Int05Handler
  334. rjmp Int06Handler
  335. rjmp Int07Handler
  336. rjmp Int08Handler
  337. rjmp Int09Handler
  338. rjmp Int10Handler
  339. rjmp Int11Handler
  340. rjmp Int12Handler
  341. rjmp Int13Handler
  342. rjmp Int14Handler
  343. rjmp Int15Handler
  344. rjmp Int16Handler
  345. rjmp Int17Handler
  346. {
  347. all ATMEL MCUs use the same startup code, the details are
  348. governed by defines
  349. }
  350. {$i start.inc}
  351. .weak Int00Handler
  352. .weak Int01Handler
  353. .weak Int02Handler
  354. .weak Int03Handler
  355. .weak Int04Handler
  356. .weak Int05Handler
  357. .weak Int06Handler
  358. .weak Int07Handler
  359. .weak Int08Handler
  360. .weak Int09Handler
  361. .weak Int10Handler
  362. .weak Int11Handler
  363. .weak Int12Handler
  364. .weak Int13Handler
  365. .weak Int14Handler
  366. .weak Int15Handler
  367. .weak Int16Handler
  368. .weak Int17Handler
  369. .set Int00Handler, Default_IRQ_handler
  370. .set Int01Handler, Default_IRQ_handler
  371. .set Int02Handler, Default_IRQ_handler
  372. .set Int03Handler, Default_IRQ_handler
  373. .set Int04Handler, Default_IRQ_handler
  374. .set Int05Handler, Default_IRQ_handler
  375. .set Int06Handler, Default_IRQ_handler
  376. .set Int07Handler, Default_IRQ_handler
  377. .set Int08Handler, Default_IRQ_handler
  378. .set Int09Handler, Default_IRQ_handler
  379. .set Int10Handler, Default_IRQ_handler
  380. .set Int11Handler, Default_IRQ_handler
  381. .set Int12Handler, Default_IRQ_handler
  382. .set Int13Handler, Default_IRQ_handler
  383. .set Int14Handler, Default_IRQ_handler
  384. .set Int15Handler, Default_IRQ_handler
  385. .set Int16Handler, Default_IRQ_handler
  386. .set Int17Handler, Default_IRQ_handler
  387. end;
  388. end.