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

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

?? main.c

?? 微芯公司PIC16F87X單片機在CAN通信中的應用.
?? C
字號:
// ========CAN通信程序======= 
#include	<pic.h>
#include	<pic1687x.h>
#include	<mcp2510.h>			// MCP2510寄存器定義 
// =========常數和變量定義=========  
#define	READ	0x03				// 讀MCP2510指令代碼 
#define	WRITE	0x02			// 寫MCP2510指令代碼 
#define	RESET	0xC0			// 復位MCP2510指令代碼 
#define	RTS	0x80				// MCP2510請求發送指令代碼 
#define	STA2510	0xA0			// 讀MCP2510狀態指令代碼 
#define	BITMOD	0x05			// MCP2510位修改指令代碼 
int	a[12];					// SPI發送或接收數據寄存器
int	b[8];					// 發送或接收的數據
int	c[8];					// 發送或接收的數據
int	i;						// 臨時變量
int	count;					// 發送接收計數器
int	count1=0;				// for test
int	RecID_H=0;
int	RecID_L=0;
int	DLC=8;
void SPIINT();
void TMR1INT();
void CCP1INT();
void SPIEXCHANGE(int count);
void WAIT_SPI();
void RESET2510();
int  RD2510(int adress,int n);
void WR2510(int adress,int n);
void RTS2510(int RTSn);
int  GETS2510();
void BM2510(int adress,int mask,int data);
void SETNORMAL();
void TXCOMPLETE(int adress);
void TXMSG(int DLC);
int  RXMSG();
void INIT2510();
void INIT877();
void INITSPI();
void ACK();
void wait();
// ========主程序======= 
main(void)
{
	int l,detect=0;
	SSPIE=1;
	TMR1IE=1;
	CCP1IE=1;
	CCP2IE=1;
	PEIE=1;
	ei();					// 開中斷 
	INIT877();				// 初始化PIC16F877芯片 
	INITSPI();				// 初始化SPI接口 
	INIT2510();				// 初始化MCP2510芯片 
	flag1=0;
	flag2=0;
	CCP1CON=0x05;
	CCP2CON=0x04;
	while(1)	{
		RXMSG();
		TXMSG(8);
	}
}
// ========中斷服務程序======= 
// SPI中斷服務子程序 
void SPIINT()
{
	SSPIF=0;
	a[i++]=SSPBUF;			// 數據暫存a[]中 
	count-=1;
	if(count>0)  SSPBUF=a[i];// 未發送完,繼續 
	else  RE2=1;				// 否則,片選信號置高電平 
	return;
}
// TMR1中斷服務子程序 
void TMR1INT()
{
	TMR1IF=0;
	T1CON=0;
	if(!flag1){
		TMR1H=0xfe;				// 512 μs 脈沖寬度
		TMR1L=0x00;
		T1CON=0x01;
		PORTD=0xff;				// 輸出所有通道
		flag1=1;
	}
	else	{
		flag1=0;
		PORTD=0;
		T1CON=0;
	}
	return;
}
// CCP1中斷服務子程序 
void CCP1INT()
{
	CCP1IF=0;
	T1CON=0x01;
	return;
}
// CCP2中斷服務子程序 
 void CCP2INT()
{
	CCP2IF=0;
	T1CON=0x01;
	return;
}
// 中斷入口,保護現場,判中斷類型 
void interrupt INTS()
{
	di();
	if(TMR1IF)  TMR1INT();		// 定時器TMR1中斷 
	else if(CCP1IF)  CCP1INT();	// 電壓過零捕捉中斷1 
	else if(CCP2IF)  CCP2INT();	// 電壓過零捕捉中斷2 
	else if(SSPIF)  SPIINT();		// SPI接口中斷 
	ei();
}
// ========子程序======= 
// 啟動SPI傳送 
 void SPIEXCHANGE(count)
 int count;
{
	if(count>0) {				// 有數據可送? 
	  i=0;
	  RE2=0;						// 片選位置低電平 
	  SSPBUF=a[i];				// 送數 
	}
	else
	  ;							// 否則,空操作,并返回 
	return;
}
// 等待SPI傳送完成 
 void WAIT_SPI()
{
	do{
	  ;
	}while(count>0);				// 當count!=0時,等待 to add "CLRWDT" 
	return;
}
// 對MCP2510芯片進行復位 
void RESET2510()
{
	a[0]=RESET;
	count=1;
	SPIEXCHANGE(count);			// 送復位指令 
	WAIT_SPI();
	return;
}
// 讀取從地址"adress"開始的寄存器中的數據,共n個,存放在數組b[n]中 
 int RD2510(adress,n)
 int 	adress;
 int		n;
{
	int j;
	a[0]=READ;
	a[1]=adress;
	for(j=0;j<n;j++)  a[j+2]=0;
	count=n+2;					// 指令、地址和要得到的數據量n 
	SPIEXCHANGE(count);
	WAIT_SPI();
	for(j=0;j<n;j++)  b[j]=a[j+2];// 數據存到數組b[]中 
	return;
}
// 向從地址"adress"開始的寄存器寫入數據,共n個,數據存放數組b[n]中 
 void WR2510(adress,n)
 int		adress;
 int		n;
{
	int j;
	a[0]=WRITE;
	a[1]=adress;
	for(j=0;j<n;j++) a[j+2]=b[j];
	count=n+2;					// 指令、地址和要寫入的數據量n 
	SPIEXCHANGE(count);
	WAIT_SPI();
	return;
}
// MCP2510芯片請求發送程序 
 void RTS2510(RTSn)
 int RTSn;
{
	a[0]=RTS^RTSn;
	count=1;
	SPIEXCHANGE(count);			// 發送MCP2510芯片,請求發送指令 
	WAIT_SPI();
	return;
}
// 讀取MCP2510芯片的狀態 
 int GETS2510()
{
	a[0]=STA2510;
	a[1]=0;
	count=2;
	SPIEXCHANGE(count);			// 讀取MCP2510芯片狀態 
	WAIT_SPI();
	b[0]=a[1];					// 狀態存到數組b[]中 
	return;
}
// 對MCP2510芯片進行位修改子程序 
 void BM2510(adress,mask,data)
 int  adress;
 int  mask;
 int  data;
{
	a[0]=BITMOD;					// 位修改指令 
	a[1]=adress;					// 位修改寄存器地址 
	a[2]=mask;					// 位修改屏蔽位 
	a[3]=data;					// 位修改數據 
	count=4;
	SPIEXCHANGE(count);
	WAIT_SPI();
	return;
}
// 設置MCP2510芯片為正常操作模式 
void  SETNORMAL()
{
	int  k=1;
	BM2510(CANCTRL,0xe0,0x00);	// 設置為正常操作模式 
	do	{
	  RD2510(CANSTAT,1);
	  k=b[0]&0xe0;
	}while(k);					// 確認已進入正常操作模式 
	return;
}
// 對MCP2510進行初始化 
void INIT2510()
{
	RESET2510();					// 使芯片復位 
	b[0]=0x02;
	b[1]=0x90;
	b[2]=0x07;
	WR2510(CNF3,3);				// 波特率為 125 kbps 
	b[0]=0x00;
	b[1]=0x00;
	WR2510(RXM0SIDH,2);
	b[0]=0x00;
	b[1]=0x00;
	WR2510(RXF0SIDH,2);			// RX0接收,屏蔽位為0,過濾器為0 
	b[0]=0x00;
	WR2510(CANINTE,1);			// CAN中斷不使能 
	SETNORMAL();					// 設置為正常操作模式 
	return;
}
// MCP2510芯片發送完成與否判斷,郵箱號為adress 
void TXCOMPLETE(adress)
int adress;
{
	int k=1;
	do	{
	  RD2510(adress,1);
	  k=b[0]&0x08;
	}while(k);					// 確認是否已發送完畢 to add CLRWDT 
	return;
}
// 初始化PIC16F877芯片 
void INIT877()
{
	PORTA=0;
	PORTB=0;
	PORTC=0;
	PORTD=0;
	PORTE=0;
	TRISA=0xff;
	TRISB=0xfd;
	TRISC=0xd7;					// SCK, SDO:輸出,SDI:輸入  
	TRISD=0;
	TRISE=0x03;					// 片選CS信號輸出
	PORTA=0xff;
	PORTB=0x03;					// RST=1 
	PORTC=0;
	PORTD=0xff;
	PORTE=0x04;
	return;
}
// 初始化SPI接口 
 void INITSPI()
{
	SSPCON=0x11;
	SSPEN=1;							// SSP使能 
	SSPSTAT=0;
	return;
}
// 發送數據子程序 
 void  TXMSG(int DLC)
{
	for(i=0;i<DLC;i++)  b[i]=c[i];
	WR2510(TXB0D0,DLC);	
	b[0]=DLC;
	WR2510(TXB0DLC,1);
	b[0]=0x03;
	b[1]=RecID_H;
	b[2]=RecID_L;
	WR2510(TXB0CTRL,3);
	RTS2510(0x01);					// 請求發送 
	TXCOMPLETE(TXB0CTRL);	 			//等待發送完畢 
	return;
}
// 接收數據子程序 
 int RXMSG()
{
	int k;
	RD2510(CANINTF,1);
	k=b[0]&0x01;
	if(k==1)	{ 
	BM2510(CANINTF,0x01,0x00);
		RD2510(RXB0SIDH,2);
		RecID_H=b[0];
	RecID_L=b[1]&0xe0;
	RD2510(RXB0DLC,1);
	DLC=b[0]&0x0f;
	RD2510(RXB0D0,DLC);
		for(i=0;i<DLC;i++) c[i]=b[i];
		return 1;
	}
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性猛交xxxx乱大交退制版| 国产电影一区在线| 中文字幕亚洲区| 久久久亚洲精品石原莉奈| 69av一区二区三区| 欧美男男青年gay1069videost| 91精品91久久久中77777| av午夜精品一区二区三区| 国产福利一区二区三区视频| 丰满白嫩尤物一区二区| 国产99久久久国产精品潘金网站| 国产成人av一区| 国产成人精品免费在线| 国产成人综合在线观看| 成人av在线电影| av成人动漫在线观看| 91视频免费观看| 欧美在线综合视频| 欧美一级免费观看| 精品久久久久久久久久久久久久久| 精品日韩欧美在线| 国产欧美va欧美不卡在线| 国产精品麻豆视频| 亚洲一区二区三区中文字幕在线| 天天综合网天天综合色| 久久99久久精品欧美| 懂色av中文一区二区三区| 91年精品国产| 欧美一级片免费看| 国产精品天天看| 亚洲小少妇裸体bbw| 激情综合网最新| av不卡在线播放| 91麻豆精品国产91久久久久| 国产亚洲婷婷免费| 一区二区三区不卡视频在线观看| 肉色丝袜一区二区| 国产91丝袜在线18| 欧美男同性恋视频网站| 久久综合av免费| 亚洲尤物视频在线| 国产ts人妖一区二区| 欧美日韩综合不卡| 国产精品网站在线观看| 视频一区二区三区在线| 99久精品国产| 欧美成人三级电影在线| 亚洲自拍偷拍欧美| 福利一区在线观看| 欧美电影免费提供在线观看| 亚洲精品视频自拍| 国产一区二区伦理片| 欧美精品aⅴ在线视频| ㊣最新国产の精品bt伙计久久| 欧美bbbbb| 色乱码一区二区三区88| 国产欧美精品一区二区色综合朱莉| 午夜欧美一区二区三区在线播放| 成人激情小说网站| 久久男人中文字幕资源站| 视频在线观看国产精品| 欧美日韩综合在线| 亚洲欧美二区三区| 成人高清免费在线播放| 国产视频不卡一区| 蜜桃视频在线一区| 91精品国产色综合久久久蜜香臀| 亚洲欧美日韩久久精品| 成人丝袜高跟foot| 中文天堂在线一区| 成人午夜在线播放| 国产三级一区二区| 国产一区二区主播在线| 日韩精品专区在线| 免费观看在线综合色| 91精品国产欧美日韩| 日本中文一区二区三区| 8x福利精品第一导航| 五月婷婷综合在线| 日韩亚洲欧美高清| 另类的小说在线视频另类成人小视频在线| 欧美色图在线观看| 三级一区在线视频先锋 | 色婷婷综合中文久久一本| 欧美激情一二三区| 波多野洁衣一区| 自拍偷自拍亚洲精品播放| 99精品视频在线播放观看| 亚洲日本一区二区三区| 91网页版在线| 亚洲国产成人porn| 宅男噜噜噜66一区二区66| 青青青爽久久午夜综合久久午夜| 日韩欧美一区在线| 国产精品一区二区久久精品爱涩| 欧美国产精品一区二区| 色综合一区二区| 亚洲成a人片在线不卡一二三区| 337p亚洲精品色噜噜| 韩国午夜理伦三级不卡影院| 国产亚洲人成网站| 在线观看免费视频综合| 三级在线观看一区二区| 国产无一区二区| 色婷婷狠狠综合| 男女男精品视频| 欧美激情一区二区三区| 欧美亚洲国产一卡| 国产一区在线不卡| 亚洲日本成人在线观看| 91精品国产综合久久国产大片| 国产一区二区按摩在线观看| 国产精品视频看| 欧美精品视频www在线观看| 国产精品影视在线观看| 亚洲嫩草精品久久| 欧美一区二区国产| 91麻豆精品秘密| 国产一区二区免费在线| 亚洲自拍都市欧美小说| 久久精品在线免费观看| 欧美三片在线视频观看| 国产精品一区二区91| 亚洲动漫第一页| 国产欧美1区2区3区| 91麻豆精品国产| 91久久精品一区二区三| 国产精品系列在线播放| 亚洲第一成年网| 亚洲天堂2014| 精品国产一区二区精华| 欧美视频在线观看一区二区| 国产激情一区二区三区四区| 肉丝袜脚交视频一区二区| 国产精品嫩草影院com| 欧美sm极限捆绑bd| 欧美日韩免费电影| 色视频成人在线观看免| 成人av网站在线观看免费| 麻豆精品国产传媒mv男同| 亚洲一区二三区| 亚洲久本草在线中文字幕| 国产精品色哟哟网站| 精品国产91亚洲一区二区三区婷婷| 欧美体内she精高潮| 色猫猫国产区一区二在线视频| 丁香婷婷综合激情五月色| 国产精品一卡二| 激情文学综合网| 蜜桃av一区二区三区| 蜜臀a∨国产成人精品| 香蕉成人啪国产精品视频综合网| 亚洲美女视频一区| 亚洲同性gay激情无套| 国产精品热久久久久夜色精品三区| 久久先锋影音av| 精品理论电影在线观看| 日韩精品一区在线| 亚洲精品在线网站| 久久香蕉国产线看观看99| 国产夜色精品一区二区av| 国产午夜精品一区二区三区四区| 欧美成人video| 精品成人私密视频| 国产网站一区二区| 国产精品护士白丝一区av| 国产精品国产三级国产aⅴ原创| 国产精品久久久久影院老司| **性色生活片久久毛片| 亚洲成精国产精品女| 奇米四色…亚洲| 国产iv一区二区三区| 97精品久久久久中文字幕| 在线观看欧美黄色| 日韩精品一区二区三区中文精品| 久久久激情视频| 国产精品不卡视频| 婷婷久久综合九色综合绿巨人| 久久精品国产亚洲aⅴ| 国产aⅴ精品一区二区三区色成熟| 成人av在线资源网站| 欧美日韩午夜影院| 2023国产精华国产精品| 亚洲人成网站精品片在线观看| 婷婷丁香激情综合| 成人午夜视频福利| 欧美在线观看视频在线| 精品国偷自产国产一区| 亚洲免费视频成人| 久久成人综合网| 91蜜桃婷婷狠狠久久综合9色| 欧美精品一二三| 国产精品电影一区二区三区| 亚洲18色成人| 成人开心网精品视频| 正在播放亚洲一区| 国产精品不卡视频| 美女视频黄免费的久久| 91香蕉视频mp4| 精品理论电影在线观看|