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

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

?? sclk.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright 1996, ESS Technology, Inc. *//* SCCSID @(#)sclk.c	1.4 6/25/98 *//* Routines for TVM module (loader/servo) communication */#ifdef TVM_MODULE#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include "buffer.h"#include "common.h"#include "const.h"#include "vcxi.h"#include "timedef.h"#include "ioport.h"#include "dsc.h"#include "dsa8.h"#include "config.h"#include "util.h"#define TIMER1_COEF 6#define TIMER1_PERIOD -405000#ifdef CUST8_5DISKvoid IR_timer(void);int disk_position, disk_position2;int motor_fault_error, PI;int six_msec_counter , motor_timer ;int changer_control_register;  /* carousel rotation control and status*/int how_many_disk; /* number of position for carousel to turn */int have_disk;  /* 1: current position has a disk, 		   0: no disk in current position */volatile int motor_control_register;  /* tray and pickup control and status */extern volatile int loader_state;#endif /* CUST8_5DISK */#define SCLK_TO_VALUE   32/* defines for operation */#define SET_FALLING									\  {													\  	DETECT_FALLING_EDGE;	\        falling = 1;                                        \        SCLK_count = SCLK_TO_VALUE;                         \  }#define SET_RISING									\  {													\        DETECT_RISING_EDGE;                                  \        falling = 0;                                        \        SCLK_count = SCLK_TO_VALUE;                                     \  }/* define for interrupt state machine   because the interrupt needs quick response, we use switch statement   instead of if else */#define	SDA_IDLE	0#define SDA_RECEIVING 	1#define SDA_SENDING	2#define SDA_TIMEOUT 	3/* for transmission_state*//* for command_state*/#define SDA_INIT	0#define SDA_ARBITRATE	1#define SDA_COMMAND	2#define SDA_PARA	3#define SDA_CHECKSUM	4#define SDA_ACK		5#define SDA_RESET	6/* private variables */PRIVATE DBG_failcount = 0;PRIVATE DBG_rtocnt    = 0;PRIVATE DBG_ftocnt    = 0;PRIVATE volatile int send_receive;PRIVATE volatile int falling;PRIVATE int command_state;                                                 PRIVATE unsigned char CheckSum ; /* set up the check sum first */PRIVATE unsigned char buffer;PRIVATE int bitCount,byteCount,success = 0;PRIVATE int dbg_en;volatile unsigned int * waitptr= (unsigned int *) 0x1c060000;   /* EPROM access, for dummy cycle *//* global variables */PUBLIC unsigned char sda_cmd_msg;PUBLIC unsigned char sda_para[MAX_SDA_PARAMETERS];PUBLIC volatile unsigned char SCLK_data_ready;PRIVATE volatile int SCLK_count;/* imported variables */IMPORT unsigned char dsa_para[];/* function declarations */void		receiving_state(void);void		sending_state(void);void		init_sclk(void);int		trans_dsa(unsigned char);void		SCLK_timer(void);void SCLK_timer(void){    if(send_receive == SDA_IDLE) return;    if(SCLK_count){	--SCLK_count;	if(!SCLK_count)                 /* timed out */	{	    if(falling){		command_state = SDA_INIT;		send_receive = SDA_IDLE;		success = 0;		DBG_ftocnt++;		SET_SDA;	    }	    else{		send_receive = SDA_TIMEOUT;		DBG_rtocnt++;	    }	}    }}void init_sclk(void){    SET_FALLING;    send_receive = SDA_IDLE;    command_state = SDA_INIT;    bitCount = 0;    SET_SDA;                                   /* set SDA line to high */}/* ** sclk_isr * * *  PARAMETERS: * *  DESCRIPTION: * *  RETURNS: * */void sclk_isr(void){    switch (send_receive)    {      case SDA_IDLE:	SET_FALLING;	send_receive = SDA_RECEIVING;	command_state = SDA_INIT;	receiving_state();	break;      case SDA_RECEIVING:	receiving_state();	break;      case SDA_SENDING:	sending_state();        break;      case SDA_TIMEOUT:        SET_FALLING;        command_state = SDA_INIT;        send_receive = SDA_IDLE;        SET_SDA;        success = 0;        break;    }}void receiving_state(){        int i;    switch(command_state)    {      case SDA_INIT:	for (i = 0; i < 80; i++) (void) *waitptr; 	/* have to wait 18 us */	CheckSum = 0xff;	SET_RISING; /* falling edge trigger */	CLEAR_SDA;	command_state = SDA_ARBITRATE; /* wait for rising edge */	break;      case SDA_ARBITRATE:	SET_SDA; /* if sda is pulled up then the bus should be high */	SET_FALLING;	bitCount = 8;	command_state = SDA_COMMAND;	break;      case SDA_COMMAND:	if(falling)	{	    sda_cmd_msg >>= 1;	    if(SDA_HIGH) 		sda_cmd_msg |= 0x80;	    else		sda_cmd_msg &= 0x7f;	    	    SET_RISING;	    bitCount--;	}	else	{	    SET_FALLING;	    if(!bitCount) 	    {		CheckSum ^=  sda_cmd_msg;		bitCount = 8;		byteCount = sda_cmd_msg & 0x0f;		if(byteCount) {                    byteCount--;		    command_state = SDA_PARA;		    buffer = 0; /* initialize to zero */		} else {		    command_state = SDA_CHECKSUM;		}	    } 	}	break;      case SDA_PARA:	if(falling)	{	    buffer >>= 1;	    if(SDA_HIGH) 		buffer |= 0x80;	    else		buffer &= 0x7f;	    SET_RISING;	    bitCount--;			    	}	else	{	    SET_FALLING;	    if (!bitCount)	    {		CheckSum ^= buffer;		if(!byteCount) 		{		    bitCount = 8;                    sda_para[byteCount] = buffer;		    command_state = SDA_CHECKSUM;		    buffer = CheckSum;		}		else		{		    bitCount = 8;                    sda_para[byteCount--] = buffer;		}	    }	    	}	break;      case SDA_CHECKSUM:	if(falling)	{	    buffer >>= 1;	    if(SDA_HIGH) 		buffer |= 0x80;	    else		buffer &= 0x7F;	    SET_RISING;	    bitCount --;	}	else	{	    SET_FALLING;	    if(!bitCount) 	    {		command_state = SDA_ACK;		if (CheckSum != buffer) {		    success = 0;                    DBG_failcount ++;		} else {		    success = 1;		}	    }	}	break;      case SDA_ACK:	if(falling) 	{	    SET_RISING;	    if(success) {		CLEAR_SDA;	    } else {		SET_SDA;	    }	}	else	{	    SET_FALLING;	    command_state = SDA_RESET;	}	break;      case SDA_RESET:	if(falling)	{	    SET_RISING;	}	else	{	    SET_FALLING;	    SET_SDA;	    if(success) SCLK_data_ready = 1;	    command_state = SDA_INIT;	    send_receive = SDA_IDLE;	    	}	break;    }    }void sending_state(){        switch(command_state)    {      case SDA_INIT:	CheckSum = 0xff;	SET_RISING; /* falling edge trigger */	SET_SDA;	command_state = SDA_ARBITRATE; /* wait for rising edge */	break;      case SDA_ARBITRATE:	SET_FALLING;	bitCount = 8;        buffer = sda_cmd_msg;        CheckSum ^= sda_cmd_msg;	command_state = SDA_COMMAND;	break;      case SDA_COMMAND:	if(falling)	{	    if(buffer & 0x01)	    {SET_SDA;}	    else	    {CLEAR_SDA;}	    buffer >>= 1;	    SET_RISING;	    bitCount--;	}	else	{	    SET_FALLING;	    if(!bitCount) 	    {		bitCount = 8;                byteCount = (sda_cmd_msg & 0x07);		if(byteCount)		{		    byteCount--;		    command_state = SDA_PARA;		    buffer = sda_para[byteCount];		    CheckSum ^= buffer;		}		else		{		    command_state = SDA_CHECKSUM;		    buffer = CheckSum;		}	    }	}	break;      case SDA_PARA:	if(falling)	{	    if(buffer & 0x01)	    {SET_SDA;}	    else	    {CLEAR_SDA;}	    buffer >>= 1;	    SET_RISING;	    bitCount--;	    	}	else	{	    SET_FALLING;	    if (!bitCount)	    {		if(!byteCount) 		{		    bitCount = 8;		    command_state = SDA_CHECKSUM;		    buffer = CheckSum;		}		else		{		    byteCount--;		    buffer = sda_para[byteCount];		    CheckSum ^= buffer;		    bitCount = 8;		}	    }	}	break;      case SDA_CHECKSUM:	if(falling)	{	    if(buffer & 0x01)	    {SET_SDA;}	    else	    {CLEAR_SDA;}	    buffer >>= 1;	    SET_RISING;	    bitCount--;	}	else	{	    SET_FALLING;	    if(!bitCount) 	    {		command_state = SDA_ACK;	    }	}	break;      case SDA_ACK:	if(falling) 	{	    TRISTATE_SDA;	    SET_RISING;	}	else	{	    SET_FALLING;	    command_state = SDA_RESET;	}	break;      case SDA_RESET:	if(falling)	{	    SET_RISING;            if(SDA_HIGH) {success = 0;DBG_failcount ++;}	    else	success = 1;	}	else	{	    SET_FALLING;	    SET_SDA;            /* reset bus anyway */	    if(success)	    {		command_state = SDA_INIT;		send_receive = SDA_IDLE;	    }	    else	    {		command_state = SDA_INIT;		send_receive = SDA_IDLE; /* retry if fail */	    }	    	}	break;    }}int trans_dsa(unsigned char cmd){    int i, num_para, time_to_go;    /* wait until SDA_IDLE (0) */    time_to_go = glbTimer + TWO_SECOND;    do {        if (time_to_go < glbTimer) return (0); /* Too long..get out */        VCX_service();    } while (send_receive);    /* Initiate sending */        sda_cmd_msg = cmd;    num_para = (int)(cmd & 0x7);    for (i = 0; i < num_para; i++)     {        sda_para[i] = dsa_para[i];    }        SET_FALLING;    SCLK_data_ready = 0;    CLEAR_SDA;    command_state = SDA_INIT;    send_receive = SDA_SENDING;    time_to_go = glbTimer + TWO_SECOND;    do {        if (glbTimer > time_to_go) return (0); /* Too long..get out */        VCX_service();    } while (send_receive);        return (1);}/******************************    Cust8 Disk Changer Carousel State Machine  N: 		1	2	3	4	5	6	7 Drawer		out  	transit	in	in	in	transig	out Pickup		down	down	down	transit up	up	up State(N)	1	2	3	4	5	6	7 PI1		0	0	0	1	1	1	0 PI2		0	1	0	0	1	0	0 Carousel turn 	OK	OK	OK	NO	NO	NO	Toggle Motor Rotaion 	CW	CW	CQ	CCW	CCW	CCW	CW								then CCW Init(N)	3	3 	3	3	3	3	5 Playing	NO	NO	NO	NO	Yes	Yes	Yes Resting(N)	5	5	5	5	5	5	5 ****************************** *//* set Timer_1 to be a 1 msec counter.  67500/67.5Mhz = 1msec *//* int timer1_period = -67500;*//* 6 milisecond would be -67500 * 6 = 405000 */void RISC_timer1_interrupt_service(void){                                          mvd[riface_timer1] = TIMER1_PERIOD;       mvd[riface_clear_timer1] = 0;  /* clearing interrupt flag */    SCLK_timer();#ifdef CUST8_5DISK                                                 six_msec_counter++;                             motor_timer++;                 if ((changer_control_register & 0x8000) != 0) {	rotate_carousel_and_find_position();            }    rotate_drawer_motor();    IR_timer();#endif}void RISC_start_timer1(void){        mvd[riface_clear_timer1] = 0; 	/* clear timer irq */    mvd[riface_timer1] = TIMER1_PERIOD;    enable_int(tim1); }#ifdef CUST8_5DISK                                             /* void rotate_carousel_and_find_position(void) * Rotates Carousel and updates the current position

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看日本不卡| 国产午夜精品理论片a级大结局| 在线播放中文字幕一区| 久久久久久久久久久电影| 亚洲一区二区三区自拍| 国产白丝精品91爽爽久久| 欧美午夜精品久久久久久超碰| 欧美在线观看视频一区二区 | 国产精品不卡视频| 国产精品久久久久久久浪潮网站 | 精品久久久久久久久久久久久久久久久 | 午夜精品一区在线观看| 九色综合狠狠综合久久| 91香蕉视频在线| 欧美日韩一区精品| 久久亚洲私人国产精品va媚药| ww亚洲ww在线观看国产| 一区二区欧美视频| 国产精品影视网| 欧美一区二区在线不卡| 久久综合精品国产一区二区三区| 一区二区三区资源| 懂色av一区二区夜夜嗨| 欧美一区二区三区婷婷月色| 中文字幕日韩一区| 韩国三级中文字幕hd久久精品| 在线这里只有精品| 国产精品久久三| 国产在线不卡一区| jvid福利写真一区二区三区| 日本一区二区三区dvd视频在线| 五月婷婷激情综合| 欧美揉bbbbb揉bbbbb| 综合久久国产九一剧情麻豆| av一区二区三区在线| 日韩你懂的在线观看| 日韩精品91亚洲二区在线观看| 在线精品视频免费观看| 在线观看国产精品网站| 有码一区二区三区| 成人听书哪个软件好| 亚洲精品一区二区精华| 久热成人在线视频| 日韩一区二区在线观看视频播放| 国产精品久久久久久久裸模| 国产成人8x视频一区二区| 精品久久人人做人人爽| 久久国产日韩欧美精品| 日韩精品自拍偷拍| 国产麻豆精品95视频| 精品成人一区二区三区四区| 麻豆精品视频在线观看免费| 亚洲精品在线免费观看视频| 国产一区二区三区黄视频| 国产精品青草综合久久久久99| 国产乱子伦视频一区二区三区 | 一本大道久久a久久精二百| 国产精品成人网| 在线观看日产精品| 亚洲mv在线观看| 91在线看国产| 午夜精品一区在线观看| 日韩久久久久久| 顶级嫩模精品视频在线看| 国产精品麻豆欧美日韩ww| 在线观看免费视频综合| 日产精品久久久久久久性色| 久久精品视频一区| 色综合久久66| 国产一区二区三区av电影| 久久免费国产精品| 色婷婷亚洲婷婷| 日韩黄色免费电影| 国产夜色精品一区二区av| 成人91在线观看| 国产欧美一区二区三区鸳鸯浴| 欧美午夜视频网站| 国产一区在线观看视频| 一区二区三区在线观看视频| 欧美日韩色一区| 国产精品69毛片高清亚洲| 综合电影一区二区三区| 欧美成人午夜电影| 波多野结衣中文字幕一区| 视频一区二区欧美| 国产香蕉久久精品综合网| 欧美日韩一区成人| 高清免费成人av| 91福利视频网站| 欧美一区二区性放荡片| 欧美电视剧在线观看完整版| 国产一区美女在线| 精品久久久久久久久久久院品网| 亚洲女厕所小便bbb| 经典三级视频一区| 9191精品国产综合久久久久久| 性做久久久久久免费观看| 日韩欧美中文字幕一区| 麻豆国产精品一区二区三区| 欧美午夜影院一区| 最新欧美精品一区二区三区| 成人黄色片在线观看| 精品剧情在线观看| 色爱区综合激月婷婷| 国产精品一区2区| 麻豆精品一区二区| 午夜精品一区二区三区免费视频 | 欧美视频在线观看一区| 国产一区视频网站| 亚洲色图视频网| 国产精品久久久久久久久晋中| 日韩欧美一级片| 欧美色网站导航| 91在线视频播放地址| 国产精品一区一区| 国内精品伊人久久久久av一坑 | 26uuu久久综合| 欧美视频在线观看一区| 一本大道久久a久久精二百| 成人免费黄色大片| 国产suv一区二区三区88区| 性欧美大战久久久久久久久| 亚洲欧美偷拍另类a∨色屁股| 国产精品青草综合久久久久99| 精品国产一区二区三区不卡| 一本色道久久综合狠狠躁的推荐| 国产呦精品一区二区三区网站| 久久99国产精品久久| 日韩电影在线一区二区| 午夜久久久影院| 日韩极品在线观看| 日韩av中文在线观看| 麻豆freexxxx性91精品| 免费成人在线影院| 极品少妇一区二区三区精品视频| 美国精品在线观看| 精品系列免费在线观看| 精品一区二区三区免费毛片爱 | 国产在线精品国自产拍免费| 久久99热狠狠色一区二区| 男女性色大片免费观看一区二区| 日本网站在线观看一区二区三区| 亚洲123区在线观看| 日一区二区三区| 久久精品国产免费| 国内精品久久久久影院色| 国产精品亚洲一区二区三区在线 | 色狠狠av一区二区三区| 中文字幕av不卡| 久久久91精品国产一区二区三区| 亚洲欧美日韩中文播放| 日韩精品一区二区三区中文不卡| 欧美日韩国产在线播放网站| 国产成人av一区二区三区在线观看| 97精品久久久久中文字幕| 韩国v欧美v日本v亚洲v| 经典三级视频一区| 国产精品综合网| 一区二区三区国产精华| 精品制服美女丁香| 欧美日韩国产小视频| 欧美久久久久久久久| 欧美tickling挠脚心丨vk| 亚洲男同性恋视频| 欧美一区二区三区影视| 久久国产精品99久久人人澡| 91精品国产丝袜白色高跟鞋| 久久精品在这里| 亚洲色图都市小说| 一区二区久久久久久| 国产乱对白刺激视频不卡| 青青青爽久久午夜综合久久午夜| 国产一区二三区| 国产a久久麻豆| 91黄色激情网站| 久久一日本道色综合| 成人av电影在线观看| 欧美大片免费久久精品三p| 国产欧美精品一区| 欧美亚洲愉拍一区二区| 亚洲综合久久久| 欧美精品一区二区三区蜜臀| 丁香五精品蜜臀久久久久99网站| 欧美激情在线看| 在线观看欧美日本| 午夜不卡在线视频| 日韩午夜激情视频| 粉嫩欧美一区二区三区高清影视 | 欧美综合亚洲图片综合区| 欧美国产亚洲另类动漫| 国产精品原创巨作av| 亚洲色图欧美偷拍| 在线免费观看不卡av| 亚洲欧洲日韩av| 欧美精品久久一区| 日韩成人免费电影| 精品国产免费人成电影在线观看四季 | 国产久卡久卡久卡久卡视频精品| youjizz久久| 一区二区免费在线播放|