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

📄 7289.h

📁 键盘控制器zlg7289在软核处理器nios上的底层驱动程序
💻 H
字号:
#include "excalibur.h"

#define uchar unsigned char

np_pio *clk7289=na_clk7289;
np_pio *cs7289=na_cs7289;
np_pio *dio7289=na_dio7289;
np_pio *key7289=na_key7289;

uchar receivedata;

void shortdelay()
{
	int i;
	for(i=0;i<40;i++);
}

void longdelay()
{
	int i;
	for(i=0;i<250;i++);
}

void initial7289()
{
	cs7289->np_piodata=1;
	}
void send(unsigned int senddata,uchar j)
{
	uchar i;
	uchar sendlast;
	dio7289->np_piodirection=1;
	cs7289->np_piodata=0;
	longdelay();
	if(j==8)
	for(i=0;i<8;i++)
	{
		clk7289->np_piodata=0;
		shortdelay();
		if(senddata&0x80)	
		dio7289->np_piodata=1;	
		else
		dio7289->np_piodata=0;
		senddata=senddata<<1;		
	    clk7289->np_piodata=1;
		shortdelay();
	}
	if(j==16)
	for(i=0;i<16;i++)
	{
		clk7289->np_piodata=0;
		shortdelay();
		if(senddata&0x8000)	
		dio7289->np_piodata=1;	
		else
		dio7289->np_piodata=0;	
		senddata=senddata<<1;
		clk7289->np_piodata=1;
		shortdelay();
	}
	clk7289->np_piodata=0;
     cs7289->np_piodata=1;
}

uchar receive()
{
	uchar i,j,rebuf=0;
	dio7289->np_piodirection=0;
	cs7289->np_piodata=0;
	longdelay();
	for(i=0;i<8;i++)
	{
		rebuf<<=1;
		clk7289->np_piodata=0;
		shortdelay();
       rebuf|=dio7289->np_piodata;
		clk7289->np_piodata=1;
		shortdelay();
	}
	cs7289->np_piodata=1;
	clk7289->np_piodata=0;
	return rebuf;
	}
	
void button()
{	
	while(1)
	{
	cs7289->np_piodata=1;
while(key7289->np_piodata);
        send(0x15,8);
         receivedata=receive();
         longdelay();
      switch(receivedata)
	{
		case	0x00: send(0xa1,8); send(0xc800,16); break;
		case	0x01: send(0xa1,8);	send(0xc801,16); break;
		case	0x02: send(0xa1,8); send(0xc802,16); break;
		case	0x03: send(0xa1,8); send(0xc803,16); break;
		case	0x04: send(0xa1,8); send(0xc804,16); break;
		case	0x05: send(0xa1,8); send(0xc805,16); break;
		case	0x06: send(0xa1,8); send(0xc806,16); break;
		case	0x07: send(0xa1,8); send(0xc807,16); break;
		case	0x08: send(0xa1,8); send(0xc808,16); break;
		case	0x09: send(0xa1,8); send(0xc809,16); break;
		case	0x0a: send(0xa1,8); send(0xc80a,16); break;
		case	0x0b: send(0xa1,8); send(0xc80b,16); break;
		case	0x0c: send(0xa1,8); send(0xc80c,16); break;
		case	0x0d: send(0xa1,8); send(0xc80d,16); break;
		case	0x0e: send(0xa1,8); send(0xc80e,16); break;
		case	0x0f: send(0xa1,8); send(0xc80f,16); break;
		case	0x10: send(0x8800,16);  break;
		case	0x11: send(0x88ff,16);  break;
		case	0x12: send(0x9801,16);     break;
		case	0x13: send(0x98ff,16);  break;
		case	0x14: send(0xbf,8);   break;
		case	0x15:       break;
		case	0x16:     send(0xa4,8);  break;
		case	0x17:  break;
		default: break;
	}	
	while(!key7289->np_piodata);
	}
}

⌨️ 快捷键说明

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