attiny11.pp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. unit ATtiny11;
  2. interface
  3. var
  4. ACSR: byte absolute $08; // Analog Comparator Control And Status Register
  5. PINB: byte absolute $16; // Input Pins, Port B
  6. DDRB: byte absolute $17; // Data Direction Register, Port B
  7. PORTB: byte absolute $18; // Data Register, Port B
  8. WDTCR: byte absolute $21; // Watchdog Timer Control Register
  9. TCNT0: byte absolute $32; // Timer Counter 0
  10. TCCR0: byte absolute $33; // Timer/Counter0 Control Register
  11. MCUSR: byte absolute $34; // MCU Status register
  12. MCUCR: byte absolute $35; // MCU Control Register
  13. TIFR: byte absolute $38; // Timer/Counter Interrupt Flag register
  14. TIMSK: byte absolute $39; // Timer/Counter Interrupt Mask Register
  15. GIFR: byte absolute $3A; // General Interrupt Flag register
  16. GIMSK: byte absolute $3B; // General Interrupt Mask Register
  17. SREG: byte absolute $3F; // Status Register
  18. const
  19. // Analog Comparator Control And Status Register
  20. ACIS0 = $00; // Analog Comparator Interrupt Mode Select bits
  21. ACIS1 = $01; // Analog Comparator Interrupt Mode Select bits
  22. ACIE = $03;
  23. ACI = $04;
  24. ACO = $05;
  25. ACD = $07;
  26. // Data Register, Port B
  27. PB0 = $00;
  28. PB1 = $01;
  29. PB2 = $02;
  30. PB3 = $03;
  31. PB4 = $04;
  32. // Watchdog Timer Control Register
  33. WDP0 = $00; // Watch Dog Timer Prescaler bits
  34. WDP1 = $01; // Watch Dog Timer Prescaler bits
  35. WDP2 = $02; // Watch Dog Timer Prescaler bits
  36. WDE = $03;
  37. WDTOE = $04;
  38. // Timer/Counter0 Control Register
  39. CS00 = $00;
  40. CS01 = $01;
  41. CS02 = $02;
  42. // MCU Status register
  43. PORF = $00;
  44. EXTRF = $01;
  45. // MCU Control Register
  46. ISC00 = $00; // Interrupt Sense Control 0 bits
  47. ISC01 = $01; // Interrupt Sense Control 0 bits
  48. SM = $04;
  49. SE = $05;
  50. // Timer/Counter Interrupt Flag register
  51. TOV0 = $01;
  52. // Timer/Counter Interrupt Mask Register
  53. TOIE0 = $01;
  54. // General Interrupt Flag register
  55. PCIF = $05;
  56. INTF0 = $06;
  57. // General Interrupt Mask Register
  58. PCIE = $05;
  59. INT0 = $06;
  60. // Status Register
  61. C = $00;
  62. Z = $01;
  63. N = $02;
  64. V = $03;
  65. S = $04;
  66. H = $05;
  67. T = $06;
  68. I = $07;
  69. implementation
  70. {$define RELBRANCHES}
  71. {$i avrcommon.inc}
  72. procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 1 External Interrupt 0
  73. procedure IO_PINS_ISR; external name 'IO_PINS_ISR'; // Interrupt 2 External Interrupt Request 0
  74. procedure TIMER0_OVF_ISR; external name 'TIMER0_OVF_ISR'; // Interrupt 3 Timer/Counter0 Overflow
  75. procedure ANA_COMP_ISR; external name 'ANA_COMP_ISR'; // Interrupt 4 Analog Comparator
  76. procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  77. asm
  78. rjmp __dtors_end
  79. rjmp INT0_ISR
  80. rjmp IO_PINS_ISR
  81. rjmp TIMER0_OVF_ISR
  82. rjmp ANA_COMP_ISR
  83. .weak INT0_ISR
  84. .weak IO_PINS_ISR
  85. .weak TIMER0_OVF_ISR
  86. .weak ANA_COMP_ISR
  87. .set INT0_ISR, Default_IRQ_handler
  88. .set IO_PINS_ISR, Default_IRQ_handler
  89. .set TIMER0_OVF_ISR, Default_IRQ_handler
  90. .set ANA_COMP_ISR, Default_IRQ_handler
  91. end;
  92. end.