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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? can.c

?? LINUX的簡(jiǎn)單應(yīng)用
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h>
#include "can.h"
//#include "rs232.h"
//extern PORT *com2;

#ifdef __cplusplus
    #define __CPPARGS ...
#else
    #define __CPPARGS
#endif

#define BUFFSIZE			80

#define CANComIntr			0x000d		//CAN板串口Interrupt Number
#define CANCanIntr			0x000c		//CAN板CAN口Interrupt Number
#define CANComEoi			0x000d
#define CANCanEoi			0x000c

#define IntEoiReg			0xFF22		//end of interrupt register
#define IntMaskReg			0xFF28		//interrupt mask register

#define Int0Enable			0xFFDF		//IRQ4 for COMM
#define Int1Enable			0xFFEF		//IRQ5 for CAN
#define Int0Disable			0x0020		//IRQ4 for COMM
#define Int1Disable			0x0010		//IRQ5 for CAN
#define Int0CtrlReg			0xFF3a		//IRQ4 for COMM
#define Int1CtrlReg			0xFF38		//IRQ5 for CAN
#define Int0NumEoi			0x000D		//IRQ4 for COMM
#define Int1NumEoi			0x000C		//IRQ5 for CAN
#define Int0PriInit			0x0004		//IRQ4 for COMM
#define Int1PriInit			0x0003		//IRQ5 for CAN

#define AMDTimer0CntReg		0xFF50		//AMDTimer0 Count Register
#define AMDTimer2CntReg		0xFF60		//AMDTimer2 Count Register
#define AMDTimer0CmpRegA	0xFF52		//Timer0 Compare Register A
#define AMDTimer2CmpRegA	0xFF62		//Timer2 Compare Register A

#define ComBBase			0x200
#define ComABase			0x208
#define Can1PortBase		0x300
#define Can2PortBase		0x302
#define Can3PortBase		0x304

#define CanModeCtrlReg		0x00
#define RM_Bit				0x01
#define LOM_Bit				0x02
#define STM_Bit				0x04
#define AFM_Bit				0x08
#define SM_Bit				0x10

#define CanCmdReg			0x01
#define TR_Bit				0x01
#define AT_Bit				0x02
#define RRB_Bit				0x04
#define CDO_Bit				0x08
#define SRR_Bit				0x10

#define CanStusReg			0x02
#define RBS_Bit				0x01
#define DOS_Bit				0x02
#define TBS_Bit				0x04
#define TCS_Bit				0x08
#define RS_Bit				0x10
#define TS_Bit				0x20
#define ES_Bit				0x40
#define BS_Bit				0x80

#define CanIntrReg			0x03
#define RI_Bit				0x01
#define TI_Bit				0x02
#define EI_Bit				0x04
#define DOI_Bit				0x08
#define WUI_Bit				0x10
#define EPI_Bit				0x20
#define ALI_Bit				0x40
#define BEI_Bit				0x80

#define CanIntrEnbReg		0x04
#define RIE_Bit				0x01
#define TIE_Bit				0x02
#define EIE_Bit				0x04
#define DOIE_Bit			0x08
#define WUIE_Bit			0x10
#define EPIE_Bit			0x20
#define ALIE_Bit			0x40
#define BEIE_Bit			0x80

#define CanBusTime0Reg		0x06
#define SJW_KB_16			0xc0	//SJW
#define Presc_KB_16			0x00	//baudrate prescaler:1  8MHz
#define CanBusTime1Reg		0x07
#define TSEG1_KB_16			0x0a	//TSEG1 :11
#define TSEG2_KB_16			0x30	//TESG2 :4    8/(11+4+1)=500kbit/s

#define CanOutCtrlReg		0x08
#define BiPhaseMode			0x00
#define NormalMode			0x02
#define ClkOutMode			0x03
#define OCPOL1_Bit			0x20
#define Tx1Float			0x00
#define Tx1PullDn			0x40
#define Tx1PullUp			0x80
#define Tx1PshPull			0xc0
#define OCPOL0_Bit			0x04
#define Tx0Float			0x00
#define Tx0PullDn			0x08
#define Tx0PullUp			0x10
#define Tx0PshPull			0x18

#define CanArbLostCapReg	0x0b
#define CanErrCodeCapReg	0x0c
#define CanErrLimtReg		0x0d
#define CanRxErrCountReg	0x0e
#define CanTxErrCountReg	0x0f

#define CanAcceptCode0		0x10
#define CanAcceptCode1		0x11
#define CanAcceptCode2		0x12
#define CanAcceptCode3		0x13
#define CanAcceptMask0		0x14
#define CanAcceptMask1		0x15
#define CanAcceptMask2		0x16
#define CanAcceptMask3		0x17

#define CanClkDivReg		0x1f
#define DivBy1				0x07
#define DivBy2				0x00
#define ClkOff_Bit			0x08
#define RXINTEN_Bit			0x20
#define CBP_Bit				0x40
#define CANMode_Bit			0x80

extern unsigned int timer;
extern int GetPass(unsigned int early,unsigned int late);
extern void DebugData(int cmd,int id,int len,unsigned char *data);
extern void G2000_ShowJob(int cmd);

CAN_TYPE *can[2]={NULL,NULL};
static void interrupt Can_int(__CPPARGS)
{
	int i;
	//unsigned char c;
	unsigned char zhenhao;
	unsigned char canid;
	unsigned char status,dlc;
	unsigned char Rx_id2,Rx_id1;
	unsigned char CanIntrStus[2];
	unsigned int inttimer,fstimer;
	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);	//讀中斷狀態(tài)寄存器
	}
	inttimer=timer;
	while(CanIntrStus[0] || CanIntrStus[1])
	{
		if(GetPass(inttimer,timer)>15)
			break;
		for(canid=0;canid<2;canid++)
		{
			if(NULL==can[canid])
				continue;
			if(CanIntrStus[canid])
			{
				
				if(CanIntrStus[canid] & TI_Bit)	//發(fā)送中斷
				{
					/*if((can[canid]->out.read_index+1)<can[canid]->out.write_index)
					{
						//printf("ddd");
						outportb(can[canid]->can_base,CanStusReg);
						fstimer=timer;
						while((inportb(can[canid]->can_base+1) & TBS_Bit) != TBS_Bit)//;//發(fā)送緩沖區(qū)空?
						{
							outportb(can[canid]->can_base,CanStusReg);
							if(GetPass(fstimer,timer)>10)
								continue;
						}
						outportb(can[canid]->can_base,16);
						outportb(can[canid]->can_base+1,0x08);
						outportb(can[canid]->can_base,17);
						i=can[canid]->out.pri[can[canid]->out.read_index/8];
						outportb(can[canid]->can_base+1,i&0xff);	//對(duì)方站號(hào)(優(yōu)先級(jí))
						outportb(can[canid]->can_base,18);
						i=can[canid]->out.zhenhao[can[canid]->out.read_index/8];
						outportb(can[canid]->can_base+1,(i<<5)&0xe0);
						for(i=0;i<8;i++)
						{
							outportb(can[canid]->can_base,19+i);
							outportb(can[canid]->can_base+1,can[canid]->out.buffer[can[canid]->out.read_index++]);
						}
						outportb(can[canid]->can_base,CanStusReg);//,0x02
						fstimer=timer;
						while((inportb(can[canid]->can_base+1) & TS_Bit) != 0)//;//&0x20 !=0x00
						{
							if(GetPass(fstimer,timer)>10)
								continue;
							outportb(can[canid]->can_base,CanStusReg);
						}
						outportb(can[canid]->can_base,CanCmdReg);//,0x01
						outportb(can[canid]->can_base+1,TR_Bit);//,0x01
						can[canid]->can_snd_timer=timer;
					}
					else*/
					{
						//can[canid]->out.read_index=0;
						//can[canid]->out.write_index=0;
						outportb(can[canid]->can_base,CanIntrEnbReg);
						outportb(can[canid]->can_base+1,RIE_Bit);
					}
				}
				else if(CanIntrStus[canid] & RI_Bit)	//接收中斷
				{
					outportb(can[canid]->can_base,CanStusReg);
					status=inportb(can[canid]->can_base+1);
					if((status & RBS_Bit) == RBS_Bit)
					{
						can[canid]->can_rcv_timer=timer;
						outportb(can[canid]->can_base,16);
						dlc=0x0f&inportb(can[canid]->can_base+1);
						outportb(can[canid]->can_base,17);
						Rx_id1=inportb(can[canid]->can_base+1);
						outportb(can[canid]->can_base,18);
						Rx_id2=inportb(can[canid]->can_base+1);
						zhenhao=(Rx_id2>>5)&0x07;
						if(dlc>8)
							dlc=8;
						if(Rx_id1!=0x63 && Rx_id1!=0x64 && Rx_id1!=0x20)
						{
							for(i=0;i<dlc;i++)
							{
								outportb(can[canid]->can_base,19+i);
								inportb(can[canid]->can_base+1);
							}
						}
						else
						{
							i=can[canid]->in.write_index/8;
							if(i>7)
								i=7;
							can[canid]->in.zhenhao[i]=zhenhao;
							can[canid]->in.pri[i]=Rx_id1;
							//printf("%d ",dlc);
							for(i=0;i<8;i++)
							{
								if(i<dlc)
								{
									outportb(can[canid]->can_base,19+i);
									can[canid]->in.buffer[can[canid]->in.write_index++]=inportb(can[canid]->can_base+1);
								}
								else
								{
									can[canid]->in.buffer[can[canid]->in.write_index++]=0;
								}
								if(can[canid]->in.write_index>=BUFFSIZE)
								{
									can[canid]->in.write_index=0;
								}
							}
						}
						/*for(i=0;i<8;i++)
						{
							if(i<dlc)
								can[canid]->in.buffer[can[canid]->in.write_index]=inportb(can[canid]->can_base+19+i);
							else
								can[canid]->in.buffer[can[canid]->in.write_index]=0;
							can[canid]->in.write_index++;
							if(can[canid]->in.write_index>=BUFFSIZE)
							{
								can[canid]->in.write_index=0;
							}
						}*/
						//if(can[canid]->in.buffer[0]==2 && can[0]->in.zhenhao[0]==3 && 0==canid)
						//	G2000_ShowJob(2);
						//can1_zhenhao++;
						outportb(can[canid]->can_base,CanCmdReg);
						outportb(can[canid]->can_base+1,RRB_Bit);//0x04釋放接收緩沖區(qū)
					}
				}
				else if(CanIntrStus[canid]&DOI_Bit)	//溢出中斷
				{
					;
				}
				else
				{
					;//outportb(Can1PortBase,CanCmdReg);
					//outportb(Can1PortBase+1,RRB_Bit);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品1区2区在线观看| 4438x成人网最大色成网站| 亚洲精品免费看| 欧美xfplay| 日本福利一区二区| 国产成人av福利| 日韩综合小视频| 亚洲日本韩国一区| 久久综合久久99| 欧美一区午夜视频在线观看 | 一区二区三区欧美视频| 欧美成人aa大片| 欧美午夜片在线看| av资源网一区| 国产精品综合一区二区| 男人的天堂亚洲一区| 亚洲一区二区av在线| 亚洲国产精品精华液2区45| 日韩美女一区二区三区| 欧美日韩的一区二区| 91福利小视频| 一本一本大道香蕉久在线精品| 国产乱码精品一区二区三区五月婷 | 成人免费高清在线| 韩国精品在线观看| 日韩激情av在线| 亚洲va国产va欧美va观看| 亚洲六月丁香色婷婷综合久久| 欧美激情中文字幕一区二区| 精品久久99ma| 欧美tickling挠脚心丨vk| 欧美久久免费观看| 欧美日本在线播放| 欧美日韩夫妻久久| 欧美日韩美女一区二区| 欧美日韩一区二区三区四区五区 | 免费av成人在线| 日日摸夜夜添夜夜添国产精品| 亚洲成a人片在线不卡一二三区| 亚洲伊人伊色伊影伊综合网| 亚洲精品日产精品乱码不卡| 亚洲色图欧美激情| 亚洲精品成人精品456| 亚洲视频中文字幕| 亚洲免费观看视频| 亚洲国产欧美在线| 日韩黄色免费电影| 久久精品国产999大香线蕉| 精品一区二区精品| 国产精品123| 99久久久国产精品免费蜜臀| 99久久精品国产精品久久| 99精品热视频| 91久久奴性调教| 欧美狂野另类xxxxoooo| 这里是久久伊人| 精品美女一区二区三区| 国产网站一区二区三区| 日韩伦理免费电影| 亚洲成a人v欧美综合天堂下载| 奇米888四色在线精品| 精品在线观看免费| 成人97人人超碰人人99| 色视频成人在线观看免| 这里只有精品免费| 久久久久久亚洲综合| 国产精品不卡在线| 亚洲va在线va天堂| 国产原创一区二区三区| 91女厕偷拍女厕偷拍高清| 91精品国产色综合久久不卡蜜臀| 亚洲精品一区二区三区蜜桃下载 | 日韩一区二区免费在线电影| 2023国产精品视频| 亚洲人成7777| 男女男精品视频| 成人福利在线看| 欧美羞羞免费网站| 久久久精品人体av艺术| 亚洲欧美二区三区| 精品在线一区二区三区| 91亚洲国产成人精品一区二区三 | 国产精品三级在线观看| 亚洲一区二区综合| 国产一区二区三区四区在线观看| 成人激情黄色小说| 91精品国产高清一区二区三区蜜臀| 久久久99久久| 亚瑟在线精品视频| 成人不卡免费av| 欧美成人vps| 香蕉影视欧美成人| 激情综合亚洲精品| 成人免费视频caoporn| 91麻豆免费看| 久久无码av三级| 亚洲一区二区在线播放相泽| 国产麻豆精品theporn| 欧美性受极品xxxx喷水| 欧美激情综合网| 全部av―极品视觉盛宴亚洲| 91在线观看高清| 久久久九九九九| 日韩福利视频导航| 日本高清视频一区二区| 欧美激情一区三区| 久热成人在线视频| 欧美日韩一区 二区 三区 久久精品| 国产日韩欧美亚洲| 狠狠色狠狠色综合| 9191久久久久久久久久久| 亚洲免费资源在线播放| 国产成人av电影在线| 日韩三级精品电影久久久 | 亚洲女厕所小便bbb| 日本欧美韩国一区三区| 成人国产在线观看| 精品国产乱码久久久久久图片| 午夜精品福利一区二区三区蜜桃| 91在线观看一区二区| 日本一区二区电影| 国产精品中文欧美| 精品国产在天天线2019| 久久精品99国产精品| 91精品一区二区三区在线观看| 亚洲国产美国国产综合一区二区| 色综合夜色一区| 最好看的中文字幕久久| 成人av网站在线观看免费| 国产精品五月天| 成人av免费在线播放| 中文天堂在线一区| 丁香天五香天堂综合| 国产午夜久久久久| 高清av一区二区| 中文一区二区在线观看| 成人午夜免费视频| 中文字幕中文字幕在线一区 | 久久黄色级2电影| 日韩一区和二区| 久久99久久精品| 精品av综合导航| 国产一区二区伦理| 欧美极品另类videosde| 粉嫩av一区二区三区粉嫩 | 三级久久三级久久久| 欧美撒尿777hd撒尿| 日韩精品电影在线观看| 精品少妇一区二区三区| 激情六月婷婷久久| 中文字幕成人av| 色综合欧美在线| 欧美精品v国产精品v日韩精品 | 91丨九色porny丨蝌蚪| 亚洲精品国久久99热| 欧美日韩一级片网站| 日韩1区2区日韩1区2区| 久久天堂av综合合色蜜桃网| 丰满岳乱妇一区二区三区| 亚洲美女屁股眼交| 欧美精品一级二级| 国产尤物一区二区在线| 中文字幕一区av| 欧美午夜电影一区| 另类小说视频一区二区| 国产色综合一区| 欧美在线观看禁18| 看电视剧不卡顿的网站| 国产精品久久久久aaaa樱花| 在线观看日韩国产| 久久99精品国产麻豆婷婷 | 日本午夜精品一区二区三区电影| 精品免费日韩av| 波多野结衣一区二区三区| 亚洲国产精品嫩草影院| 久久免费视频色| 色噜噜偷拍精品综合在线| 美国十次了思思久久精品导航| 中文无字幕一区二区三区| 欧美色图片你懂的| 国产精品亚洲一区二区三区妖精 | 久久av中文字幕片| 国产精品黄色在线观看| 7799精品视频| 粉嫩嫩av羞羞动漫久久久| 日韩制服丝袜先锋影音| 中文字幕亚洲精品在线观看 | 亚洲欧洲日韩综合一区二区| 欧美日韩一级视频| 国产成人欧美日韩在线电影| 亚洲18女电影在线观看| 国产精品久久久久久久久免费樱桃| 欧美麻豆精品久久久久久| 成人av先锋影音| 久热成人在线视频| 亚州成人在线电影| 专区另类欧美日韩| 久久精品网站免费观看| 91麻豆精品91久久久久久清纯 | 亚洲高清不卡在线|