Subversion Repositories pentevo

Rev

Rev 291 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. ;
  2. ;--------------------------------------
  3. ;
  4. .DSEG
  5. MSCOUNTER:      .BYTE   2
  6. .CSEG
  7. ;
  8. ;--------------------------------------
  9. ;
  10. TIMERS_INIT:
  11. ;TIMER 3
  12.         LDI     TEMP,(0<<WGM31)|(0<<WGM30)
  13.         OUTPORT TCCR3A,TEMP
  14.         LDI     TEMP,(0<<WGM33)|(1<<WGM32)|(0<<CS32)|(0<<CS31)|(1<<CS30)
  15.         OUTPORT TCCR3B,TEMP
  16.  
  17.         LDI     TEMP,HIGH(11058)
  18.         OUTPORT OCR3AH,TEMP
  19.         LDI     TEMP,LOW(11058)
  20.         OUTPORT OCR3AL,TEMP
  21. ;
  22.         INPORT  TEMP,ETIMSK
  23.         ORI     TEMP,(1<<OCIE3A)
  24.         OUTPORT ETIMSK,TEMP
  25.  
  26.         RET
  27. ;
  28. ;--------------------------------------
  29. ;
  30. TIM3_COMPA:
  31.         PUSH    TEMP
  32.         IN      TEMP,SREG
  33.         PUSH    TEMP
  34.  
  35.         LDS     TEMP,MSCOUNTER+0
  36.         SBRC    TEMP,4
  37.         LED_ON
  38.         INC     TEMP
  39.         STS     MSCOUNTER+0,TEMP
  40.         BRNE    TIM3_CMPA_1
  41.         LED_OFF
  42.         LDS     TEMP,MSCOUNTER+1
  43.         INC     TEMP
  44.         STS     MSCOUNTER+1,TEMP
  45. TIM3_CMPA_1:
  46.  
  47.         POP     TEMP
  48.         OUT     SREG,TEMP
  49.         POP     TEMP
  50.         RETI
  51. ;
  52. ;--------------------------------------
  53. ;in:    W == таймайт, мс (1..16383)
  54. ;       Z == указатель в RAM (используются два байта)
  55. SET_TIMEOUT_MS:
  56.         PUSHX
  57.         CLI
  58.         LDS     XL,MSCOUNTER+0
  59.         LDS     XH,MSCOUNTER+1
  60.         SEI
  61.         ADD     XL,WL
  62.         ADC     XH,WH
  63.         ORI     XH,$80
  64.         ST      Z,XL
  65.         STD     Z+1,XH
  66.         POPX
  67.         RET
  68. ;
  69. ;--------------------------------------
  70. ;in:    Z == указатель в RAM (используются два байта)
  71. ;out:   sreg.C - SET == время вышло
  72. CHECK_TIMEOUT_MS:
  73.         PUSH    WH
  74.         LDD     WH,Z+1
  75.         SBRS    WH,7
  76.         RJMP    CHKTMS_9
  77.         PUSH    WL
  78.         LD      WL,Z
  79.         PUSHX
  80.         CLI
  81.         LDS     XL,MSCOUNTER+0
  82.         LDS     XH,MSCOUNTER+1
  83.         SEI
  84.         SUB     XL,WL
  85.         SBC     XH,WH
  86.         SBRC    XH,6
  87.         RJMP    CHKTMS_8
  88.         STD     Z+1,NULL
  89.         POPX
  90.         POP     WL
  91. CHKTMS_9:
  92.         POP     WH
  93.         SEC
  94.         RET
  95. CHKTMS_8:
  96.         POPX
  97.         POP     WL
  98.         POP     WH
  99.         CLC
  100.         RET
  101. ;
  102. ;--------------------------------------
  103. ;
  104.