亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? rds解碼過程
?? C
?? 第 1 頁 / 共 3 頁
字號:
        
      //reset decoder
      if (usart0RxDByte == 'r') {
        wdt_enable(WDTO_15MS);
        for(;;) {};
      }
        
      //switch group display on (B) or off (b)
      if (usart0RxDByte == 'B')
        displayBitstream = 0;
      else if (usart0RxDByte == 'b')
        displayBitstream = 1;
        
    } else {
      sei();
    }
    
    //we have got 26 bits raw rds data
    cli();
    if (event & eventBitstreamSnapshot) {
      event &= ~eventBitstreamSnapshot;
      sei();
      
      if (displayBitstream) {
        printf_P(PSTR("B: 0x%07lX\r\n"), bitstreamData);
      }
    } else {
      sei();
    }
    
    cli();
    if (event & eventTimerOverflow) {
      event &= ~eventTimerOverflow;
      sei();
      
      /* no rds signal message */
      if (syncQuality == 0 && syncMessage < 12) {
        syncMessage++;
        if (syncMessage == 12) {
          printf_P(PSTR("INFO: 0x02, No RDS signal.\r\n"));
          programmeIdentificationCode = 0;
        }
      }
          
      if (syncQuality > 0)
          syncMessage = 0;
          
      if (PORTC & _BV(PC0))
        PORTC &= ~_BV(PC0); //heartbeat led off
      else
        PORTC |= _BV(PC0); //heartbeat led on
      
    } else {
      sei();
    }
    
    //reset vars when sync lost. Warning, sync lost happens 26 times as many as groupcomlete, do not do anything lenghty here
    cli();
    if (event & eventSyncLost) {
      event &= ~eventSyncLost;
      sei();
      group0CodeBitsSteadyCount = 5;
    } else {
      sei();
    }
    
    cli();
    if (event & eventGroupComplete) {
        event &= ~eventGroupComplete;
        sei();
        
      //Group type code
      groupType = block2 / 0x1000; //bits 12-15 (2^12)
      
      //Group version code
      if (block2 & _BV(11))
        groupVersion = 'B';
      else
        groupVersion = 'A';
      
      if (displayRaw)
        printf_P(PSTR("GROUP%02u%c: 0x%04X 0x%04X 0x%04X 0x%04X\r\n"), groupType, groupVersion, block1, block2, block3, block4);
      
      //PI Codes of block 3 B-version groups are not decoded.
      
      //Programme Identification code
      if (programmeIdentificationCode != block1) {
        displayInfo();
        programmeIdentificationCode = block1;
        printf_P(PSTR("PI: 0x%04X, Detected new station.\r\n"), programmeIdentificationCode);
        
        /* reset variables because PI code changed */
        trafficProgrammeIdentificationCode = 0xFF;
        programmeTypeCode = 0xFF;
        trafficAnnouncementCode = 0xFF;
        musicSpeechSwitchScode = 0xFF;
  
        group0CodeBitsSteadyCount = 0;
        for(i = 0; i < sizeof(programmeServiceName); i++)
          programmeServiceName[i] = 0xFF;
          
        decoderIdentificationControlCode = 0xFF;        
        for(i = 0; i < sizeof(alternativeFrequencyCodes); i++)
          alternativeFrequencyCodes[i] = 0;
          
        linkageActuator = 0xFF;
        
        extendedCountryCode = 0;
        
        for(i = 0; i < sizeof(radioText); i++) {
          radioText[i] = 0;
          radioTextPrevious[i] = 0;
        }
        
        textSegmentAddress0Seen = 0;
          
        textVersionPrevious = 0;        textSegmentAddressPrevious = 0;
        
        utcMinutesPrevious = 0xFF;
        
      }
  
      //Programme Type code
      if (programmeTypeCode != ((block2 / 0x20) & 0x1F)) {
        programmeTypeCode = ((block2 / 0x20) & 0x1F); //bits 5-9 (2^5)
        printf_P(PSTR("PTY: 0x%02X, "), programmeTypeCode);
        switch(programmeTypeCode) {
          case 0:
            printf_P(PSTR("None."));
            break;
          case 1:
            printf_P(PSTR("News."));
            break;
          case 2:
            printf_P(PSTR("Current Affairs."));
            break;
          case 3:
            printf_P(PSTR("Information."));
            break;
          case 4:
            printf_P(PSTR("Sport."));
            break;
          case 5:
            printf_P(PSTR("Education."));
            break;
          case 6:
            printf_P(PSTR("Drama."));
            break;
          case 7:
            printf_P(PSTR("Cultures."));
            break;
          case 8:
            printf_P(PSTR("Science."));
            break;
          case 9:
            printf_P(PSTR("Varied Speech."));
            break;
          case 10:
            printf_P(PSTR("Pop Music."));
            break;
          case 11:
            printf_P(PSTR("Rock Music."));
            break;
          case 12:
            printf_P(PSTR("Easy Listening."));
            break;
          case 13:
            printf_P(PSTR("Light Classics."));
            break;
          case 14:
            printf_P(PSTR("Serious Classics."));
            break;
          case 15:
            printf_P(PSTR("Other Music."));
            break;
          case 16:
            printf_P(PSTR("Weather."));
            break;
          case 17:
            printf_P(PSTR("Finance."));
            break;
          case 18:
            printf_P(PSTR("Children."));
            break;
          case 19:
            printf_P(PSTR("Social Affairs."));
            break;
          case 20:
            printf_P(PSTR("Religion."));
            break;
          case 21:
            printf_P(PSTR("Phone In."));
            break;
          case 22:
            printf_P(PSTR("Travel & Touring."));
            break;
          case 23:
            printf_P(PSTR("Leisure & Hobby."));
            break;
          case 24:
            printf_P(PSTR("Jazz Music."));
            break;
          case 25:
            printf_P(PSTR("Country Music."));
            break;
          case 26:
            printf_P(PSTR("National Music."));
            break;
          case 27:
            printf_P(PSTR("Oldies Music."));
            break;
          case 28:
            printf_P(PSTR("Folk Music."));
            break;
          case 29:
            printf_P(PSTR("Documentary."));
            break;
          case 30:
            printf_P(PSTR("Alarm Test."));
            break;
          case 31:
            printf_P(PSTR("Alarm - Alarm !"));
            break;
          default:
            printf_P(PSTR("Unknown."));
            break;
        }
        printf_P(PSTR("\r\n"));
      }
  
      //Type 0 groups: Basic tuning and switching information
      if (groupType == 0) {
      
        //Traffic Programme Identification code
        //Traffic announcement code
        if (trafficAnnouncementCode != ((block2 / 0x10) & 0x01) ||
            trafficProgrammeIdentificationCode != (block2 & _BV(10)) / 0x400) {
          
          trafficAnnouncementCode = (block2 / 0x10) & 0x01; //bit 4 (2^4)
          trafficProgrammeIdentificationCode = (block2 & _BV(10)) / 0x400; //bit 10
          
          printf_P(PSTR("TP&TA: 0x%02X 0x%02X, "), trafficProgrammeIdentificationCode, trafficAnnouncementCode);

          if (trafficProgrammeIdentificationCode == 0) {
          
            if (trafficAnnouncementCode == 0) {
              printf_P(PSTR("No traffic announcements available."));
            } else {
              printf_P(PSTR("Traffic announcements available via EON on another station."));
            }
          
          } else {
          
            if (trafficAnnouncementCode == 0) {
              printf_P(PSTR("Traffic announcements available on this station and maybe via EON on another station."));
            } else {
              printf_P(PSTR("Traffic announcement in progress."));
            }
            
          }
          
          printf_P(PSTR("\r\n"));
          
        }
      
        //Music Speech switch code
        if (musicSpeechSwitchScode != ((block2 / 0x08) & 0x01)) {
          musicSpeechSwitchScode = (block2 / 0x08) & 0x01;  //bit 3 (2^3)
          printf_P(PSTR("MS: 0x%02X, "), musicSpeechSwitchScode);

          if (musicSpeechSwitchScode) 
            printf_P(PSTR("Music is being broadcasted or station does not use MS flag."));
          else
            printf_P(PSTR("Speech is being broadcasted."));
          printf_P(PSTR("\r\n"));
        }
        
        //Decode program service name and decoder identification control code
        group0CodeBits = block2 & 0x03; //0, 1, 2, 3;
        
        
        //TODO: improve decoderIdentificationControlCode detection, decouple from PS name
        //Decoder-identification control code-bit is bit 3 in block2
        if (group0CodeBits == 0) {
          if (block2 & 0x04)
            decoderIdentificationControlCodeNew |= _BV(3);
          else 
            decoderIdentificationControlCodeNew &= ~_BV(3);
        }
        if (group0CodeBits == 1) {
          if (block2 & 0x04)
            decoderIdentificationControlCodeNew |= _BV(2);
          else 
            decoderIdentificationControlCodeNew &= ~_BV(2);
        }
        if (group0CodeBits == 2) {
          if (block2 & 0x04)
            decoderIdentificationControlCodeNew |= _BV(1);
          else 
            decoderIdentificationControlCodeNew &= ~_BV(1);
        }
        if (group0CodeBits == 3) {
          if (block2 & 0x04)
            decoderIdentificationControlCodeNew |= _BV(0);
          else 
            decoderIdentificationControlCodeNew &= ~_BV(0);
        }
  
        //fill in information
        i = group0CodeBits * 2;
        programmeServiceNameNew[i] = block4 / 0xFF; //bits 8-16 (2^8)
        programmeServiceNameNew[i + 1] = block4; //bit 0-8
        
        if (programmeServiceNameNew[i] != programmeServiceName[i] ||
            programmeServiceNameNew[i + 1] != programmeServiceName[i + 1]) {
          //detected change, reset counter if not already counting
          if (group0CodeBitsSteadyCount > 4)
                group0CodeBitsSteadyCount = 0;
        }
        
        //increase counter only when there are less then 4 received words
        if (group0CodeBitsSteadyCount < 4)
          group0CodeBitsSteadyCount++;
        
        programmeServiceName[i] = programmeServiceNameNew[i];
        programmeServiceName[i + 1] = programmeServiceNameNew[i + 1];
        
        //when we detected 4 new PS words then display it
        if (group0CodeBitsSteadyCount == 4) {
          printf_P(PSTR("PS: "));
          for(i = 0; i < sizeof(programmeServiceName); i++) {
            printf_P(PSTR("%c"), programmeServiceName[i]);
          }
          printf_P(PSTR("\r\n"));
          //prevent redisplay
          group0CodeBitsSteadyCount++;
          
          if (decoderIdentificationControlCode != decoderIdentificationControlCodeNew) {
            decoderIdentificationControlCode = decoderIdentificationControlCodeNew;
            printf_P(PSTR("DI: 0x%02X"), decoderIdentificationControlCode);
            
            if (decoderIdentificationControlCode & 0b0001)
              printf_P(PSTR(", Stereo"));
            else
              printf_P(PSTR(", Mono"));
              
            if (decoderIdentificationControlCode & 0b0010)
              printf_P(PSTR(", Artificial Head"));
              
            if (decoderIdentificationControlCode & 0b0100)
              printf_P(PSTR(", Compressed"));
              
            if (decoderIdentificationControlCode & 0b1000)
              printf_P(PSTR(", Static PTY"));
            else
              printf_P(PSTR(", Dynamic PTY"));
              
            printf_P(PSTR(".\r\n"));
          }
        }
        
  
        if (groupVersion == 'A') {
        
          //Alternative frequency codes
          for (h = 0; h < 2; h++) {
            if (h == 0)
              j = block3; //first AF is in bits 0-7 of block3
            else
              j = block3 / 256; //second bits 8-15
              
            //only frequencies we want, no control codes

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍av一区二区三区| 在线播放中文字幕一区| 久久国产三级精品| 首页国产欧美日韩丝袜| 午夜久久福利影院| 天堂精品中文字幕在线| 亚洲一区二区综合| 亚洲国产一区二区在线播放| 亚洲免费av网站| 亚洲成人自拍一区| 免费看欧美女人艹b| 久久国产剧场电影| 成人午夜免费电影| 色综合久久综合| 欧美亚洲一区二区在线| 欧美一区二区久久| 国产色一区二区| 亚洲欧洲在线观看av| 亚洲综合久久久久| 久久99精品国产麻豆婷婷| 国产一区二区在线电影| 91原创在线视频| 欧美日韩国产小视频在线观看| 欧美日韩不卡在线| 久久久国际精品| 亚洲欧美视频在线观看| 日韩二区三区在线观看| 国产精品1区2区| 欧美日韩另类国产亚洲欧美一级| 欧美一二三区精品| 中文字幕在线观看一区| 日本最新不卡在线| 99久久国产综合精品麻豆| 欧美精品777| 国产精品久久久久久一区二区三区 | 午夜精品福利一区二区三区蜜桃| 久久成人免费日本黄色| 91捆绑美女网站| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧洲日本在线| 国产专区欧美精品| 欧美人动与zoxxxx乱| 国产精品免费久久| 精品影院一区二区久久久| 色综合久久久久综合体| 精品国产乱码91久久久久久网站| 一级特黄大欧美久久久| 粉嫩av亚洲一区二区图片| 91精品国产综合久久久久久久久久 | 99久久综合色| 欧美va天堂va视频va在线| 一区二区欧美在线观看| 成人午夜激情视频| 久久影音资源网| 秋霞午夜av一区二区三区| 色视频一区二区| 中文字幕五月欧美| 国产精品99久久久久久似苏梦涵| 欧美一三区三区四区免费在线看| 亚洲综合另类小说| 色综合中文字幕| 亚洲人成网站在线| av电影在线观看一区| 国产精品污www在线观看| 国产精品一区二区视频| 2024国产精品| 狠狠色丁香久久婷婷综合丁香| 911精品国产一区二区在线| 尤物视频一区二区| 一本大道久久a久久精二百 | 欧美一区二区三区在线观看视频| 日韩理论电影院| 97久久超碰国产精品电影| 国产精品对白交换视频| 国产91精品欧美| 国产欧美精品一区二区色综合 | 在线观看中文字幕不卡| 国产视频一区在线观看| 国产精品一级片| 久久久精品免费免费| 高清在线观看日韩| 国产精品久久久久7777按摩| 91尤物视频在线观看| 欧美日韩黄色一区二区| 亚洲日本免费电影| 日本高清成人免费播放| 亚洲影视资源网| 欧美伊人久久大香线蕉综合69 | 亚洲三级在线免费| 色综合天天视频在线观看| 亚洲一区二区三区美女| 欧美人妇做爰xxxⅹ性高电影| 日韩av一区二区三区| 欧美不卡视频一区| 99热国产精品| 日本不卡在线视频| 国产精品全国免费观看高清 | 色婷婷av一区二区三区大白胸 | 亚洲一卡二卡三卡四卡无卡久久| 欧美吻胸吃奶大尺度电影| 日韩 欧美一区二区三区| 久久久高清一区二区三区| 91在线视频官网| 奇米精品一区二区三区四区 | 国产亚洲一区二区三区四区| 成人h动漫精品一区二区| 亚洲一区二区三区不卡国产欧美| 日韩欧美一区二区在线视频| 成人福利视频在线| 日本aⅴ精品一区二区三区| 国产亚洲欧美激情| 欧美日韩国产高清一区二区三区 | 久久爱www久久做| 亚洲欧美在线视频| 欧美www视频| 91久久精品网| 国产精品一级黄| 日产国产高清一区二区三区| 中文字幕中文字幕在线一区| 日韩精品自拍偷拍| 91高清在线观看| 成人免费视频免费观看| 美女视频一区在线观看| 亚洲欧美日韩国产中文在线| 久久久亚洲精华液精华液精华液| 欧美日韩国产大片| 91麻豆6部合集magnet| 国产大陆a不卡| 精品一区二区三区不卡 | 日韩一区二区免费在线观看| 99久久综合国产精品| 国产精品主播直播| 老司机午夜精品| 污片在线观看一区二区| 一片黄亚洲嫩模| 亚洲欧美激情小说另类| 国产精品无圣光一区二区| 欧美精品一区二区久久婷婷| 91精品国产综合久久精品性色| www.在线成人| 99久久综合国产精品| 成人小视频在线| 成人在线视频首页| 成人综合在线观看| 国产成人精品亚洲777人妖| 黄色日韩三级电影| 久久99精品久久只有精品| 免费在线观看一区| 六月婷婷色综合| 久久国产日韩欧美精品| 久久精品国产亚洲高清剧情介绍| 日本成人中文字幕在线视频| 五月天精品一区二区三区| 日韩国产一区二| 裸体健美xxxx欧美裸体表演| 美女精品一区二区| 激情五月婷婷综合| 韩国视频一区二区| 国产成人福利片| 99久久99久久精品免费观看| 91小视频免费看| 欧美精品视频www在线观看| 欧美一区二区黄色| 欧美精品一区二区三区一线天视频 | 国产欧美一区二区三区在线老狼| 国产日韩视频一区二区三区| 国产精品蜜臀在线观看| 亚洲区小说区图片区qvod| 亚洲免费色视频| 日本中文在线一区| 国产美女娇喘av呻吟久久| 99热精品一区二区| 在线播放中文字幕一区| 久久九九影视网| 亚洲激情在线激情| 麻豆91精品视频| 一本久久a久久精品亚洲| 欧美日韩国产一二三| 精品国产网站在线观看| 成人免费在线视频观看| 天堂蜜桃一区二区三区| 风间由美一区二区三区在线观看 | 国产精品一区二区在线观看网站| 成人av电影在线网| 欧美区一区二区三区| 国产午夜一区二区三区| 亚洲精品日日夜夜| 激情综合色综合久久综合| 色欧美日韩亚洲| 久久精品欧美日韩| 亚洲第一在线综合网站| 岛国精品在线播放| 777亚洲妇女| 国产精品久99| 久久精品久久精品| 欧美日韩国产精品成人| 国产精品国产精品国产专区不蜜| 日韩av不卡一区二区| 91久久精品一区二区三区| 国产天堂亚洲国产碰碰|