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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dsa.c.bak

?? w77E58開(kāi)發(fā)的具備藍(lán)牙功能的GPS導(dǎo)航儀
?? BAK
字號(hào):

#include "global.h"
#include "util.h"
#include "dsa.h"
#include "mb90092.h"


#define LOW_BYTE        1

#define HIGH_BYTE       0

#define PARAMETER       LOW_BYTE
#define CMD             HIGH_BYTE


DSA_CMD       idata          dsa_recieve;
extern unsigned      char idata     DSA_timer;


extern unsigned char xdata gps_recieve_buf[];

extern unsigned int    dsa_task;
extern unsigned char   dsa_state;
extern unsigned char   main_row;
extern unsigned char   main_column;
extern unsigned char   character_color;
extern unsigned char   line_color;
unsigned int    display_char;

unsigned char dsa_send_count=0;

void DSA_servo(void)
{
       
       if(DSA_recieve(0)==SUCCESS)
       {

         #if 0 
          //clear_main_screen();
          OSD_ASCII_output(7,5,(dsa_recieve.Word>>8)&0xff);        
          OSD_ASCII_output(4,5,dsa_recieve.Word&0xff);           
         #endif 
             
	      switch((dsa_recieve.Word >>8)&0xff)
          {
             case 0x70:
                  main_row =dsa_recieve.Word&0xff; 
                  break;
             case 0x71:
                  main_column =dsa_recieve.Word&0xff; 
                  break;
             case 0x72:
                  character_color=dsa_recieve.Word&0xff;
                  break;
             case 0x73:
                  line_color=dsa_recieve.Word&0xff;
                  break;
          
             case 0x74:
                  display_char = (dsa_recieve.Word<<8)&0xff00;
                  //OSD_ASCII_output(1,5,(dsa_recieve.Word>>8)&0xff);        
                  //OSD_ASCII_output(3,5,dsa_recieve.Word&0xff);           
                  
				  break;
                        
              case 0x75:
                  display_char |= (dsa_recieve.Word&0xff);
                  //OSD_ASCII_output(1,7,(dsa_recieve.Word>>8)&0xff);        
                  //OSD_ASCII_output(3,7,dsa_recieve.Word&0xff);           
                  OSD_ASCII_output(8,9,(display_char>>8)&0xff);        
                  OSD_ASCII_output(9,9,display_char&0xff);           
    
                  
                  //OSD_main_symbol(main_row,main_column,character_color,line_color,display_char>>8);
	          //OSD_main_symbol(main_row,main_column,character_color,line_color,display_char);
	
                  break;
          
   
 

          }
       }
       else {
      
                 //if(DSA_send(dsa_task>>8,dsa_task)==SUCCESS)
                 //dsa_task =0;  
#if 1       
         switch(dsa_state)
         {
             case 0:                

                  break;
             case 1:                
                  if(dsa_task==DSA_send_gps){
                     ES0 =0;ES1 =0;
                     dsa_send_count=0;
                     dsa_state++;
                  }                
	              else
                  if(dsa_task==DSA_send_gsm){
                     dsa_send_count=0;
                     dsa_state = 3; 
                  }
                  break;
 
              case 2:                
                  if(DSA_send(dsa_task>>8,gps_recieve_buf[dsa_send_count])==SUCCESS)
                  {
		      dsa_send_count++;
                        
                  }          
	          if(dsa_send_count==(GPS_MAX_MESSAGE) /*GPS_send_over*/){
                     ES0 = 1; ES1 = 1;
	             dsa_send_count = 0;     
                     dsa_task = 0;
                     dsa_state = 0;
                     //GPS_valid = 1;  //gwm adjust
                  }
                  break;
 
              case 3:                
                  if(DSA_send(dsa_task>>8,gps_recieve_buf[dsa_send_count])==SUCCESS)
                  {
		      dsa_send_count++;
                        
                  }          
	          if(dsa_send_count==300/*GSM_send_over*/){
                     dsa_send_count = 0;     
                     dsa_task = 0;
                     dsa_state = 0;
                  }
                  break;
               case 4:                
                 if(DSA_send(dsa_task>>8,dsa_task)==SUCCESS)
                   dsa_task = 0; 
                 dsa_state = 0;
                 break;
               


         }
       
#endif

       }     

}


/***************************************************************************
*  Function    : DSA_send 
*  Description : 1. Transfer command and parameter to control DSA interface
*                2. DSA timing includes 3 phases :
*                   sync, data transfer, comm ack
*                3. Use 3 bus lines : DATA, STB, ACK
*                4. Process as a transmitter
*  Arguments   : bCmd ==> DSA command to processor(Opcode)
*                bParameter==> for DSA command parameter
*  Return      : SUCCESS, FAIL
*****************************************************************************/
bit DSA_send(unsigned char bCmd,unsigned char bParameter)
{
        char btRCVResponse;
        unsigned char i,bRetry;
        
		DSA_DAT = LOW;                         /* transfer request */
        DSA_DAT = LOW;                         /*delay */
        DSA_DAT = LOW;                         /*delay */
        
      
         
        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && DSA_ACK ); 
        if(!DSA_timer) goto dsa_snd_restore;

        
        DSA_DAT = HIGH;


        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && !DSA_ACK ); 
        if(!DSA_timer) goto dsa_snd_restore;

     
        /*---------- Data transmission ---------                        */
        /*8 bits for command, 8 bits for parameter                      */
        /* transmitter : transmit 1 bit==>let stb=0 ==> wait until ack=0*/
        /*               ==> let stb=1 ==> wait until ack=1 ==> next bit*/
        dsa_recieve.Byte[CMD]=bCmd;
        dsa_recieve.Byte[PARAMETER]=bParameter;


        for( i=0;i<16;i++ )     /* to transfer 16 bits */
        {
                DSA_DAT = MSB(dsa_recieve.Word); /* send msb */

                DSA_STB = LOW;      /* data valid */

                DSA_timer = DSA_SYS_250ms;  
                while( (DSA_timer > 0) && DSA_ACK ); 
                if(!DSA_timer) goto dsa_snd_restore;

                DSA_STB = HIGH;

                DSA_timer = DSA_SYS_250ms;  
                while( (DSA_timer > 0) && !DSA_ACK ); 
                if(!DSA_timer) goto dsa_snd_restore;

                dsa_recieve.Word <<= 1; /* shift left 1 bit */
        }


        DSA_DAT = HIGH;


        //for(i = 0; i < 0x20;i++);

        /*---------- Communication acknowledge --------
        // set ack=0 ==> wait until stb=0==>read reply=>set ack=1
        // ==>wait until stb=1 and data=1
        */

        DSA_ACK = LOW;
        

        /* wait for rcv clearing STB, timeout~250ms
        // the receiver lower the STB
	// indicate the status of transmission is on the DATA line        
        */

        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && DSA_STB ); 
        if(!DSA_timer) goto dsa_snd_restore;

       
        btRCVResponse = (char)DSA_DAT;        /* read receiver's reply */


        /* the transmitter raise the ACK line */
        /* indicate the transmitter know the status of transmission */
        DSA_ACK = HIGH;


        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && !DSA_STB ); 
        if(!DSA_timer) goto dsa_snd_restore;
     
        goto dsa_snd_ok;
dsa_snd_restore:

        btRCVResponse = 0;

dsa_snd_ok:

        DSA_DAT = HIGH;
        DSA_STB = HIGH;
        DSA_ACK = HIGH;

        dsa_recieve.Byte[0] = 0;
        dsa_recieve.Byte[1] = 0;
        

        if(btRCVResponse)
           return SUCCESS;
        else
           return FAIL;


}



/*************************************************************************
*  Function    : DSA_recieve
*  Description : 1.  Receive command and parameter from DSA interface
*                2.  Process as a receiver
*                3.  Use 3 bus lines : DATA, STB, ACK
*                4.  Count the received data--> 16 bit
*  Arguments   : bRCVCmd : expected response command from dsa interface
*                wWaitTime : wait for response timeout
*  Return      : if bRCVCmd == DSA_DUMMY(0x00) ==> return SUCCESS
*                if (bRCVCmd == received command from servo)
*                     && (bit count == 16)
*                    ==> return data (from servo)
*                else  return recieve_restore(0xff)
 ************************************************************************/
unsigned char DSA_recieve(unsigned char bRCVCmd)
{

        unsigned char i;
        char btDataOK;

        /* commands from servo processor
        *--------- Starting sychronization -----------
        * wait until data=0 ==> set ack=0 ==> wait until data=1 ==>
        * set ack=1 ==>ready
        * wait the transmitter pull down the DATA line
        */

        if( DSA_DAT )  goto recieve_restore;
     
        

        /* the DATA line is low, the receiver then clears the ACK line */
        DSA_ACK = LOW; /* recognized the data transfer request */


        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && !DSA_DAT ); 
        if(!DSA_timer) goto recieve_restore;

	   
        DSA_ACK = HIGH;


        /*---------- Data transmission ---------
        // 8 bits for command, 8 bits for parameter
        // wait until stb=0 ==> receive 1 bit ==> set ack=0
        // ==> wait until stb=1 ==> set ack=1 ==> next bit
        */

        for(i=0;i<16;i++)
        {
                dsa_recieve.Word <<= 1; /* shift 1 bit to the left */

                DSA_timer = DSA_SYS_250ms;  
                while( (DSA_timer > 0) && DSA_STB ); 
                if(!DSA_timer) goto recieve_restore;

                /* receiver read the data, update the bit 0 each time */
                dsa_recieve.Word |= DSA_DAT;
                /* then lower the ACK  */
                DSA_ACK=LOW; /* data received */


                DSA_timer = DSA_SYS_250ms;  
                while( (DSA_timer > 0) && !DSA_STB ); 
                if(!DSA_timer) goto recieve_restore;

                /* receiver raise the ACK line, 1 bit transmitted */
                DSA_ACK = HIGH;

        }

         
        /*---------- Communication acknowledge --------
        // wait until ack=0 ==> reply transmission status ==> set stb=0 ==> 
        // wait until ack=1 ==>set stb=1 and data=1
        */

        /* assume the transmission is OK */
        DSA_DAT = 1;

        /* the transmitter will clear the ACK line for checking the transmitting status */

        DSA_timer = DSA_SYS_250ms;  
        while( (DSA_timer > 0) && DSA_ACK ); 
        if(!DSA_timer) goto recieve_restore;
       
       
        /* instead of checking the bit counter, we check the command received
        * for if the program achieve this phase, the bit counter is always 16.
        * the receiver lower the DATA line means data error
        * but even data transmission error, still need to complete the acknowledge phase
        */
#if 0
        if( (bRCVCmd==DSA_DUMMY) || (dsa_recieve.Byte[CMD]==bRCVCmd) )
        {
                btDataOK =(char) TRUE;
                DSA_DAT = 1;    /* data ok */
        }
        else
        {
                btDataOK =(char) FALSE;
                DSA_DAT = 0;    /* data error */
        }

#endif

         DSA_DAT = 1;    /* data ok */

        /*
        after setting the transmission status, the receiver then clear the STB line
        */

        DSA_STB = LOW;

        /*
        wait for transmitter setting ACK
        */
        DSA_timer = DSA_SYS_250ms;  //250 ms
        while( (DSA_timer > 0) && !DSA_ACK ); 
        if(!DSA_timer) goto recieve_restore;
        /*
         the receiver raise the STB line and DATA line to end the transmission cycle.
        */
         
        DSA_STB = HIGH;
        DSA_DAT = HIGH;
        DSA_ACK = HIGH; 
 
        
		
	/*---------- Communication complete --------*/

        /*
        some command do not need check response command
        */

        //if( bRCVCmd == DSA_DUMMY )
        return SUCCESS;        /* always return successful*/

recieve_restore:

        DSA_STB = HIGH;
        DSA_DAT = HIGH;
        DSA_ACK = HIGH;

        return DSA_ERR_RESPONSE;		

#if 0
        /* the response command are correct */
		else
        if( btDataOK ) 
                return dsa_recieve.Byte[PARAMETER]; /* return response parameter */

        return DSA_ERR_RESPONSE;
#endif

}








?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区在线看蜜臀| av成人动漫在线观看| 免费观看成人av| 蜜臀久久99精品久久久久久9| 日本 国产 欧美色综合| 美女视频黄久久| 国产一区二区三区最好精华液| 狠狠色综合播放一区二区| 国产美女精品人人做人人爽 | 成人v精品蜜桃久久一区| 国产大陆亚洲精品国产| 成人激情午夜影院| 91在线观看美女| 欧洲激情一区二区| 欧美日韩亚洲另类| 欧美mv和日韩mv国产网站| 久久人人超碰精品| 国产精品高潮呻吟久久| 亚洲激情男女视频| 日韩国产欧美一区二区三区| 精品夜夜嗨av一区二区三区| 成人免费视频视频在线观看免费| 91丨九色丨国产丨porny| 在线日韩一区二区| 欧美tk—视频vk| 一区在线观看免费| 亚洲gay无套男同| 久久99精品久久只有精品| 福利一区福利二区| 在线观看日韩精品| 日韩精品一区二区三区四区| 欧美国产精品专区| 亚洲自拍偷拍麻豆| 麻豆精品视频在线观看| 成人高清视频在线观看| 欧美写真视频网站| 亚洲精品在线免费观看视频| 国产精品久久三区| 午夜精品福利一区二区蜜股av| 久久99精品一区二区三区三区| 成人h精品动漫一区二区三区| 欧美日韩一级大片网址| 国产三级一区二区| 亚洲超丰满肉感bbw| 国产九色精品成人porny| 日本福利一区二区| 久久色.com| 亚洲成av人片在线| 北条麻妃国产九九精品视频| 91精品国产一区二区| 最新国产精品久久精品| 毛片一区二区三区| 91官网在线观看| 亚洲国产高清aⅴ视频| 五月激情丁香一区二区三区| 不卡视频一二三四| 欧美成va人片在线观看| 亚洲一区在线观看网站| 高清免费成人av| 91精品国产一区二区三区香蕉| 亚洲色图一区二区| 国产成人自拍在线| 日韩免费一区二区| 亚洲大片精品永久免费| 97久久精品人人澡人人爽| 久久亚洲精精品中文字幕早川悠里| 亚洲国产日韩a在线播放| av一区二区不卡| 国产夜色精品一区二区av| 日本欧美肥老太交大片| 欧美日韩亚洲不卡| 樱花草国产18久久久久| 国产成人精品aa毛片| 日韩精品中午字幕| 偷拍自拍另类欧美| 在线观看一区二区精品视频| 国产精品天美传媒| 国产原创一区二区三区| 日韩欧美精品在线| 日本在线不卡视频一二三区| 欧美性受极品xxxx喷水| 中文字幕字幕中文在线中不卡视频| 国产成人在线视频网站| 久久久久久久久久美女| 黑人精品欧美一区二区蜜桃| 欧美成人官网二区| 麻豆精品一二三| 欧美成人一区二区三区片免费| 午夜精品视频一区| 在线电影院国产精品| 亚洲国产一区二区视频| 欧美日韩综合在线免费观看| 一级女性全黄久久生活片免费| 91小视频在线免费看| 亚洲美女精品一区| 在线观看中文字幕不卡| 亚洲国产欧美在线| 欧美日韩精品系列| 午夜精品成人在线| 欧美一级在线视频| 精品一区二区三区在线播放视频| 精品黑人一区二区三区久久| 精品一区二区三区在线观看国产| 精品免费一区二区三区| 国产精品一区三区| 国产精品丝袜91| 色婷婷精品久久二区二区蜜臀av| 亚洲欧美国产三级| 欧美午夜片在线看| 日产欧产美韩系列久久99| 精品日韩欧美在线| 国产成人亚洲精品青草天美| 国产精品女主播av| 91色九色蝌蚪| 午夜成人免费视频| 欧美变态凌虐bdsm| 韩国一区二区视频| 国产午夜精品一区二区三区嫩草| 成人毛片在线观看| 亚洲激情图片qvod| 欧美一区二区三级| 国产九九视频一区二区三区| 国产精品国产三级国产普通话99| 色av一区二区| 欧美a级理论片| 国产视频911| 在线观看视频一区| 久久精品国产澳门| 中文字幕一区在线| 欧美精品aⅴ在线视频| 一本久久a久久免费精品不卡| 亚洲午夜免费视频| 精品久久久久久无| 91在线观看美女| 免费成人av资源网| 亚洲欧洲精品一区二区三区不卡| 欧美日韩精品欧美日韩精品| 国产毛片精品一区| 亚洲一区二区三区四区的| 欧美tk—视频vk| 91久久精品网| 国产一区二区在线观看视频| 一区二区三区中文免费| 精品国精品国产尤物美女| 色综合一个色综合亚洲| 免费精品视频最新在线| 亚洲日本电影在线| 欧美电视剧在线看免费| 一本色道**综合亚洲精品蜜桃冫| 日韩福利视频导航| 国产精品二三区| 欧美电视剧免费全集观看| 91在线视频官网| 国产一区福利在线| 亚洲成人先锋电影| 国产日韩一级二级三级| 欧美一区二区三区四区高清| 成人免费毛片aaaaa**| 日本视频中文字幕一区二区三区| 亚洲欧洲av在线| 2023国产精品视频| 欧美日韩在线三区| 成人av综合一区| 理论电影国产精品| 亚洲h精品动漫在线观看| 国产精品私人影院| 久久亚洲精华国产精华液| 欧美精品色一区二区三区| 不卡av在线免费观看| 久久国产乱子精品免费女| 香蕉加勒比综合久久| 亚洲欧美韩国综合色| 国产欧美一区二区精品性| 日韩欧美视频在线| 欧美男男青年gay1069videost| 99精品欧美一区二区蜜桃免费 | 成人免费的视频| 久久电影网站中文字幕| 午夜电影一区二区三区| 一区二区三区国产| 亚洲免费观看在线视频| 国产精品久久久99| 欧美国产一区在线| 久久精品亚洲乱码伦伦中文| 精品区一区二区| 日韩色在线观看| 91精品国产综合久久久久久久 | 亚洲欧美偷拍另类a∨色屁股| 国产日产亚洲精品系列| 精品国产乱码久久久久久闺蜜 | 日日摸夜夜添夜夜添精品视频| 亚洲综合一二三区| 亚洲一区在线观看免费观看电影高清 | 精品卡一卡二卡三卡四在线| 777久久久精品| 欧美日韩一区高清| 欧美日韩一区二区三区高清| 欧美亚洲免费在线一区| 在线免费不卡视频| 欧美三级电影在线看|