User Tag List

Показано с 1 по 10 из 63

Тема: Чтение TAP файлов ZX-Spectrum на базе STM32F407

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    279
    Спасибо Благодарностей отдано 
    24
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это обработчик прерывания таймера 6

    Код:
    void TIM6_DAC_IRQHandler(void)
    {
      /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
      /* USER CODE END TIM6_DAC_IRQn 0 */
      HAL_TIM_IRQHandler(&htim6);
      /* USER CODE BEGIN TIM6_DAC_IRQn 1 */		
    
    if (TapeOutMode==TAPE_OUT_STOP)
     {
    	HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
      return;
     }		
      if (TapeOutVolume==true)
     {
      HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
      TapeOutVolume=false;
     }
     else
     {
      HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);
      TapeOutVolume=true;
     }
     
      //выводим пилот-тон
     if (TapeOutMode==TAPE_OUT_LEAD)
     {
      TIM6->PSC = 13011;//начальное значение таймера
      if (tim6_countersec > 0) tim6_countersec--;
      else
      {
    	 tim6_countersec = 3223;
       TapeOutMode=TAPE_OUT_SYNCHRO_1;
       return;
      }
     }
     
     //выводим синхросигнал 1
     if (TapeOutMode==TAPE_OUT_SYNCHRO_1)
     {
      TIM6->PSC =4050;//начальное значение таймера
      TapeOutMode=TAPE_OUT_SYNCHRO_2;
      return;
     }
     
     //выводим синхросигнал 2
     if (TapeOutMode==TAPE_OUT_SYNCHRO_2)
     {
      TIM6->PSC = 4420;//начальное значение таймера
      TapeOutMode=TAPE_OUT_DATA;
      index16=16;
      byte=0;
    	BytesCount=0;//обнуляем счетчик байт
    	 return;
     }
    
     //передаём данные 
     if (TapeOutMode==TAPE_OUT_DATA)
     {   
      if (index16>=16)
      {     
       if (BytesCount>=sz)
       {
        TapeOutMode=TAPE_OUT_STOP;
    		BytesCount = 0;
    	return;
       }
    	byte=FioNextByte();//читаем байт из буфера
    	byte_temp = byte;
    	index16=0;//первоначальное значение бита				
    	BytesCount++;//общий счетчик байт файла	
      }
      //выдаём бит
      if (byte&128) {
    		TIM6->PSC = 10265;//начальное значение таймера
    	}
                else {
    							TIM6->PSC = 5132;//начальное значение таймера
    						}
      if ((index16%2)==1) byte<<=1;  
      index16++;
      return;		
     } 
    
    }
    Последний раз редактировалось san010101; 18.10.2017 в 04:43.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 15
    Последнее: 27.09.2025, 12:42
  2. Ответов: 0
    Последнее: 12.01.2017, 11:00
  3. Конвертор TAP файлов
    от dM_GBG в разделе Софт
    Ответов: 1
    Последнее: 22.11.2011, 11:01
  4. чтение файлов MS-word
    от p@lex в разделе Софт
    Ответов: 17
    Последнее: 22.12.2007, 09:42
  5. Как в Unreal ускорить загрузку TAP файлов?
    от lavstudio в разделе Эмуляторы
    Ответов: 1
    Последнее: 19.02.2005, 01:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •