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

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

?? can.c

?? LINUX的簡單應用
?? C
?? 第 1 頁 / 共 2 頁
字號:
				}

			}
		}
		for(i=0;i<2;i++)
		{
			if(NULL==can[i])
				continue;
			outportb(can[i]->can_base,CanIntrReg);
			CanIntrStus[i]=inportb(can[i]->can_base+1);	//讀中斷狀態寄存器
		}		
	}
	//printf("Int Req id %x\n",inport(0xff2c));
	outport(IntEoiReg,CANCanEoi);
}

void can_puts(unsigned char str[],int len,CAN_TYPE *pcan)
{
static unsigned int overtimer=0;
int i;
unsigned int putstimer;
int mask;
	if(NULL==pcan)
		return;
	if (len>BUFFSIZE)
		len=BUFFSIZE;
	pcan->out.read_index=0;
	pcan->out.write_index=0;
	for(i=0;i<len;i++)
	{
		pcan->out.buffer[i] = str[i];
	}
	pcan->out.write_index=8;
	mask=inport(IntMaskReg);
	mask|=~Int1Enable;	//關閉總線中斷IRQ5(CAN板CAN口)
	outport(IntMaskReg,mask);
	outportb(pcan->can_base,CanStusReg);
	putstimer=timer;
	while((inportb(pcan->can_base+1) & TBS_Bit) != TBS_Bit)//;//發送緩沖區空?
	{
		if(GetPass(putstimer,timer)>=10)
		{
			if(GetPass(overtimer,timer)>=500)
			{
				if(pcan==can[0])
					i=1;
				else
					i=2;
				can_reset(i);
				overtimer=timer;
			}
			mask=inport(IntMaskReg);
			mask&=Int1Enable;	//開放總線中斷IRQ5(CAN板CAN口)
			outport(IntMaskReg,mask);
			return;
		}
		outportb(pcan->can_base,CanStusReg);
	}
	outportb(pcan->can_base,16);
	outportb(pcan->can_base+1,0x08);	//幀信息,標準格式,數據幀,本幀數據長度8字節
	outportb(pcan->can_base,17);
	outportb(pcan->can_base+1,pcan->out.pri[0]);	//標識符1,發向0x68號站點(優先級為0x68的站點)
	outportb(pcan->can_base,18);
	outportb(pcan->can_base+1,(pcan->out.zhenhao[0]<<5)&0xe0);	//標識符2,高3位為幀號
	for(i=0;i<8;i++)
	{
		outportb(pcan->can_base,19+i);	//發送緩沖區填數
		outportb(pcan->can_base+1,pcan->out.buffer[i]);
	}
	//if(pcan->out.zhenhao[0]==0 && pcan->out.pri[0]==0x63 && (pcan->out.buffer[1]!=1 || pcan->out.buffer[2]!=12))
	//{
	//	//port_puts(pcan->out.buffer,16,com2);
	//	printf("error!%x,%x,%x,%x,%x,%x,%x,%x",pcan->out.buffer[0],pcan->out.buffer[1],pcan->out.buffer[2],
	//		pcan->out.buffer[3],pcan->out.buffer[4],pcan->out.buffer[5],pcan->out.buffer[6],pcan->out.buffer[7]);
	//}
	outportb(pcan->can_base,CanStusReg);//,0x02,看是否正在發送狀態
	putstimer=timer;
	while((inportb(pcan->can_base+1) & TS_Bit) != 0)//;//&0x20 !=0x00
	{
		if(GetPass(putstimer,timer)>=10)
		{
			mask=inport(IntMaskReg);
			mask&=Int1Enable;	//開放總線中斷IRQ5(CAN板CAN口)
			outport(IntMaskReg,mask);
			return;
		}
		outportb(pcan->can_base,CanStusReg);
	}
	outportb(pcan->can_base,CanCmdReg);//,0x01
	outportb(pcan->can_base+1,TR_Bit);//,0x01,請求發送
	outportb(pcan->can_base,CanIntrEnbReg);
	outportb(pcan->can_base+1,RIE_Bit);	//打開接收與發送中斷
	pcan->out.read_index=0;
	pcan->out.write_index=0;
	//for(i=0;i<8;i++)
	//{
	//	outportb(pcan->can_base,19+i);	//du發送緩沖區
	//	if(((unsigned char)inportb(pcan->can_base+1))!=pcan->out.buffer[i])
	//		printf("error");
	//}
	mask=inport(IntMaskReg);
	mask&=Int1Enable;	//開放總線中斷IRQ5(CAN板CAN口)
	outport(IntMaskReg,mask);
	DebugData(5,1,len,str);
}

int can_setframehead(unsigned char *pzhh,unsigned char *ppri,int len,CAN_TYPE *pcan)
{
	int i,j;
	if(NULL==pcan)
		return(0);
	j=pcan->out.write_index/8;
	i=10-j;
	//if(len>i)
	//	len=i;
	j=0;
	for(i=0;i<len;i++)
	{
		pcan->out.zhenhao[j]=pzhh[i];
		pcan->out.pri[j]=ppri[i];
		j++;
	}
	return(len);
}

int can_gets(unsigned char str[],int len,CAN_TYPE *pcan)
{
int i;
	if(NULL==pcan)
		return(0);
	i=can_getlen(pcan);
	if(len>i)
		len=i;
	str[0]=0;
	if(pcan==NULL || len==0)
		return(0);
	if(pcan->in.read_index== pcan->in.write_index)
		return(0);
	for(i=0;i<len;i++)
	{
		   if(pcan->in.read_index== pcan->in.write_index)
			   break;
	       str[i]=pcan->in.buffer[pcan->in.read_index++];
		   if(pcan->in.read_index>=BUFFSIZE)
			   pcan->in.read_index=0;
	}
	return(i);
}

void can_clear(CAN_TYPE *pcan)
{
	if(NULL==pcan)
		return;
	pcan->in.read_index=0;
	pcan->in.write_index=0;
}

int can_getlen(CAN_TYPE *pcan)
{
int len;
	if(NULL==pcan)
		return(0);
	if(pcan->in.write_index>=pcan->in.read_index)
		len=pcan->in.write_index-pcan->in.read_index;
	else
		len=BUFFSIZE-pcan->in.read_index+pcan->in.write_index;
	return(len);
}

int can_reset(int canid)//CAN口初始化
{
CAN_TYPE *pcan;
int mask;
unsigned int reset_timer=0;
unsigned char temp;

	if(canid<1 || canid>3)
		return(0);
	switch(canid)
	{
		case 0x01:
			pcan=can[0];
			pcan->can_base=Can1PortBase;
			break;
		case 0x02:
			pcan=can[1];
			pcan->can_base=Can2PortBase;
			break;
		//case 0x03:
		//	pcan=can[2];
		//	pcan->can_base=Can3PortBase;
		//	break;
		default:	return(0);
	}

	pcan->in.write_index = pcan->in.read_index = 0;
	pcan->out.write_index = pcan->out.read_index = 0;

	outportb(pcan->can_base,CanModeCtrlReg);//0x00,模式寄存器
	reset_timer=timer;
	while((inportb(pcan->can_base+1) & RM_Bit) == 0)//&0x01 ==0x00
	{
		if(GetPass(reset_timer,timer)>10)
		{
			break;//return(0);
		}
		outportb(pcan->can_base+1,inportb(pcan->can_base+1) | RM_Bit);//|0x01進入復位模式
	}
	outportb(pcan->can_base,CanClkDivReg);//,0x1f
	outportb(pcan->can_base+1,CANMode_Bit|ClkOff_Bit | CBP_Bit);//CLKOUT off,CBP=1,PeliCAN模式

	outportb(pcan->can_base,CanIntrEnbReg);//0x04
	outportb(pcan->can_base+1,0x00);		//中斷禁能

	outportb(pcan->can_base,CanAcceptCode0);//0x10,
	outportb(pcan->can_base+1,0x64);
	outportb(pcan->can_base,CanAcceptCode1);//0x11
	outportb(pcan->can_base+1,0xa0);
	outportb(pcan->can_base,CanAcceptCode2);//0x12
	outportb(pcan->can_base+1,0x20);
	outportb(pcan->can_base,CanAcceptCode3);//0x13
	outportb(pcan->can_base+1,0xa0);

	outportb(pcan->can_base,CanAcceptMask0);//0x14
	outportb(pcan->can_base+1,0xff);
	outportb(pcan->can_base,CanAcceptMask1);//0x15
	outportb(pcan->can_base+1,0xff);
	outportb(pcan->can_base,CanAcceptMask2);//0x16
	outportb(pcan->can_base+1,0xff);
	outportb(pcan->can_base,CanAcceptMask3);//0x17
	outportb(pcan->can_base+1,0xff);

	outportb(pcan->can_base,CanBusTime0Reg);//,0x06
	outportb(pcan->can_base+1,SJW_KB_16 |Presc_KB_16);//,0xc0|0x00

	outportb(pcan->can_base,CanBusTime1Reg);//,0x07
	outportb(pcan->can_base+1,TSEG2_KB_16 | TSEG1_KB_16);//,0x30,0x0a,以上設定波特率等

	outportb(pcan->can_base,CanOutCtrlReg);//,0x08
	outportb(pcan->can_base+1,Tx1Float | Tx0PshPull | NormalMode);//,0x00|0x18|0x02

	outportb(pcan->can_base,CanModeCtrlReg);//,0x00
	reset_timer=timer;
	do{
		if(GetPass(reset_timer,timer)>10)
		{
			break;//return(0);
		}
		outportb(pcan->can_base+1,0);//AFM_Bit);//單濾波,關閉自測試、僅聽模式,清除休眠,進入操作模式
	}while((inportb(pcan->can_base+1) & RM_Bit) != 0);//&0x01 !=0x00

	outportb(pcan->can_base,CanIntrEnbReg);
	outportb(pcan->can_base+1,RIE_Bit);	//打開接收中斷

	disable();
	mask=inport(IntMaskReg);
	mask&=Int1Enable;	//開放總線中斷IRQ5(CAN板CAN口)
	outport(IntMaskReg,mask);
	outport(Int1CtrlReg,Int1PriInit);		//設置中斷優先級
	setvect(CANCanIntr,Can_int);
	enable();
	return(1);
}

CAN_TYPE* init_can(int canid)
{
CAN_TYPE *pcan;
	if ((pcan = malloc( sizeof( CAN_TYPE ))) == NULL)
		return( NULL );
	switch(canid)
	{
	case 1:
		can[0]=pcan;
		break;
	case 2:
		can[1]=pcan;
		break;
	//case 3:
	//	can[2]=pcan;
	//	break;
	default:
		return(NULL);
	}
	if(can_reset(canid))
		return(pcan);
	else
	{
		free(pcan);
		return(NULL);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜激情综合网| 欧美日韩国产乱码电影| 制服丝袜激情欧洲亚洲| 欧美视频中文字幕| 亚洲三级在线观看| 欧美视频在线观看一区| 香蕉成人啪国产精品视频综合网| 欧美日韩在线观看一区二区| 亚洲成av人片在www色猫咪| 欧美午夜寂寞影院| 日韩国产精品久久久| 日韩美女一区二区三区| 狠狠色丁香九九婷婷综合五月| 日韩精品影音先锋| 国内精品国产成人| 中文文精品字幕一区二区| 色婷婷综合视频在线观看| 日韩电影在线观看电影| 久久久91精品国产一区二区三区| 不卡的av中国片| 亚洲国产精品一区二区久久| 日韩一级高清毛片| 东方欧美亚洲色图在线| 亚洲在线中文字幕| 久久综合给合久久狠狠狠97色69| 成人国产精品免费网站| 天天综合天天做天天综合| 精品国产一区二区三区久久久蜜月 | 国产精品成人一区二区三区夜夜夜| 国产成人免费视频| 17c精品麻豆一区二区免费| 久久蜜桃一区二区| 国产麻豆成人传媒免费观看| 亚洲天堂免费在线观看视频| 制服丝袜激情欧洲亚洲| 成人中文字幕合集| 视频一区二区国产| 国产精品免费看片| 欧美日韩aaaaaa| 国产综合色视频| 亚洲色图色小说| 精品国精品自拍自在线| 在线一区二区三区四区| 99久久精品国产毛片| 精品99999| 色综合天天综合色综合av| 日韩电影一二三区| 成人黄动漫网站免费app| 欧美激情一区二区三区全黄| 免费在线成人网| 亚洲精品国产一区二区精华液| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品一二三区在线| 午夜激情久久久| 中文字幕在线不卡国产视频| 制服视频三区第一页精品| 欧美中文字幕一区二区三区| 国产成人亚洲综合a∨婷婷| 日本中文字幕一区二区视频| 亚洲欧美一区二区三区国产精品 | 在线观看区一区二| 国产一区二区不卡| 青青草原综合久久大伊人精品优势| 夜夜嗨av一区二区三区| 国产精品久久久久影院| 国产欧美一区二区精品仙草咪| 欧美一区二区三区小说| 欧美精选午夜久久久乱码6080| 欧洲视频一区二区| 丁香六月综合激情| 成人永久aaa| 成人一级视频在线观看| 国产精品一二三在| 成人黄色电影在线| 大桥未久av一区二区三区中文| 国产一区二区成人久久免费影院| 捆绑调教一区二区三区| 男女男精品视频网| 日本视频中文字幕一区二区三区| 日韩精品久久久久久| 日韩中文字幕一区二区三区| 日韩电影免费在线看| 免费成人在线网站| 韩日欧美一区二区三区| 国产在线乱码一区二区三区| 国产一区欧美二区| 高潮精品一区videoshd| 国产电影精品久久禁18| 国产超碰在线一区| 粉嫩av亚洲一区二区图片| 国产精品一区在线观看乱码| 国产不卡在线播放| 97国产一区二区| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩aaaaa| 日韩亚洲欧美高清| 狠狠色丁香久久婷婷综合_中| 国产精一区二区三区| 成人一区二区三区在线观看| 色偷偷久久一区二区三区| 91色视频在线| 91蜜桃免费观看视频| 色婷婷综合久久| 91精品国产色综合久久不卡蜜臀| 2024国产精品| 亚洲欧美激情小说另类| 日韩欧美三级在线| 国产清纯白嫩初高生在线观看91| 国产精品每日更新| 香蕉av福利精品导航| 国产乱码一区二区三区| 91视频免费观看| 欧美一区二区视频网站| 国产欧美精品一区| 在线国产亚洲欧美| www成人在线观看| 亚洲免费观看高清在线观看| 奇米精品一区二区三区四区 | 欧美国产精品劲爆| 91在线播放网址| av网站免费线看精品| 欧美亚洲国产一区二区三区| 欧美xxxx老人做受| 亚洲三级免费观看| 97国产精品videossex| 欧美视频一区二区三区四区 | 欧美日韩国产综合视频在线观看 | 成人国产精品免费| 4438成人网| 亚洲三级视频在线观看| 日本午夜一区二区| 91在线无精精品入口| 欧美精品一区二区三| 亚洲美女在线国产| 国精品**一区二区三区在线蜜桃| 欧美综合欧美视频| 国产伦精一区二区三区| 欧美性猛交xxxx乱大交退制版 | 国产欧美日韩视频在线观看| 午夜电影网一区| 色婷婷国产精品| 日本一区二区视频在线| 日本美女视频一区二区| 99精品热视频| 精品毛片乱码1区2区3区| 亚洲.国产.中文慕字在线| 91视频91自| 中文字幕一区二区三区精华液| 激情五月婷婷综合| 欧美一区二区日韩| 午夜精品福利一区二区蜜股av| 色婷婷激情久久| 亚洲欧美另类综合偷拍| av一本久道久久综合久久鬼色| 久久久另类综合| 国产一区二区精品在线观看| 日韩精品最新网址| 蜜臀av亚洲一区中文字幕| 欧美日韩精品一区二区| 夜夜嗨av一区二区三区网页| 日本黄色一区二区| 亚洲一区在线看| 色www精品视频在线观看| 亚洲精品中文在线| 色婷婷国产精品久久包臀 | 一区二区三区毛片| 91在线观看美女| 亚洲啪啪综合av一区二区三区| proumb性欧美在线观看| ...xxx性欧美| 色94色欧美sute亚洲线路二| 亚洲精品国产一区二区三区四区在线| 成人激情免费视频| 亚洲欧洲日本在线| 色欧美日韩亚洲| 亚洲成人在线观看视频| 欧美日韩国产高清一区| 日韩精品1区2区3区| 在线成人小视频| 久久 天天综合| 欧美国产一区视频在线观看| caoporm超碰国产精品| 亚洲老司机在线| 欧美久久一二三四区| 裸体在线国模精品偷拍| 国产亚洲欧美一区在线观看| 成人黄色小视频在线观看| 亚洲精品成人精品456| 欧美精品乱码久久久久久| 久久精品国产成人一区二区三区 | 男女性色大片免费观看一区二区 | 国产三级三级三级精品8ⅰ区| 国产成人精品综合在线观看| 亚洲视频一二三区| 在线成人午夜影院| 国产在线视频精品一区| 亚洲天堂av老司机| 在线播放/欧美激情| 高清免费成人av| 亚洲午夜激情av|