Advertisement
Guest User

Untitled

a guest
Dec 6th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. AC
  3. AIN0 = PE2 = 1,25 В.
  4. AIN1 = PE3 = входной сигнал.
  5. Таймер 1 будет считать время между прерываниями от AC.
  6. Предделитель таймера 1 = 1 (62.5 нс).
  7. Переполнение через 0,0040959375 сек.
  8. Создадим 16-разр. счетчик количества прерываний от таймера 1.
  9. Время = (Кол-во переполнений * 0,0040959375) + (Текущее значение таймера * 62,5 нс);
  10. Частота = 1 / Время;
  11. Дальше необходимо округлить частоту и вывести на LCD.
  12.  
  13.  
  14. Что сделать:
  15. 1. Настроить таймер 1.
  16. 2. Настроить AC.
  17. 3. Создать переменную - счетчик переполнений.
  18.  
  19. */
  20. .DSEG
  21. .EQU    OVF_CNTR    =   0x200
  22.  
  23. .CSEG
  24. .include "m2560def.inc"
  25.  
  26. .ORG 0x0000
  27.     RJMP    Start_Init
  28.    
  29. .ORG 0x0038
  30.     RJMP    Int_AC
  31.  
  32. Start_Init:
  33. //SP = Ramend;
  34.     LDI     R16,    low(Ramend)
  35.     OUT     SPL,    R16
  36.     LDI     R16,    high(Ramend)
  37.     OUT     SPH,    R16
  38.  
  39.     /*AC_Mode_0
  40.     LDI     R16,    0b00001000
  41.     OUT     ACSR,   R16*/
  42.  
  43.     /*AC_Mode_1*/
  44. //ACSR = 0b01001000;
  45. //ACSR = 0x48;
  46.     LDI     R16,    0b01001000
  47.     OUT     ACSR,   R16
  48.    
  49. //DDRA = 0xFF;
  50.     LDI     R16,    0xFF
  51.     OUT     DDRA,   R16
  52. //PORTA = 0xFF;
  53.     OUT     PORTA,  R16
  54.  
  55. //sei();
  56.     SEI
  57. ;   \|/
  58. Main_Loop:
  59.     RJMP    Main_Loop
  60.  
  61. /*******************************/
  62. Int_AC:
  63. /*
  64.     Если (Таймер 1 вкл): выкл Таймер 1 и посчитать Время
  65.     Иначе:
  66.         1. Обнулить Таймер 1.
  67.         2. Вкл Таймер 1.
  68.         3. Обнулить счетчик переполнений.
  69. */
  70.     IN      R17,    PORTA
  71.     DEC     R17
  72.     OUT     PORTA,  R17
  73.         RETI
  74.  
  75. INT_TIM1_OVF:
  76. //OVF_CNTR++;
  77.     LDS     R20,    OVF_CNTR   
  78.     INC     R20
  79.     STS     OVF_CNTR,   R20
  80.         RETI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement