⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htd30v02.c

📁 利用单片机实现的USB1.1通信。通过液晶屏的显示驱动代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		{
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		nop5();
		}
	}
        void	delay_2ms(void)
	{
	uchar	i;
	for(i=0;i<10;i++)
		nop5();
	}
void	delay_1ms(void)
	{
	uchar	i;
	for(i=0;i<35;i++)
		nop5();
	}

void show_start(void)
	{
//	EEPCON=0;
//	delay_1ms();
//c	SEL_OTHERS=1;
//c    mirror_377&=0xff ;              //c 使卡在插入后上电
//c	sel_hc377=mirror_377 ;
	nop5();
	CARD_SCL=0;
	nop5();
	S_SDA=1;
	nop5();
	CARD_SCL=1;
	nop5();
	S_SDA=0;
	nop5();
	CARD_SCL=0;
	nop5();
	}

void show_stop(void)
	{
	CARD_SCL=0;
	nop5();
	S_SDA=0;
	nop5();
	CARD_SCL=1;
	nop5();
	S_SDA=1;
	nop5();
//	CARD_SCL=0;
//	nop5();
//	CARD_SDA=0;
	}

void show_send(uchar eedata)
	{
	uchar	i;
	for(i=0;i<8;i++)
	    	{
	    	CARD_SCL=0;
		nop5();
	    	eedata<<=1;
//	    	if(eedata&0x80)
//	    		CARD_SDA=1;
//	    	else
//	    		CARD_SDA=0;
		S_SDA=CY;
		nop5();
	    	CARD_SCL=1;
		nop5();
	   	}
	CARD_SCL=0;
	nop5();
	CARD_SCL=1;
	nop5();
	CARD_SCL=0;
	}
uchar show_take(void)
	{
	uchar	i;
	uchar	worth=0;
	nop5();
	for(i=0;i<8;i++)
	    	{
	    	CARD_SCL=0;
		nop5();
	 	CARD_SCL=1;
		nop5();
	    	worth<<=1;
	    	if (S_SDA)
	        	worth++;
	   	}
	nop5();
	CARD_SCL=0;
	nop5();
	S_SDA=1;
	nop5();
	CARD_SCL=1;
	nop5();
	S_SDA=0;
	return(worth);
	}



//same for ic card operate
void card_start(void)
	{
//	EEPCON=0;
//	delay_1ms();
//c	SEL_OTHERS=1;
//c    mirror_377&=0xff ;              //c 使卡在插入后上电
//c	sel_hc377=mirror_377 ;
	nop5();
	CARD_SCL=0;
	nop5();
	CARD_SDA=1;
	nop5();
	CARD_SCL=1;
	nop5();
	CARD_SDA=0;
	nop5();
	CARD_SCL=0;
	nop5();
	}

void card_stop(void)
	{
	CARD_SCL=0;
	nop5();
	CARD_SDA=0;
	nop5();
	CARD_SCL=1;
	nop5();
	CARD_SDA=1;
	nop5();
//	CARD_SCL=0;
//	nop5();
//	CARD_SDA=0;
	}

void card_send(uchar eedata)
	{
	uchar	i;
	for(i=0;i<8;i++)
	    	{
	    	CARD_SCL=0;
		nop5();
	    	eedata<<=1;
//	    	if(eedata&0x80)
//	    		CARD_SDA=1;
//	    	else
//	    		CARD_SDA=0;
		CARD_SDA=CY;
		nop5();
	    	CARD_SCL=1;
		nop5();
	   	}
	CARD_SCL=0;
	nop5();
	CARD_SCL=1;
	nop5();
	CARD_SCL=0;
	}
uchar card_take(void)
	{
	uchar	i;
	uchar	worth=0;
	nop5();
	for(i=0;i<8;i++)
	    	{
	    	CARD_SCL=0;
		nop5();
	 	CARD_SCL=1;
		nop5();
	    	worth<<=1;
	    	if (CARD_SDA)
	        	worth++;
	   	}
	nop5();
	CARD_SCL=0;
	nop5();
	CARD_SDA=1;
	nop5();
	CARD_SCL=1;
	nop5();
	CARD_SDA=0;
	return(worth);
	}
//read ic card
void	card_read(uchar	*store_add,uchar read_len)
	{
	uchar 	j;
        card_stop();
        _nop_();
        _nop_();
        EEPCON=0;
	delay_1ms();
    delay_1ms();
	card_start();
	card_send(0xa0);
	card_send(add_start.add_byte[0]);
	nop5();
	card_send(add_start.add_byte[1]);
	for(j=0;j<read_len;j++)
		{
                EEPCON=0;
          	delay_1ms();
		card_start();
		card_send(0xa1);
		*(store_add+j)=card_take();
		}
//	add_start.add_word+=read_len;
	card_stop();
	delay_10ms();
	EEPCON=1;
	}

//write ic card
void	card_write(uchar *load_add,uchar write_len)
	{
	uchar 	j;
        card_stop();
        _nop_();
        _nop_();
        EEPCON=0;
	delay_1ms();
    delay_1ms();
	card_start();
	card_send(0xa0);
	card_send(add_start.add_byte[0]);
	card_send(add_start.add_byte[1]);
	for(j=0;j<write_len;j++)
		card_send(*load_add++);
	card_stop();
	delay_10ms();
	EEPCON=1;
//	add_start.add_word+=write_len;
	}


//read show dep. ask
void	show_read(uchar *store_add,uchar read_len)
	{
	uchar 	j;
    show_stop();
     _nop_();
     _nop_();
	EEPCON=0;	//要求使用外部IIC总线,需要延时等待显示部分放弃总线
	delay_1ms();
	show_start();
	show_send(0xac);
	show_send(add_start.add_byte[1]);
//	nop5();
//	card_send(add_start.add_byte[1]);
	for(j=0;j<read_len;j++)
		{
		show_start();
		show_send(0xad);
		*(store_add+j)=show_take();
		}
	add_start.add_word+=read_len;
	show_stop();
//	EEPCON=1;
	}

//write show dep. ask
void	show_write(uchar *load_add,uchar write_len)
	{
	uchar 	j;
    show_stop();
        _nop_();
        _nop_();
	EEPCON=0;	//要求使用外部IIC总线,需要延时等待显示部分放弃总线
	delay_1ms();
	show_start();
	show_send(0xac);
//	card_send(add_start.add_byte[0]);
	show_send(add_start.add_byte[1]);
	for(j=0;j<write_len;j++)
		show_send(*load_add++);
	show_stop();
//	EEPCON=1;
	add_start.add_word+=write_len;
	}

//FM3164 RTC OPERATION
//void	fm_delay(void)
//	{
//	_nop_();
//	_nop_();
//	_nop_();
//	_nop_();
//	}
void fm_start(void)
	{
	FM3164_SCL=0;
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	FM3164_SDA=1;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	FM3164_SCL=1;
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	FM3164_SDA=0;
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	_nop_();
	FM3164_SCL=0;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	}

void fm_stop(void)
	{
	FM3164_SCL=0;
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	FM3164_SDA=0;
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	_nop_();
	FM3164_SCL=1;
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	_nop_();
	FM3164_SDA=1;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	FM3164_SCL=0;
	_nop_();
    _nop_();
    _nop_();
	_nop_();
	_nop_();
	FM3164_SDA=0;
	}

void fm_send(uchar eedata)
	{
	uchar	i;
	for(i=0;i<8;i++)
	    	{
	    	FM3164_SCL=0;
		_nop_();
		_nop_();
		_nop_();
        _nop_();
        _nop_();
	    	eedata<<=1;
		FM3164_SDA=CY;
		_nop_();
        _nop_();
		_nop_();
		_nop_();
        _nop_();
	    	FM3164_SCL=1;
		_nop_();
		_nop_();
		_nop_();
        _nop_();
        _nop_();
	   	}
	FM3164_SCL=0;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	FM3164_SCL=1;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
    _nop_();
	FM3164_SCL=0;
	}
uchar fm_take(void)
	{
	uchar	i;
	uchar	worth=0;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	for(i=0;i<8;i++)
	    	{
	    	FM3164_SCL=0;
		_nop_();
		_nop_();
        _nop_();
//		_nop_();
	 	FM3164_SCL=1;
		_nop_();
		_nop_();
        _nop_();
//		_nop_();
	    	worth<<=1;
	    	if (FM3164_SDA)
	        	worth++;
	   	}
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	FM3164_SCL=0;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	FM3164_SDA=1;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	FM3164_SCL=1;
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	FM3164_SDA=0;
	return(worth);
	}


//read fm_ram
void	fm_read(uchar *store_add,uchar read_len)
	{
	fm_start();
	fm_send(0xa0);
	fm_send(add_start.add_byte[0]);
	fm_send(add_start.add_byte[1]);
	_nop_();
	_nop_();
	_nop_();
    _nop_();
	while(read_len--)
		{
		fm_start();
		fm_send(0xa1);
		*(store_add++)=fm_take();
//		read_len--;
		}
	fm_stop();
	}
void	read_to_dbuf(uchar	step,uint	read_len)		//将FM24C64的数据载入到USB缓冲区,参数为地址分辨码
	{
	uint	i;
	fm_start();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -