亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩一区精品字幕| 免费观看日韩电影| 91精品视频网| 国产精品性做久久久久久| 亚洲精品少妇30p| 精品欧美久久久| 欧美性感一区二区三区| 精品一区二区三区免费观看| 亚洲一区二区三区爽爽爽爽爽| 精品裸体舞一区二区三区| 色综合天天综合给合国产| 精品一区免费av| 一区二区三区免费看视频| 久久婷婷国产综合国色天香| 欧美专区日韩专区| 国产成人av一区二区| 日韩成人午夜电影| 夜夜嗨av一区二区三区四季av | 麻豆国产欧美日韩综合精品二区 | 91久久人澡人人添人人爽欧美| 久久99精品久久久久| 一区二区欧美精品| 国产精品久久久久9999吃药| 精品国产青草久久久久福利| 欧美日韩成人在线| 色综合咪咪久久| 成人美女在线视频| 国产黑丝在线一区二区三区| 青青草一区二区三区| 亚洲激情校园春色| 亚洲欧美一区二区三区极速播放| 国产女同性恋一区二区| 26uuu另类欧美亚洲曰本| 欧美高清视频不卡网| 欧美日韩精品一区二区三区 | 亚洲视频香蕉人妖| 国产偷国产偷亚洲高清人白洁| 欧美一区二区三区视频免费 | 91激情五月电影| 精品成人私密视频| 日韩欧美国产成人一区二区| 久久99精品国产.久久久久久| 亚洲一级不卡视频| 亚洲美女电影在线| 亚洲欧洲综合另类在线| 亚洲精品免费一二三区| 国产精品成人免费| ●精品国产综合乱码久久久久 | 日本一区二区三区电影| 国产日韩高清在线| 国产精品不卡一区二区三区| 中文在线资源观看网站视频免费不卡| 亚洲国产精品成人久久综合一区| 欧美国产丝袜视频| 综合在线观看色| 亚洲免费观看在线观看| 亚洲综合另类小说| 肉肉av福利一精品导航| 日精品一区二区三区| 日本不卡一二三| 韩国一区二区三区| 成人免费视频播放| 色综合咪咪久久| 欧美亚洲一区二区在线观看| 欧美乱熟臀69xxxxxx| 日韩免费看网站| 久久嫩草精品久久久久| 中文字幕一区二区视频| 亚洲精品视频在线看| 日韩高清在线电影| 国产盗摄一区二区| 91麻豆国产福利在线观看| 欧美伦理影视网| 久久久久国产一区二区三区四区 | 亚洲成国产人片在线观看| 轻轻草成人在线| 国产精品18久久久| 91丨国产丨九色丨pron| 欧美日韩精品一区视频| 久久久蜜桃精品| 日韩一区在线看| 天天色 色综合| 国产精品一区专区| 在线日韩av片| 久久综合九色综合久久久精品综合| 国产精品水嫩水嫩| 亚洲第一搞黄网站| 风间由美一区二区av101| 欧美三级韩国三级日本一级| 久久网站热最新地址| 亚洲成a人片在线不卡一二三区 | 国产乱理伦片在线观看夜一区| 91丨九色porny丨蝌蚪| 精品国产乱码久久| 亚洲另类中文字| 国产一区二区剧情av在线| 91极品视觉盛宴| 国产午夜精品一区二区三区嫩草| 亚洲永久精品国产| 成人自拍视频在线观看| 欧美精品vⅰdeose4hd| 日韩理论片网站| 国产精品911| 91精品国产欧美一区二区| 亚洲日穴在线视频| 国产一区二区三区在线看麻豆| 欧美午夜精品一区二区三区| 国产午夜精品一区二区| 七七婷婷婷婷精品国产| 91精彩视频在线| 国产精品嫩草影院com| 黄色日韩网站视频| 欧美一区二区三区小说| 伊人开心综合网| av电影天堂一区二区在线| 久久天堂av综合合色蜜桃网| 男人的天堂亚洲一区| 欧美少妇xxx| 亚洲免费在线视频| 成人动漫中文字幕| 国产日韩欧美一区二区三区综合| 日本在线观看不卡视频| 在线免费观看视频一区| 成人欧美一区二区三区白人| 国产成人综合精品三级| 欧美电影精品一区二区| 午夜精品一区二区三区电影天堂| 色偷偷久久人人79超碰人人澡| 国产欧美日韩激情| 国产乱码精品一区二区三区忘忧草| 欧美一区二区三级| 日韩电影网1区2区| 制服视频三区第一页精品| 午夜亚洲国产au精品一区二区| 91激情在线视频| 亚洲影视在线观看| 欧美三区在线视频| 亚洲午夜电影在线| 欧美丰满少妇xxxbbb| 日欧美一区二区| 日韩一区二区三免费高清| 日本vs亚洲vs韩国一区三区| 日韩一区二区免费在线电影 | 亚洲电影第三页| 欧美日韩精品三区| 三级亚洲高清视频| 日韩午夜电影在线观看| 蜜臀91精品一区二区三区 | 亚洲欧美一区二区三区极速播放| 97精品国产露脸对白| 亚洲乱码国产乱码精品精可以看| 一本色道久久综合亚洲精品按摩| 亚洲色图视频网| 欧美视频三区在线播放| 蜜桃久久av一区| 久久久久久麻豆| av一二三不卡影片| 一区二区三区四区在线| 欧美日韩中文字幕精品| 欧美精品aⅴ在线视频| 三级久久三级久久久| 欧美不卡一二三| 国产成人久久精品77777最新版本| 国产偷国产偷亚洲高清人白洁| 91在线视频免费观看| 午夜免费欧美电影| 欧美mv日韩mv| 91在线一区二区| 在线视频中文字幕一区二区| 亚洲成年人影院| 久久在线观看免费| 色就色 综合激情| 亚洲主播在线观看| 日韩一区二区电影在线| 国产成a人亚洲| 亚洲国产视频网站| 久久午夜老司机| 91啦中文在线观看| 奇米精品一区二区三区四区| 欧美国产国产综合| 欧美日韩极品在线观看一区| 国内精品写真在线观看| 亚洲天堂精品在线观看| 日韩欧美一卡二卡| 99久久久久久| 毛片一区二区三区| 日韩码欧中文字| 精品国产乱子伦一区| 色狠狠av一区二区三区| 裸体歌舞表演一区二区| 亚洲欧洲国产日韩| 日韩精品专区在线| 91丝袜高跟美女视频| 韩国毛片一区二区三区| 亚洲第一综合色| 国产精品福利一区二区| 欧美一区二区免费| 色就色 综合激情| 成人一区二区三区视频在线观看| 午夜日韩在线电影|