Subversion Repositories pentevo

Rev

Rev 261 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.         INC     TEMP
  37.         STS     MSCOUNTER+0,TEMP
  38.         BRNE    TIM3_CMPA_1
  39.         LDS     TEMP,MSCOUNTER+1
  40.         INC     TEMP
  41.         STS     MSCOUNTER+1,TEMP
  42. TIM3_CMPA_1:
  43.  
  44.         POP     TEMP
  45.         OUT     SREG,TEMP
  46.         POP     TEMP
  47.         RETI
  48. ;
  49. ;--------------------------------------
  50. ;in:    W == таймайт, мс (1..16383)
  51. ;       Z == указатель в RAM (используются два байта)
  52. SET_TIMEOUT_MS:
  53.         PUSHX
  54.         CLI
  55.         LDS     XL,MSCOUNTER+0
  56.         LDS     XH,MSCOUNTER+1
  57.         SEI
  58.         ADD     XL,WL
  59.         ADC     XH,WH
  60.         ORI     XH,$80
  61.         ST      Z,XL
  62.         STD     Z+1,XH
  63.         POPX
  64.         RET
  65. ;
  66. ;--------------------------------------
  67. ;in:    Z == указатель в RAM (используются два байта)
  68. ;out:   sreg.C - SET == время вышло
  69. CHECK_TIMEOUT_MS:
  70.         PUSH    WH
  71.         LDD     WH,Z+1
  72.         SBRS    WH,7
  73.         RJMP    CHKTMS_9
  74.         PUSH    WL
  75.         LD      WL,Z
  76.         PUSHX
  77.         CLI
  78.         LDS     XL,MSCOUNTER+0
  79.         LDS     XH,MSCOUNTER+1
  80.         SEI
  81.         SUB     XL,WL
  82.         SBC     XH,WH
  83.         SBRC    XH,6
  84.         RJMP    CHKTMS_8
  85.         STD     Z+1,NULL
  86.         POPX
  87.         POP     WL
  88. CHKTMS_9:
  89.         POP     WH
  90.         SEC
  91.         RET
  92. CHKTMS_8:
  93.         POPX
  94.         POP     WL
  95.         POP     WH
  96.         CLC
  97.         RET
  98. ;
  99. ;--------------------------------------
  100. ;
  101.