SaveText.Ru

Без имени
  1. #include "DSP2803x_Device.h"
  2. #include "DSP2803x_Examples.h"
  3.  
  4. int t2=0;
  5. int led2_state=0;
  6. int led2_cycles=0;
  7. int t1=0;
  8. int led1_state=0;
  9. int led1_cycles=0;
  10. int state=0;
  11. int k=500;
  12. int n=1000;
  13.  
  14. void led1Control (void) {
  15.  t1++;
  16.  if (t1 < k) {
  17.   led1_state=1;
  18.  } else {
  19.   led1_state=0;
  20.  }
  21.  if (t1 > (k + 1000)){
  22.   t1=0;
  23.   led1_cycles ++;
  24.  }
  25. }
  26.  
  27. void led2Control (void) {
  28.  t2++;
  29.  if (t2 < n) {
  30.    led2_state=1;
  31.   } else {
  32.    led2_state=0;
  33.   }
  34.   if (t2 == (n + 1000)){
  35.    t2=0;
  36.    led2_cycles++;
  37.   }
  38. }
  39.  
  40. void led_all_control (void){
  41.  
  42.  if(state==0){
  43.   led1Control();
  44.    if (led1_cycles == 1){
  45.    state = 1;
  46.    led1_cycles=0;}
  47.  }else{
  48.   led2Control();
  49.   if (led2_cycles == 1){
  50.   state=0;
  51.   led2_cycles=0;}
  52.   }
  53.  
  54. }
  55.  
  56. interrupt void isr_timer (void) {
  57.  
  58.  led_all_control();
  59.  
  60.  CpuTimer0Regs.TCR.bit.TIF = 1;
  61.  PieCtrlRegs.PIEACK.bit.ACK1=1;
  62. }
  63.  
  64. void main(void){
  65.  
  66.  InitSysCtrl();//сторожевой таймер. предотвращает зависание.
  67.  // инициализация PIE
  68.  InitPieCtrl();
  69.  // инициализация векторов прерывания
  70.  InitPieVectTable();
  71.  
  72.  // разрешить изменение защищенных регистров
  73.  EALLOW;
  74.  
  75.  // настройка таймерана частоту 1 кГц
  76.  CpuTimer0Regs.PRD.all = 60000; // Записываем значение периода.
  77.  CpuTimer0Regs.TCR.bit.TIE = 1;
  78.  
  79.  //разрешение прерываний
  80.  PieCtrlRegs.PIEIER1.bit.INTx7=1;
  81.  IER |= 0x1;
  82.  
  83.  //функция обработки прерывания
  84.  PieVectTable.TINT0 = isr_timer;
  85.  
  86.  //мутильплицирование выводов
  87.  GpioCtrlRegs.GPAMUX2.bit.GPIO31=0;
  88.  GpioCtrlRegs.GPBMUX1.bit.GPIO34=0;
  89.  
  90.  GpioCtrlRegs.GPADIR.bit.GPIO31=1;
  91.  GpioCtrlRegs.GPBDIR.bit.GPIO34=1;
  92.  
  93.  EDIS;
  94.  
  95.  EINT;
  96.  
  97.  while (1){
  98.   if (led1_state == 0){
  99.     GpioDataRegs.GPASET.bit.GPIO31=1;
  100.   }else{
  101.     GpioDataRegs.GPACLEAR.bit.GPIO31=1;
  102.   }
  103.   if (led2_state == 0){
  104.    GpioDataRegs.GPBSET.bit.GPIO34=1;
  105.   }else{
  106.      GpioDataRegs.GPBCLEAR.bit.GPIO34=1;
  107.   }
  108.  }
  109. }

Share with your friends:

Print