attiny11.pp 2.9 KB

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