日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sja1000编程c语言,基于51单片机SJA1000 CAN通讯实现(C语言程序)

發布時間:2024/3/12 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sja1000编程c语言,基于51单片机SJA1000 CAN通讯实现(C语言程序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過一個星期的艱苦奮斗,終于將兩個SJA1000通過51單片機成功通訊了!采用的是Pelican工作模式,擴展幀數據格式,驗收濾波器是采用單濾波擴展幀模式。

發送和接收代碼都全部相同樣!

一 實物圖

二 串口輸出調試信息

三 以下是全部程序代碼:包括1 main.c、2 uart.h、3 uart.c、4 sja1000.h、5 sja1000.c。

1main.c

#include "reg51.h"

#include "uart.h"

#include ?"string.h"

#include ?"sja1000.h"

sbit KEY=P2^5;

void main(void)

{

unsigned char init,state,num,i=0;

UART_Init();

if(SJA_Interface_Test())

{

UART_Send_String("\r\nSJA TO CPU Right!\r\n");

}

else

{

UART_Send_String("\r\nSJA TO CPU Error!\r\n");

}

init=SJA_Init();

if(init==0)

{

UART_Send_String("\r\nSJA Init OK!\r\n");

}

else

{

UART_Send_String("\r\nSJA Init Error!\r\n");

UART_Send_Byte(init);

}

while(1)

{

if(KEY==0)

{

DelayMs(10);

if(KEY==0)

{

CAN_Send_Str("ILoveY\r\n");

Display(num);

if(num++==14) num=0;

}

DelayMs(200);

}

SJA_BCANAdr = REG_STATUS;

state=*SJA_BCANAdr;

if((state&0x40)==0x40) { UART_Send_String("\r\nSJA Error count overflow!!\r\n"); SJA_Init(); }

if((state&0x20)==0x20) ?UART_Send_String("SJA1000 CAN BUS is transmiting!\r\n");

}

}

2uart.h

#ifndef ?__UART_H__

#define ?__UART_H__

#include "stdio.h"

#include "reg51.h"

#define reclength 8

extern bit recfinish;

extern unsigned char recbuf[reclength];

void UART_Init(void);

void UART_Send_Byte(unsigned char ch);

void UART_Send_String(unsigned char *str);

void Display( char num);

void DelayMs(unsigned char t);

#endif

3uart.c

#include "uart.h"

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

unsigned char reccount=0;

bit recstart=0;

bit recfinish=0;

unsigned char recbuf[reclength];

void UART_Init(void)

{

SCON=0X50;

TMOD|=0X20;

TH1=0XFD;

TL1=0XFD;

TR1=1;

EA=1;

ES=1;

}

void UART_Send_Byte(unsigned char ch)

{

SBUF=ch;

while(!TI);//等到發送完成中斷標志位置1

TI=0;

}

void UART_Send_String(unsigned char *str)

{

while(*str)

{

UART_Send_Byte(*str);

str++;

}

}

void UART_ISR(void) ?interrupt 4

{

//unsigned char temp;

if(RI)

{

if(recstart==0)

{

recstart=1;

reccount=0;

recfinish=0;

}

if(recstart)

{

recbuf[reccount++]=SBUF;

if((reccount==reclength)||(recbuf[reccount-1]=='z'))

{

recfinish=1;

reccount=0;

recstart=0;

}

}

}

RI=0;

}

/*------------------------------------------------

uS延時函數,含有輸入參數 unsigned char t,無返回值

unsigned char 是定義無符號字符變量,其值的范圍是

0~255 這里使用晶振12M,精確延時請使用匯編,大致延時

長度如下 T=tx2+5 uS

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/*------------------------------------------------

mS延時函數,含有輸入參數 unsigned char t,無返回值

unsigned char 是定義無符號字符變量,其值的范圍是

0~255 這里使用晶振12M,精確延時請使用匯編

------------------------------------------------*/

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延時1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

//共陽數碼管顯示 調試的時候用到 ,本程序最終沒有用到。

void Display( char num)

{

P1=table[num];

}

4sja1000.h

#ifndef ?__SJA1000_H__

#define ?__SJA1000_H__

#include ?"string.h"

#include "uart.h"

#define ?SJA_BaseAdr ?0XFE00 ? ? //定義SJA RAM基址

//P2口為地址線高八位 P0口為地址線低八位

// CS接P2.0 地址線 1111 1110 0000 0000 即為0XFE00

// CS接P2.7 地址線 0111 1111 0000 0000 ? ? 0x7F00

#define ? ? ? ? REG_CONTROL ? ? ? SJA_BaseAdr+0x00 ? ? ? //內部控制寄存器

#define ? ? ? ? REG_COMMAND ? ? ? SJA_BaseAdr+0x01 ? ? ? //命令寄存器 ? ? ?只寫

#define ? ? ? ? REG_STATUS ? ? ? ?SJA_BaseAdr+0x02 ? ? ? //狀態寄存器 ? ? ?只讀

#define ? ? ? ? REG_INTERRUPT ? ? SJA_BaseAdr+0x03 ? ? ? //中斷寄存器 ? ? ?只讀

#define ? ? ? ? REG_INTENABLE ? ? SJA_BaseAdr+0x04 ? ? ? //中斷使能寄存器 ? 可讀可寫

#define ? ? ? ? REG_RESVER0 ? ? ? SJA_BaseAdr+0x05 ? ? ? //保留0

#define ? ? ? ? REG_BTR0 ? ? ? ? ?SJA_BaseAdr+0x06 ? ? ? //總線定時寄存器0 ?復位模式讀寫

//定義了波特率預設值BRP 和同步跳轉寬度SJW 的值

#define ? ? ? ? REG_BTR1 ? ? ? ? ?SJA_BaseAdr+0x07 ? ? ? //總線定時寄存器1 ?復位模式讀寫

//總線定時寄存器1 定義了每個位周期的長度采樣點的位置和在每個采樣點的采樣數目

#define ? ? ? ? REG_OCR ? ? ? ? ? SJA_BaseAdr+0x08 ? ? ? //輸出控制寄存器 ?復位模式讀寫

//輸出控制寄存器實現了由軟件控制不同輸出驅動配置的建立

#define ? ? ? ? REG_TEST ? ? ? ? ?SJA_BaseAdr+0x09 ? ? ? //測試寄存器

#define ? ? ? ? REG_RESVER1 ? ? ? SJA_BaseAdr+0x0A ? ? ? //保留1

#define ? ? ? ? REG_ARBITRATE ? ? SJA_BaseAdr+0x0B ? ? ? //仲裁丟失捕捉 ? ?只讀

#define ? ? ? ? REG_ERRCATCH ? ? ?SJA_BaseAdr+0x0C ? ? ? //錯誤代碼捕捉 ? ?只讀

#define ? ? ? ? REG_ERRLIMIT ? ? ?SJA_BaseAdr+0x0D ? ? ? //錯誤報警限額 ? ?工作模式只讀 復位模式可讀寫

#define ? ? ? ? REG_RXERR ? ? ? ? SJA_BaseAdr+0x0E ? ? ? ? //接收錯誤計數器工作模式只讀 復位模式可讀寫

#define ? ? ? ? REG_TXERR ? ? ? ? SJA_BaseAdr+0x0F ? ? ? ? //發送錯誤計數器工作模式只讀 復位模式可讀寫

#define ? ? ? ? REG_ACR0 ? ? ? ? ?SJA_BaseAdr+0x10 ? ? ? //驗收代碼寄存器

#define ? ? ? ? REG_ACR1 ? ? ? ? ?SJA_BaseAdr+0x11 ? ? ? //驗收代碼寄存器

#define ? ? ? ? REG_ACR2 ? ? ? ? ?SJA_BaseAdr+0x12 ? ? ? //驗收代碼寄存器

#define ? ? ? ? REG_ACR3 ? ? ? ? ?SJA_BaseAdr+0x13 ? ? ? //驗收代碼寄存器

#define ? ? ? ? REG_AMR0 ? ? ? ? ?SJA_BaseAdr+0x14 ? ? ? //驗收屏蔽寄存器

#define ? ? ? ? REG_AMR1 ? ? ? ? ?SJA_BaseAdr+0x15 ? ? ? //驗收屏蔽寄存器

#define ? ? ? ? REG_AMR2 ? ? ? ? ?SJA_BaseAdr+0x16 ? ? ? //驗收屏蔽寄存器

#define ? ? ? ? REG_AMR3 ? ? ? ? ?SJA_BaseAdr+0x17 ? ? ? //驗收屏蔽寄存器

// 發送緩沖區寄存器 ?(發送緩沖區長13字節,在CAN地址是16-28即0x10-0x1c)

#define ? ? ? ? REG_TXBuffer1 ? ? SJA_BaseAdr+0x10 ? ? ? ? //發送緩沖區1

#define ? ? ? ? REG_TXBuffer2 ? ? SJA_BaseAdr+0x11 ? ? ? ? //發送緩沖區2

#define ? ? ? ? REG_TXBuffer3 ? ? SJA_BaseAdr+0x12 ? ? ? ? //發送緩沖區3

#define ? ? ? ? REG_TXBuffer4 ? ? SJA_BaseAdr+0x13 ? ? ? ? //發送緩沖區4

#define ? ? ? ? REG_TXBuffer5 ? ? SJA_BaseAdr+0x14 ? ? ? ? //發送緩沖區5

#define ? ? ? ? REG_TXBuffer6 ? ? SJA_BaseAdr+0x15 ? ? ? ? //發送緩沖區6

#define ? ? ? ? REG_TXBuffer7 ? ? SJA_BaseAdr+0x16 ? ? ? ? //發送緩沖區7

#define ? ? ? ? REG_TXBuffer8 ? ? SJA_BaseAdr+0x17 ? ? ? ? //發送緩沖區8

#define ? ? ? ? REG_TXBuffer9 ? ? SJA_BaseAdr+0x18 ? ? ? ? //發送緩沖區9

#define ? ? ? ? REG_TXBuffer10 ? ?SJA_BaseAdr+0x19 ? ? ? ? //發送緩沖區10

#define ? ? ? ? REG_TXBuffer11 ? ?SJA_BaseAdr+0x1A ? ? ? ? //發送緩沖區11

#define ? ? ? ? REG_TXBuffer12 ? ?SJA_BaseAdr+0x1B ? ? ? ? //發送緩沖區12

#define ? ? ? ? REG_TXBuffer13 ? ?SJA_BaseAdr+0x1C ? ? ? ? //發送緩沖區13

// 接收緩沖區寄存器 ? (接收緩沖區長13字節,在CAN地址是16-28即0x10-0x1c)

#define ? ? ? ? REG_RXBuffer1 ? ? SJA_BaseAdr+0x10 ? ? ? //接收緩沖區1

#define ? ? ? ? REG_RXBuffer2 ? ? SJA_BaseAdr+0x11 ? ? ? //接收緩沖區2

#define ? ? ? ? REG_RXBuffer3 ? ? SJA_BaseAdr+0x12 ? ? ? ?//接收緩沖區3

#define ? ? ? ? REG_RXBuffer4 ? ? SJA_BaseAdr+0x13 ? ? ? //接收緩沖區4

#define ? ? ? ? REG_RXBuffer5 ? ? SJA_BaseAdr+0x14 ? ? ? ?//接收緩沖區5

#define ? ? ? ? REG_RXBuffer6 ? ? SJA_BaseAdr+0x15 ? ? ? ? //接收緩沖區6

#define ? ? ? ? REG_RXBuffer7 ? ? SJA_BaseAdr+0x16 ? ? ? ? //接收緩沖區7

#define ? ? ? ? REG_RXBuffer8 ? ? SJA_BaseAdr+0x17 ? ? ? ? //接收緩沖區8

#define ? ? ? ? REG_RXBuffer9 ? ? SJA_BaseAdr+0x18 ? ? ? ? //接收緩沖區9

#define ? ? ? ? REG_RXBuffer10 ? ?SJA_BaseAdr+0x19 ? ? ? ?//接收緩沖區10

#define ? ? ? ? REG_RXBuffer11 ? ?SJA_BaseAdr+0x1A ? ? ? ?//接收緩沖區11

#define ? ? ? ? REG_RXBuffer12 ? ?SJA_BaseAdr+0x1B ? ? ? ?//接收緩沖區12

#define ? ? ? ? REG_RXBuffer13 ? ?SJA_BaseAdr+0x1C ? ? ? ?//接收緩沖區13

#define ? ? ? ? REG_RXCOUNT ? ? ? SJA_BaseAdr+0x1D ? ? ? ? //RX報文計數器 ?只讀 RX信息計數器(RMC)反應RXFIFO中可用的信息數目

#define ? ? ? ? REG_RBSA ? ? ? ? ?SJA_BaseAdr+0x1E ? ? ? ? //RX緩沖器起始地址寄存器(RBSA)可讀寫 復位模式只寫

//反映了當前可用來存儲位于接收緩沖器窗口中的信息的內部RAM地址

#define ? ? ? ? REG_CDR ? ? ? ? ? SJA_BaseAdr+0x1F ? ? ? ? //時鐘分頻寄存器

//時鐘分頻寄存器為微控制器控制CLKOUT 的頻率以及屏蔽CLKOUT 引腳而且它還控制著TX1上

//的專用接收中斷脈沖接收比較通道和BasicCAN 模式與PeliCAN 模式的選擇

/*

功能說明: ? CAN控制器SJA1000通訊波特率.SJA1000的晶振為必須為16MHZ*/

#define ? ? ? ? BTR0_Rate_20k ? ? ?0x53 ? ? ? ? ?//20KBPS的預設值

#define ? ? ? ? BTR1_Rate_20k ? ? ?0x2F ? ? ? ? ?//20KBPS的預設值

#define ? ? ? ? BTR0_Rate_40k ? ? ?0x87 ? ? ? ? ?//40KBPS的預設值

#define ? ? ? ? BTR1_Rate_40k ? ? ?0xFF ? ? ? ? ?//40KBPS的預設值

#define ? ? ? ? BTR0_Rate_50k ? ? ?0x47 ? ? ? ? ?//50KBPS的預設值

#define ? ? ? ? BTR1_Rate_50k ? ? ?0x2F ? ? ? ? ?//50KBPS的預設值

#define ? ? ? ? BTR0_Rate_80k ? ? ?0x83 ? ? ? ? ?//80KBPS的預設值

#define ? ? ? ? BTR1_Rate_80k ? ? ?0xFF ? ? ? ? ?//80KBPS的預設值

#define ? ? ? ? BTR0_Rate_100k ? ? 0x43 ? ? ? ? ?//100KBPS的預設值

#define ? ? ? ? BTR1_Rate_100k ? ? 0x2f ? ? ? ? ?//100KBPS的預設值

#define ? ? ? ? BTR0_Rate_125k ? ? 0x03 ? ? ? ? ?//125KBPS的預設值

#define ? ? ? ? BTR1_Rate_125k ? ? 0x1c ? ? ? ? ?//125KBPS的預設值

#define ? ? ? ? BTR0_Rate_200k ? ? 0x81 ? ? ? ? ?//200KBPS的預設值

#define ? ? ? ? BTR1_Rate_200k ? ? 0xFA ? ? ? ? ?//200KBPS的預設值

#define ? ? ? ? BTR0_Rate_250k ? ? 0x01 ? ? ? ? ?//250KBPS的預設值

#define ? ? ? ? BTR1_Rate_250k ? ? 0x1c ? ? ? ? ?//250KBPS的預設值

#define ? ? ? ? BTR0_Rate_400k ? ? 0x43 ? ? ? ? ?//400KBPS的預設值

#define ? ? ? ? BTR1_Rate_400k ? ? 0x11 ? ? ? ? ?//400KBPS的預設值

#define ? ? ? ? BTR0_Rate_500k ? ? 0x81 ? ? ? ? ?//500KBPS的預設值

#define ? ? ? ? BTR1_Rate_500k ? ? 0x23 ? ? ? ? ?//500KBPS的預設值

#define ? ? ? ? BTR0_Rate_666k ? ? 0x41 ? ? ? ? ?//666KBPS的預設值

#define ? ? ? ? BTR1_Rate_666k ? ? 0x12 ? ? ? ? ?//666KBPS的預設值

#define ? ? ? ? BTR0_Rate_800k ? ? 0x41 ? ? ? ? ?//800KBPS的預設值

#define ? ? ? ? BTR1_Rate_800k ? ? 0x11 ? ? ? ? ?//800KBPS的預設值

#define ? ? ? ? BTR0_Rate_1000k ? ?0x40 ? ? ? ? ?//1000KBPS的預設值

#define ? ? ? ? BTR1_Rate_1000k ? ?0x23 ? ? ? ? ?//1000KBPS的預設值

//BPS

//功能說明: ? CAN控制器SJA1000通訊波特率.SJA1000的晶振為必須為24MHZ*/

#define ? ? ? ? BTR0_Rate_10k ? ? ?0xEF ? ? ? ? ?//20KBPS的預設值

#define ? ? ? ? BTR1_Rate_10k ? ? ?0xFF ? ? ? ? ?//20KBPS的預設值

#define ? ? ? ? ByteRate_10k ? ? ? 10

#define ? ? ? ? ByteRate_20k ? ? ? 20

#define ? ? ? ? ByteRate_40k ? ? ? 40

#define ? ? ? ? ByteRate_50k ? ? ? 50

#define ? ? ? ? ByteRate_80k ? ? ? 80

#define ? ? ? ? ByteRate_100k ? ? ?100

#define ? ? ? ? ByteRate_125k ? ? ?125

#define ? ? ? ? ByteRate_200k ? ? ?200

#define ? ? ? ? ByteRate_250k ? ? ?250

#define ? ? ? ? ByteRate_400k ? ? ?400

#define ? ? ? ? ByteRate_500k ? ? ?500

#define ? ? ? ? ByteRate_800k ? ? ?800

#define ? ? ? ? ByteRate_1000k ? ? 1000

//命令字

#define ? ?TR_CMD ? ? 0X01 ?//CMR.0發送請求位

#define ? ?AT_CMD ? ? 0X02 ?//CMR.1中止發送位

#define ? ?RRB_CMD ? ?0X04 ?//CMR.2釋放接收緩沖器

#define ? ?COS_CMD ? ?0X08 ?//CMR.3清除數據溢出

#define ? ?SRR_CMD ? ?0X10 ?//CMR.4自接收模式

#define ? ?GTS_CMD ? ?0X10 ?//????CMR.5.CMR7保留位

//錯誤字

#define CAN_INTERFACE_OK ? ? ?0 ? ? //CAN總線接口OK

#define CAN_BUS_OK ? ? ? ? ? ?0 ? ? //CAN總線OK

#define CAN_INTERFACE_ERR ? ? 0XFF ?//CAN總線接口錯誤

#define CAN_ENTERSET_ERR ? ? ?0XFE ?//CAN總線初始化錯誤

#define CAN_QUITSET_ERR ? ? ? 0XFD ?//CAN總線退出復位模式錯誤

#define CAN_INITOBJECT_ERR ? ?0XFC ?//CAN總線初始化對象錯誤

#define CAN_INITBTR_ERR ? ? ? 0XFB ?//?

#define CAN_INITOUTCTL_ERR ? ?0XFA ?//??

#define CAN_INTCLKDIV_ERR ? ? 0XF9 ?//??

#define CAN_BUS_ERR ? ? ? ? ? 0XF8 ?//CAN總線錯誤

#define ID28_21 ? ?0X0A;

#define ID20_13 ? ?0X4A;

#define ID12_5 ? ? 0X6B;

#define ID4_0 ? ? ?0XE8; //低三位不影響設為0

//定義擴展模式數據幀ID

//Basic CAN模式標準幀格式 :幀信息,TX識別碼1-2,TX數據字節1-8

//Pelican模式擴展幀格式 ? :幀信息,TX識別碼1-4,TX數據字節1-8

extern unsigned char xdata *SJA_BCANAdr;

bit SJA_Interface_Test(void);

bit Set_OutClock(unsigned char outclock);//只能用于復位模式

bit SET_ACR(unsigned char BCAN_ACR0,unsigned char BCAN_ACR1,unsigned char BCAN_ACR2,unsigned char BCAN_ACR3);

bit SET_AMR(unsigned char BCAN_AMR0,unsigned char BCAN_AMR1,unsigned char BCAN_AMR2,unsigned char BCAN_AMR3);

bit Set_Bandrate(unsigned char bandrate);//只能用于復位模式

bit Set_ContrREG(unsigned char CMD);//設置控制(模式)寄存器

bit Enter_RST_Mode(void);

bit Quit_RST_Mode(void);

bit CAN_CMD_PRG(unsigned char cmd);//命令請求

bit Set_IntEnable(unsigned char CMD);

unsigned char CAN_Write(unsigned char *SendDataBuf);

void CAN_Send_onebyte(unsigned char CAN_TX_data);

unsigned char SJA_Init(void);

void CAN_Send_Str(unsigned char *str);

#endif

5.sja1000.c

#include "sja1000.h"

sbit LED=P1^0;

unsigned char xdata *SJA_BCANAdr;

unsigned char RevceData[8];

//C語言指針說明以 * 為分隔符,

//“*” 前面的存儲類型修飾—指針所指向的對象數據的存儲位置;

//“*” 后面的存儲類型修飾—指針本身所分配的存儲位置。

//

//unsigned char xdata *P說明指針指向的對象是一個處于Xdata的元素,比如數組.

//xdata unsigned char *p表明指針本身位于Xdata,至于指向什么類型的地址,自由變換.

//所以unsigned char xdata *p; 和xdata unsigned char *p ? 不一樣。說明的是2回事。

//而:xdata unsigned char *p; 和 unsigned char ?* xdata p; 完全一樣。

//因為C寫法中允許“最前面的存儲類型修飾符修飾最后面的對象。”

/*****************************************************************

函數功能:檢測SJA1000與CPU數據接口是否正確連接

入口參數:

返回參數:1正確 0錯誤

說明:

******************************************************************/

bit SJA_Interface_Test(void)

{

SJA_BCANAdr=REG_TEST;

*SJA_BCANAdr=0xAA;

if(*SJA_BCANAdr==0XAA)

return 1;

else return 0;

}

/*****************************************************************

函數功能:設置分頻系數 ?工作模式

入口參數:

返回參數:1設置成功 0失敗

說明:此處設置為PeliCAN模式,終止CAN輸入比較器(復位模式),關閉時鐘輸出

******************************************************************/

bit Set_OutClock(unsigned char outclock)

{

SJA_BCANAdr=REG_CDR ;

*SJA_BCANAdr=outclock;

if(*SJA_BCANAdr==outclock)

return 1;

else return 0;

}

/*****************************************************************

函數功能:設置驗收驗收代碼寄存器和接收屏蔽碼寄存器 只有在復位模式下才能訪問該寄存器

入口參數:各個寄存器的寫入值

返回參數:1設置成功 0 設置失敗

說明:設置CAN節點的通訊對象,允許接收的報文,是由AMR和ACR共同決定的.

PeliCAN工作模式下濾波模式分為:

1.單濾波器模式 模式寄存器(MOD.3=1)

這種濾波模式可以定義一個4字節長慮波器 。慮波器字節和信息字節之位的對應關系取決于當前接收幀的格式。

標準幀:11位標識符、RTR位、數據場前連個字節參與濾波。對于參與濾波的數據,所有AMR為0的位所對應的ACR位

和參與濾波數據的對應位必須相同才算驗收通過。如果由于置位RTR位而沒有數據字節,或因為設置相應的數據長度代碼

而沒有或只有一個數據字節,報文也會被接收。ACR1和AMR1的低四位是不用的,此時可將AMR1.3-AMR1.0設為1,定為不影響

擴展幀:29位標識符和RTR位參與濾波。此時ACR3和AMR3的最低兩位是不用的。將AMR3.1、AMR3.0置1,定為不影響。

2.雙濾波器模式 模式寄存器(MOD.3=0)至少有一個濾波器驗收通過,數據才能正常接收。

接收標準幀:第一個濾波器由ACR0、ACR1、AMR0、AMR1及ACR3、AMR3的低四位組成。11位標識符、RTR位和數據場的第一個字節參與濾波

在RTR位置位1或數據長度代碼是0,表示沒有數據字節存在時,只要從開始到RTR位的部分都表示接收。信息就可以通過濾波器1

第二個濾波器由ACR2、AMR2及ACR3、AMR3的高四位組成。11位標識符和RTR位參與濾波。

如果沒有數據字節向濾波器請求過濾,AMR1和AMR3的低四位必須被置1,表示不影響。此時兩個濾波器的識別工作都是驗證

包括RTR在內的整個標準識別碼。

接收擴展幀:定義的兩個濾波器是相同的

第一個濾波器由ACR0、ACR1和AMR0、AMR1構成

第二個濾波器由ACR2、ACR3和AMR2、AMR3構成

兩個濾波器都只比較擴展識別碼的前兩個字節即29位識別碼中的搞16位

******************************************************************/

bit SET_ACR(unsigned char BCAN_ACR0,unsigned char BCAN_ACR1,unsigned char BCAN_ACR2,unsigned char BCAN_ACR3)

{

SJA_BCANAdr=REG_ACR0;

*SJA_BCANAdr=BCAN_ACR0;

SJA_BCANAdr=REG_ACR1;

*SJA_BCANAdr=BCAN_ACR1;

SJA_BCANAdr=REG_ACR2;

*SJA_BCANAdr=BCAN_ACR2;

SJA_BCANAdr=REG_ACR3;

*SJA_BCANAdr=BCAN_ACR3;

if(*SJA_BCANAdr!=BCAN_ACR3) ?return 0;

return 1;

}

bit SET_AMR(unsigned char BCAN_AMR0,unsigned char BCAN_AMR1,unsigned char BCAN_AMR2,unsigned char BCAN_AMR3)

{

SJA_BCANAdr=REG_AMR0;

*SJA_BCANAdr=BCAN_AMR0;

SJA_BCANAdr=REG_AMR1;

*SJA_BCANAdr=BCAN_AMR1;

SJA_BCANAdr=REG_AMR2;

*SJA_BCANAdr=BCAN_AMR2;

SJA_BCANAdr=REG_AMR3;

*SJA_BCANAdr=BCAN_AMR3;

if(*SJA_BCANAdr!=BCAN_AMR3) return 0;

return 1;

}

/*****************************************************************

函數功能:設置CAN總線通信波特率

入口參數:波特率

返回參數:1設置成功 0設置失敗

說明:該子程序只能用于復位模式

因為總線定時器BTRO-BTR1只有在復位模式下才能讀寫操作,工作模式只讀

******************************************************************/

bit Set_Bandrate(unsigned char bandrate)

{

unsigned char BR_Num= bandrate,BTR0_num,BTR1_num;

switch (BR_Num)

{

case ByteRate_10k:

BTR0_num=BTR0_Rate_10k;

BTR1_num=BTR0_Rate_10k;

break;

case ByteRate_20k:

BTR0_num=BTR0_Rate_20k;

BTR1_num=BTR0_Rate_20k;

break;

case ByteRate_40k:

BTR0_num=BTR0_Rate_20k;

BTR1_num=BTR0_Rate_20k;

break;

case ByteRate_50k:

BTR0_num=BTR0_Rate_50k;

BTR1_num=BTR0_Rate_50k;

break;

case ByteRate_80k:

BTR0_num=BTR0_Rate_80k;

BTR1_num=BTR0_Rate_80k;

break;

case ByteRate_100k:

BTR0_num=BTR0_Rate_100k;

BTR1_num=BTR0_Rate_100k;

break;

case ByteRate_125k:

BTR0_num=BTR0_Rate_125k;

BTR1_num=BTR0_Rate_125k;

break;

case ByteRate_200k:

BTR0_num=BTR0_Rate_200k;

BTR1_num=BTR0_Rate_200k;

break;

case ByteRate_250k:

BTR0_num=BTR0_Rate_250k;

BTR1_num=BTR0_Rate_250k;

break;

case ByteRate_400k:

BTR0_num=BTR0_Rate_400k;

BTR1_num=BTR0_Rate_400k;

break;

case ByteRate_500k:

BTR0_num=BTR0_Rate_500k;

BTR1_num=BTR0_Rate_500k;

break;

case ByteRate_1000k:

BTR0_num=BTR0_Rate_1000k;

BTR1_num=BTR0_Rate_1000k;

break;

default :return 0;break;

}

SJA_BCANAdr=REG_BTR0;

*SJA_BCANAdr=BTR0_num;

if(*SJA_BCANAdr!=BTR0_num) return 0;

SJA_BCANAdr=REG_BTR1;

*SJA_BCANAdr=BTR1_num;

if(*SJA_BCANAdr!=BTR1_num) return 0;

return 1;

}

/*****************************************************************

函數功能:設置控制(模式)寄存器

入口參數:寫入的命令

返回參數:

說明:模式寄存器的內容是用來改變CAN 控制器的行為

******************************************************************/

bit Set_ContrREG(unsigned char CMD)

{

SJA_BCANAdr ?= REG_CONTROL;//控制寄存器

*SJA_BCANAdr=CMD;

if(*SJA_BCANAdr==CMD) return 1;

else return 0;

}

/*****************************************************************

函數功能:設置復位請求和單濾波工作模式

入口參數:

返回參數:

說明:

******************************************************************/

bit Enter_RST_Mode(void)

{

SJA_BCANAdr ?= REG_CONTROL;//控制寄存器

*SJA_BCANAdr=0x09; ? ? ? ? ? //置位復位請求 和單濾波模式

if((*SJA_BCANAdr&0x01) == 1)

return ? 1;

else

return ? 0;

}/*****************************************************************

函數功能:

入口參數:

返回參數:

說明:

******************************************************************/

bit Quit_RST_Mode(void)

{

SJA_BCANAdr=REG_CONTROL; ? ? ? ? ? ?//退出 復位模式

*SJA_BCANAdr=*SJA_BCANAdr&0xfe;

if((*SJA_BCANAdr&0X01)==0)

return 1;

else return 0;

}

/*****************************************************************

函數功能:發送命令請求,并返回請求結果

入口參數:

返回參數:0請求成功 1請求失敗

說明:

******************************************************************/

bit ?CAN_CMD_PRG(unsigned char cmd)

{

SJA_BCANAdr=REG_COMMAND; ? ? ? ? ? ?//訪問地址指向命令寄存器

*SJA_BCANAdr=cmd; ? ? ? ? ? ? ? ? ? //啟動命令字

switch(cmd)

{

case ?TR_CMD: ? ?//發送請求

return ? ?1;

break;

case ?SRR_CMD: ? ? //CMR.4自接收模式

return 1;

break;

case ?AT_CMD: ? ? ?//CMR.1中止發送位

SJA_BCANAdr = REG_STATUS; ? //訪問地址指向狀態寄存器

if((*SJA_BCANAdr & 0x20)==0) //判斷是否正在發送 (0正在發送 1等待空閑)

return ?1;

else

return ?0;

break;

case ?RRB_CMD: ? // CMR.2釋放接收緩沖器

SJA_BCANAdr = REG_STATUS; ? //訪問地址指向狀態寄存器

if((*SJA_BCANAdr & 0x01)==1) //判斷接收緩沖器是否為空 (0為空 1不為空)

return ?0;//若不為空 則釋放接收緩沖器失敗

else

return ?1;

break;

case ?COS_CMD: ?//CMR.3清除數據溢出

SJA_BCANAdr = REG_STATUS;

if((*SJA_BCANAdr & 0x02)==0)//判斷清除溢出是否成功

return ?1;

else

return ?0;

break;

default:

return ?0;

break;

}

}

/*****************************************************************

函數功能:設置中斷使能寄存器

入口參數:

返回參數:

說明:

******************************************************************/

bit Set_IntEnable(unsigned char CMD)

{

SJA_BCANAdr=REG_INTENABLE; ? //SJA_BaseAdr+0x00 ?控制寄存器

*SJA_BCANAdr=CMD;

if (*SJA_BCANAdr == CMD)

return 1;

else

return 0;

}

unsigned char CAN_Write(unsigned char *SendDataBuf)

{

unsigned char temp;

SJA_BCANAdr = REG_STATUS;

temp=*SJA_BCANAdr;

if ((temp&0x08)==0) return ?1; ? ?//上次發送未完成

if ((temp&0x04)==0) return ?2; ? ?//發送緩沖區是否鎖定

if ((temp&0x10)==0x10) return 3; ?//判斷是否正在接收

SJA_BCANAdr = REG_RXBuffer1; ? ? ?//訪問地址指向發送緩沖區1,修改成頭文件

memcpy(SJA_BCANAdr,SendDataBuf,4); //將SendDataBuf起始地址的的4個字節數據拷貝到 SJA_BCANAdr 發送緩沖區中

CAN_CMD_PRG(TR_CMD); ? ? ? ? ? ? //請求發送

return 0;

}

//CAN發送一個字節

void CAN_Send_onebyte(unsigned char CAN_TX_data)

{

unsigned char temptt;

loop:

SJA_BCANAdr = REG_STATUS;

temptt=*SJA_BCANAdr;

//temptt=Read_SJA1000(REG_STATUS);

if((temptt&0x04)==0x00) ?goto loop;//循環檢測等待

//可以向發送緩沖器寫數據

SJA_BCANAdr = REG_RXBuffer1;

*SJA_BCANAdr=0x01;

SJA_BCANAdr = REG_RXBuffer2;

*SJA_BCANAdr=0x28;

SJA_BCANAdr = REG_RXBuffer3;

*SJA_BCANAdr=0x00;

SJA_BCANAdr = REG_RXBuffer4;

*SJA_BCANAdr=CAN_TX_data;

//數據發送請求

CAN_CMD_PRG(TR_CMD);

}

void CAN_Send_Str(unsigned char *str)

{

unsigned char temptt,length;

loop:

SJA_BCANAdr = REG_STATUS;

temptt=*SJA_BCANAdr;

//temptt=Read_SJA1000(REG_STATUS);

if((temptt&0x04)==0x00) ?goto loop;//循環檢測等待

//可以向發送緩沖器寫數據

length=strlen(str);

SJA_BCANAdr = REG_TXBuffer1;

*SJA_BCANAdr=0x80|length; //設置發送信息幀位擴展數據幀 和發送的數據字節長度

SJA_BCANAdr = REG_TXBuffer2;

*SJA_BCANAdr=ID28_21;

SJA_BCANAdr = REG_TXBuffer3;

*SJA_BCANAdr=ID20_13;

SJA_BCANAdr = REG_TXBuffer4;

*SJA_BCANAdr=ID12_5;

SJA_BCANAdr =REG_TXBuffer5;

*SJA_BCANAdr=ID4_0;

SJA_BCANAdr = REG_TXBuffer6;

memcpy(SJA_BCANAdr,str,length);

//數據發送請求

CAN_CMD_PRG(TR_CMD);

}

/*****************************************************************

函數功能:SJA1000初始化

入口參數:

返回參數:

說明:

******************************************************************/

unsigned char SJA_Init(void)

{

bit s;

EA=0;//關總中斷

if (!Enter_RST_Mode()) return 1; //設置模式(控制)寄存器 置位復位請求位 和驗收濾波模式位(單濾波模式)

if (!SJA_Interface_Test()) return 2; //!!!!!我覺得此處邏輯上應先測試SJA1000再進行復位操作

//0XC8=1100 0000 最高位CDR.7(CANmode位)=1=Pelican模式(=0=BasicCAN模式)

//置位CDR.6 可以中止CAN 輸入比較器 CDR.3置位關閉external CLKOUT CD2-CD0 設置時鐘分頻

//設置為PeliCAN模式,終止CAN輸入比較器(復位模式),關閉時鐘輸出

if (!Set_OutClock(0XC8)) return 3;

//設置濾波器濾波條件

SET_ACR(0x0A,0x4A,0x6B,0x78);

s=SET_AMR(0x00,0x00,0x00,0x03);

if (s==0) return 4;

if (!Set_Bandrate(ByteRate_1000k)) return 5;//設置通信波特率

if (!Set_IntEnable(0x1D)) return 6;

SJA_BCANAdr=REG_OCR ; ? ? ? ? ? ? ? //輸出控制寄存器

*SJA_BCANAdr=0x1a; ? ? ? ? ? ? ? ? ?//設置為正常輸出模式

if(!Quit_RST_Mode()) return 7;

EA=1;

PX0=1;//外部中斷0定義為高優先級中斷

EX0=1;//開啟外部中斷

IT0=0;//外部中斷0觸發方式選擇位 此處設置為低電平觸發

return 0;

}

void Int0_ISR() interrupt 0

{

unsigned char tt,length;

SJA_BCANAdr=REG_INTERRUPT;//中斷寄存器

if((*SJA_BCANAdr)&0x01) ? //產生了接收中斷

{

UART_Send_String("SJA1000 Has recieved data!\r\n");

SJA_BCANAdr=REG_RXBuffer1;//CAN地址16 ?TX幀信息 低四位DLC.3-DLC.0數據長度代碼為

tt=*SJA_BCANAdr;

length=tt&0x0F;//獲取數據長度代碼

if ((tt&0x40)!=0x40) ? ? ? ? ? ? ? ? //最高位為幀格式位=0數據幀 ? =1 為遠程幀

{

SJA_BCANAdr=REG_RXBuffer6; ? ? ? ? ? //宏定義的變量不能memcpy(RevceData,REG_RXBuffer4,8);

memcpy(RevceData,SJA_BCANAdr,length);//功能:由src所指內存區域復制count個字節到dest所指內存區域

//測試用的主要是把接收到的數據在發出去,驗證數據的正確

//以下代碼是發送到串

UART_Send_String(RevceData);

}

CAN_CMD_PRG(RRB_CMD); ? ? ? ? ? ? ? ?//釋放SJA1000接收緩沖區,****已經修改

}

}

總結

以上是生活随笔為你收集整理的sja1000编程c语言,基于51单片机SJA1000 CAN通讯实现(C语言程序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

九色最新网址 | 亚洲五月综合 | 国产亚洲精品久久久网站好莱 | 国产v视频 | 97碰碰精品嫩模在线播放 | 天天操天天色天天 | 久久美女电影 | 97视频免费 | av成人免费| 91九色蝌蚪在线 | 亚洲视频www | 很黄很污的视频网站 | 日韩精品在线看 | 成人黄色电影在线观看 | 国产 欧美 日产久久 | 91激情视频在线播放 | 国产又粗又猛又爽又黄的视频免费 | 天天操夜操视频 | 国产在线一区二区三区播放 | 欧美日韩不卡一区二区三区 | 日日夜夜免费精品视频 | 有码中文字幕在线观看 | 在线免费黄色av | 国产呻吟在线 | 国产成人一级电影 | 日韩欧美在线视频一区二区 | 日韩aa视频| 波多野结衣动态图 | 天天操夜夜叫 | 成人国产综合 | 亚洲日本中文字幕在线观看 | 国产系列在线观看 | 超碰97国产精品人人cao | 日韩精品久久中文字幕 | 黄色片亚洲 | 国产综合91 | 国产精品一区二区美女视频免费看 | 韩国一区视频 | 国产精品一区二区白浆 | 欧美a视频在线观看 | 欧美最爽乱淫视频播放 | 亚州av成人 | 中文电影网 | 一级黄色片毛片 | 日韩欧美精品在线 | 国产精品尤物 | 亚洲国产一二三 | 亚洲激情久久 | 久久久国产精品人人片99精片欧美一 | www国产亚洲精品久久麻豆 | 日韩中文字幕第一页 | 99久久久久免费精品国产 | 亚洲九九影院 | 久久综合综合久久综合 | 青草视频在线播放 | 国产精品久久久久久久久久久杏吧 | 亚洲伊人第一页 | 成av人电影 | 国产成人精品电影久久久 | 亚洲午夜在线视频 | www.天天成人国产电影 | 成年人视频在线 | 午夜性生活片 | 精品国产一区二区三区久久 | 黄色小说在线观看视频 | 深爱开心激情 | 五月婷婷综合久久 | 国产成人av福利 | a级片网站| 免费黄色看片 | 一级电影免费在线观看 | 日韩欧美一区二区三区在线观看 | 91香蕉视频色版 | 四虎影视成人 | 国产999精品久久久久久麻豆 | 国产黄在线 | 国产在线日本 | 97成人在线观看视频 | 91福利专区| 成年人在线观看视频免费 | 国产一区在线视频 | 国产精品系列在线 | 激情图片久久 | 99爱这里只有精品 | 激情五月五月婷婷 | 97视频人人 | 国产精品久久久久久久久费观看 | 17videosex性欧美 | 男女精品久久 | 综合黄色网 | 伊人官网 | 亚洲一区免费在线 | 中文字幕色婷婷在线视频 | 99热这里只有精品免费 | 黄色a大片 | 99精品久久99久久久久 | 黄色的网站在线 | 涩涩网站在线播放 | 99久久精品久久亚洲精品 | 中午字幕在线 | 超碰在线天天 | 在线视频1卡二卡三卡 | 黄色三几片 | 九九热中文字幕 | 亚洲精品美女视频 | 日韩精品一区二区免费 | 日韩中文字幕电影 | 四虎成人网 | 91视频麻豆| 日本中文字幕电影在线免费观看 | 国产精品毛片一区二区 | 超碰人人超 | 天天干天天干天天操 | 亚洲精品国产精品国自产 | 日韩av二区| 午夜影院三级 | 在线观看av国产 | av免费电影在线观看 | 国产免费一区二区三区最新6 | 午夜精品久久久久久久99热影院 | 97精品国产97久久久久久 | 日韩经典一区二区三区 | 成片视频在线观看 | www操操| 97超碰在线资源 | 免费看黄在线观看 | 成人av高清| 最新成人在线 | 国产精品入口麻豆 | 国产精品视频免费在线观看 | 国产成人亚洲精品自产在线 | 爱av在线网 | 在线 欧美 日韩 | 欧美专区日韩专区 | 中文在线免费看视频 | 日日干日日色 | 三日本三级少妇三级99 | 又黄又爽又色无遮挡免费 | 黄色小说视频在线 | 日韩av成人在线观看 | 日韩大片免费观看 | 欧洲精品久久久久毛片完整版 | 欧美国产三区 | 亚洲高清资源 | 欧美精品一级视频 | 久久99网| zzijzzij亚洲日本少妇熟睡 | 国产一区精品在线观看 | 国产精品美女久久久久久久久 | 色综合天天色 | 九九精品无码 | 97在线观看 | 国产在线色视频 | 69av在线播放 | 综合黄色网 | 久久精品专区 | 久久看视频 | 99精品小视频 | 毛片网站免费 | 欧洲在线免费视频 | 亚洲日本成人网 | 日韩午夜av | 欧美-第1页-屁屁影院 | 国产精品系列在线观看 | 成人午夜免费剧场 | 超碰97公开| 色综合久久久久久久久五月 | 日韩一二三区不卡 | www91在线 | 国内综合精品午夜久久资源 | 亚洲另类xxxx | 中文字幕在线专区 | 欧美动漫一区二区三区 | 久久91久久久久麻豆精品 | 国产精品久久电影网 | 亚洲精品视频在线观看免费视频 | 激情影音 | 蜜臀久久99精品久久久酒店新书 | 国产黄色播放 | 99在线精品视频 | 国产99久久久国产 | 人人爽人人爽人人爽人人爽 | 91精品啪啪 | 一级黄色网址 | 久久激情综合网 | 国产大陆亚洲精品国产 | 丁香综合五月 | 国产一在线精品一区在线观看 | 国产一区二区在线免费 | 97在线精品 | 在线黄av | 久久在线电影 | 色视频在线看 | 亚洲视频精品在线 | 青青五月天| 丁香高清视频在线看看 | 午夜精品视频一区 | 精品免费久久久久 | 亚洲性xxxx | 婷婷激情站 | 国产精品原创av片国产免费 | 一级淫片在线观看 | 亚洲 欧美 国产 va在线影院 | 婷婷新五月 | 九九在线视频免费观看 | 深爱五月激情五月 | 最近日韩免费视频 | 久久8| 久久婷婷五月综合色丁香 | 91日本在线播放 | 1024久久 | 91理论片午午伦夜理片久久 | 精品国产午夜 | 日韩亚洲国产中文字幕 | 超碰97.com | 国产主播99 | 久久ww| 波多野结衣在线视频免费观看 | 草久热 | 国产婷婷一区二区 | av在线播放一区二区三区 | 亚洲黄色在线观看 | 国产精品亚洲精品 | 99精品福利 | 91完整版| 97天天综合网| 水蜜桃亚洲一二三四在线 | 久久综合色播五月 | 亚洲色图 校园春色 | 日本精品视频在线播放 | 日韩精品在线一区 | 在线观看色视频 | 免费观看成人网 | 国产精品99久久久精品 | 国产日韩在线视频 | 日韩视频精品在线 | 国产九色视频在线观看 | 国产精品久久久久一区二区三区共 | 亚洲女同ⅹxx女同tv | 亚洲精选视频免费看 | 探花视频在线观看免费 | av在线进入 | 伊人丁香 | 狠狠操在线 | 五月天亚洲精品 | 精品国产欧美一区二区 | 天天干天天操天天做 | 在线观看深夜福利 | 国产视频一区在线免费观看 | 狠狠色狠狠色合久久伊人 | 日韩在线观看中文 | 国产成人91| 日韩视频一区二区在线观看 | 亚洲人人射| 伊人资源站 | 久久情侣偷拍 | 中文字幕在线观看亚洲 | 中文字幕在线观看第一页 | 日韩高清免费在线观看 | 成人久久精品视频 | 日韩三区在线 | 国产一区二区精品 | 色wwww| 久久综合狠狠综合 | 欧美,日韩 | 成人av电影在线观看 | 五月av在线| 国产亚洲精品久久网站 | 欧美另类xxx | 久草在线资源免费 | 黄网站色成年免费观看 | 在线看一区二区 | 99精品免费久久久久久日本 | 免费观看视频的网站 | 天天综合导航 | 在线精品视频在线观看高清 | 黄色三级免费观看 | 久草视频网 | 91污污 | 亚洲成熟女人毛片在线 | 99久久激情视频 | 成年人免费电影在线观看 | 国产高清视频在线播放 | 国产成人一区二区三区在线观看 | 精精国产xxxx视频在线播放 | 亚洲色图av | 国产视频精选在线 | 天天干天天做天天操 | 国产在线观看,日本 | 国内精品久久久久影院男同志 | 九九色在线观看 | 亚洲欧美在线观看视频 | 国产一区二区在线观看免费 | 欧美日韩激情视频8区 | 中文字幕亚洲国产 | 99av国产精品欲麻豆 | 国产精品黄色影片导航在线观看 | 久久狠狠亚洲综合 | 欧美一级淫片videoshd | 91精品久久香蕉国产线看观看 | 精品99视频 | 最新高清无码专区 | 午夜精品久久久久久久99婷婷 | 国产日本高清 | 国产一区二区在线播放 | 国产成人61精品免费看片 | 91大神视频网站 | 天天色天天上天天操 | 精品久久一区二区三区 | 91久久丝袜国产露脸动漫 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产精品成人av久久 | 精品美女久久久久 | 免费av 在线| 日韩xxx视频 | 亚洲欧美精品一区 | 国产精品不卡在线观看 | 911免费视频| av电影中文字幕在线观看 | 99久久久久久 | 亚洲精品乱码久久久久 | 亚洲综合导航 | 久久草精品 | 亚洲一区二区三区四区在线视频 | 麻豆成人网 | 久久久久国产a免费观看rela | 色综合人人 | 三级性生活视频 | 久草在在线视频 | 毛片网在线观看 | 久久久精品影视 | 免费观看久久 | 国产精品福利一区 | 五月综合激情网 | 国产免费区 | 特级片免费看 | 免费看91的网站 | 97视频免费观看2区 亚洲视屏 | 国产精品中文字幕在线 | 日韩免费一区二区三区 | 欧美精品在线观看 | 国产精品破处视频 | 久久精品视频网址 | 一区免费观看 | 99在线视频网站 | 国产精品久久久久av福利动漫 | 久久视频这里有久久精品视频11 | 久久公开视频 | 香蕉影院在线播放 | 亚洲三级国产 | 精品在线视频一区二区三区 | 欧美一级特黄高清视频 | 超级碰视频 | 99se视频在线观看 | 国产69久久久 | 国产亚洲视频在线 | 久久一区国产 | 97人人网| 17videosex性欧美 | 人人草在线视频 | 久久爱资源网 | 日韩视频在线不卡 | 99在线国产 | 狠狠狠色丁香综合久久天下网 | 制服丝袜成人在线 | 999久久国精品免费观看网站 | 欧美最猛性xxxxx(亚洲精品) | 国产91学生粉嫩喷水 | 99视频在线播放 | 天天干.com| 亚洲人在线视频 | 国产日产欧美在线观看 | 91九色国产蝌蚪 | www.夜夜操 | 免费av小说| 中文av在线播放 | 亚洲成人黄色在线 | 欧美日韩18| 欧美性猛片, | 久久久国产精品麻豆 | 久久成人综合 | 国产人成在线视频 | 91免费日韩 | 三上悠亚一区二区在线观看 | 成人av影视在线 | 国产91免费观看 | 色先锋av资源中文字幕 | 四虎影视精品成人 | 成人资源网 | 热99在线视频 | 99热这里只有精品在线观看 | 色wwww| 夜夜夜夜爽| 911国产| 婷婷丁香五 | 国产丝袜制服在线 | 九九爱免费视频在线观看 | 视频成人永久免费视频 | 亚洲在线成人精品 | 韩日在线一区 | 日韩av成人在线 | 久99久精品| 中文日韩在线视频 | 国产999精品久久久久久 | 欧美激情综合色 | 久久国产精品电影 | 国产高清视频在线播放 | 97精品国产一二三产区 | 99色在线 | 美女视频黄在线观看 | 国产日本高清 | 欧美日本在线观看视频 | 一区二区免费不卡在线 | 中文字幕乱码电影 | 99精品久久精品一区二区 | 18网站在线观看 | 97视频在线免费观看 | 综合网婷婷 | 正在播放国产一区二区 | a在线观看视频 | 免费观看性生活大片 | 极品国产91在线网站 | 日韩在线一二三区 | 在线播放亚洲 | 精品国内自产拍在线观看视频 | 91久久国产自产拍夜夜嗨 | 国产福利网站 | 精品国产伦一区二区三区观看方式 | 天天激情综合网 | 亚洲一区二区视频 | 国产精品99久久免费黑人 | www.色就是色 | 黄色免费高清视频 | 久青草视频 | 欧美a影视| 国产欧美综合视频 | 91在线视频免费 | 偷拍福利视频一区二区三区 | 欧美一级片在线免费观看 | 五月综合婷 | 欧美黑人猛交 | 免费开视频 | 欧美a在线看 | 久久久久久久免费 | 国产小视频在线 | 欧美精品久久久久久久久免 | 成人aⅴ视频 | av无限看| 国产高清视频免费在线观看 | 伊人婷婷久久 | 婷婷久久综合九色综合 | 91精品视频播放 | 久久一区二区三区超碰国产精品 | 99久久精品国产亚洲 | 国产在线精品视频 | 国产精品综合久久久久久 | 97在线资源 | 国产精品高潮呻吟久久久久 | 中文字幕av免费在线观看 | 国产看片网站 | 日韩av三区| 正在播放亚洲精品 | 91久久国产综合精品女同国语 | 日本精品二区 | 九九涩涩av台湾日本热热 | 欧美国产日韩久久 | 国产999免费视频 | 在线成人中文字幕 | 911国产在线观看 | 在线播放一区二区三区 | 99久久超碰中文字幕伊人 | 丁香综合 | 久久久免费在线观看 | 久久超级碰视频 | 三级黄色片在线观看 | 91手机电影| 97狠狠干 | 在线导航av | 久久高清视频免费 | 99热9 | 五月天开心 | 九月婷婷综合网 | 伊人亚洲综合 | 91麻豆精品久久久久久 | 九色91福利 | 91传媒在线看 | 亚洲一级电影视频 | 在线日韩一区 | 国产破处在线播放 | 特级西西www44高清大胆图片 | 亚洲男人天堂a | 亚洲人人爱 | 最新亚洲视频 | 在线 欧美 日韩 | 日日干夜夜干 | 高清av影院| 伊人婷婷 | 蜜臀一区二区三区精品免费视频 | 色在线中文字幕 | 一区二区三区福利 | 成 人 黄 色 视频播放1 | 亚洲精品在线电影 | 日韩欧美视频免费观看 | 免费精品人在线二线三线 | 国产不卡精品 | 97国产大学生情侣白嫩酒店 | 日本精品一二区 | 四月婷婷在线观看 | 99在线观看免费视频精品观看 | 国内精品久久久久久久影视简单 | 亚洲精品久久久久久中文传媒 | 国产一级不卡视频 | 中字幕视频在线永久在线观看免费 | 成人97视频| 国产伦精品一区二区三区照片91 | 一区二区精品在线观看 | 国产成人一区在线 | 欧美二区在线播放 | 中日韩三级视频 | 国产一卡二卡在线 | 欧美另类xxx| 国产精品对白一区二区三区 | 日本黄色免费在线 | 91九色网站 | 欧美色图亚洲图片 | 超薄丝袜一二三区 | 日韩91在线 | 免费在线观看av网址 | 五月婷婷在线观看视频 | 偷拍久久久 | 欧美精品v国产精品v日韩精品 | 麻豆国产精品一区二区三区 | 国产精品自产拍在线观看中文 | 免费看十八岁美女 | 91av视频在线观看免费 | 日韩av美女| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲欧美国内爽妇网 | 日本爱爱免费 | 色综合欧洲 | 综合五月 | 香蕉视频在线免费 | 99在线播放 | 免费网站黄色 | 91成人精品在线 | 五月的婷婷| 欧美一区二区三区在线 | 激情喷水 | 日韩欧美国产激情在线播放 | av中文字幕网址 | 久久久久亚洲精品成人网小说 | 男女激情免费网站 | 久久无码精品一区二区三区 | 日韩中文字幕免费在线观看 | 天天干天天干天天 | 91在线精品一区二区 | 91av视频免费在线观看 | 五月天婷婷在线播放 | 国产在线毛片 | av中文字幕网站 | 九九热免费精品视频 | 狠狠做深爱婷婷综合一区 | 国产精品一区一区三区 | 成全在线视频免费观看 | 久久久三级视频 | 日韩一区二区三区不卡 | 在线国产能看的 | 97免费在线观看 | 久久九九国产精品 | 91在线精品视频 | www.99av| www.亚洲在线 | 久久国产精品久久国产精品 | 99视频精品免费观看, | 天天夜操| 九九久久电影 | 亚洲欧美激情精品一区二区 | 国产九九九精品视频 | 欧美精品xx | 精品在线视频一区 | 伊人宗合网 | 色九九影院 | 在线观看欧美成人 | 亚洲成人影音 | 三级性生活视频 | 香蕉视频在线免费 | 狠狠色丁香婷婷综合久久片 | 亚洲国产三级在线观看 | 欧美日韩免费视频 | h网站免费在线观看 | 成人超碰在线 | 久久在线播放 | 亚洲极色 | 激情久久伊人 | 精品视频亚洲 | 成人h视频 | 亚洲午夜久久久久久久久电影网 | 天天曰天天射 | 久久再线视频 | www.国产在线 | 欧美成年人在线观看 | 天天搞天天干 | 天天干天天拍天天操天天拍 | 亚洲成aⅴ人片久久青草影院 | 亚洲黑丝少妇 | 日韩一区二区三免费高清在线观看 | 9999免费视频 | 国内精品视频在线 | 久久成人在线 | 国产精品久久久毛片 | 美女一区网站 | 国产精品一区二区三区免费视频 | 成人av电影免费在线观看 | 亚洲国产精品电影在线观看 | 精品国产美女在线 | 久久免费看毛片 | 国产黄色在线观看 | 91久久精| 黄色毛片一级 | 99热高清 | 香蕉视频在线免费 | 国产九九九九九 | 色综合久久88色综合天天免费 | 国产99免费视频 | 日韩一级片观看 | 人人网av | 97操操| 久久免费成人 | 91精品一区国产高清在线gif | 国产99久久久国产精品 | 在线天堂v | 在线影院av | 国产精品成人国产乱 | 夜夜躁日日躁狠狠久久av | 日韩3区 | 国产真实精品久久二三区 | 97福利| 18+视频网站链接 | 九色91福利 | 久久精品99 | 欧美一二三视频 | 欧美成人tv | 午夜精品福利一区二区 | 综合网五月天 | 亚洲午夜大片 | 99精品国产高清在线观看 | 中文字幕在线观看完整版 | 一级性av | 色婷婷视频在线观看 | 精品国产一区二区三区av性色 | 一级黄色片在线观看 | 欧美精品一区二区性色 | 国产蜜臀av | 麻豆一精品传二传媒短视频 | av中文在线影视 | 久草在线观| 中文字幕在线观看完整版 | 九九久久久久久久久激情 | 欧美最猛性xxxxx(亚洲精品) | 2023av| 国产在线资源 | 日韩三区在线观看 | 国产成人精品一区二区三区在线 | 日韩精品免费一区二区三区 | 99色亚洲| 99在线视频播放 | 久久精品观看 | 亚洲天天在线日亚洲洲精 | 亚洲免费观看在线视频 | 91新人在线观看 | 久久婷婷精品 | 久久国产网 | 亚洲色影爱久久精品 | 成年人黄色av | 精品自拍网 | 国产永久免费高清在线观看视频 | 手机av在线不卡 | 网站在线观看日韩 | 久草在线免费播放 | www免费视频com━ | 国内久久 | 日韩精品最新在线观看 | 99视频免费观看 | 波多野结衣在线观看一区 | www日日 | 亚洲综合日韩在线 | 欧美日韩久久不卡 | av福利在线播放 | 色视频在线观看 | 一区二区三区四区五区在线 | 欧美精品久久久久久久久久丰满 | 国产精品嫩草影院123 | 99视频精品免费视频 | 久久国内免费视频 | av免费在线观看1 | 一级国产视频 | 国内揄拍国产精品 | 成人久久| a级国产乱理论片在线观看 特级毛片在线观看 | 91精品无人成人www | 在线成人免费av | 96精品在线 | 欧美特一级片 | 国产流白浆高潮在线观看 | 国产97在线看 | 国产原厂视频在线观看 | 亚洲精品乱码久久久一二三 | 探花视频免费观看 | 日日操日日插 | 一级电影免费在线观看 | 国产精品入口66mio女同 | 天天爽综合网 | 久久综合射| 国产女人免费看a级丨片 | 国产成人一区二区在线观看 | a级免费观看 | 一级一片免费视频 | zzijzzij亚洲成熟少妇 | 久久精彩免费视频 | 日本黄色免费播放 | 日本一区二区三区免费看 | 日日麻批40分钟视频免费观看 | 国产精品自拍av | 91精品久久久久久综合乱菊 | 国产麻豆精品免费视频 | 综合激情伊人 | 国产剧情一区 | 夜夜躁日日躁狠狠躁 | 亚洲国内在线 | 国产精品99久久久久久久久久久久 | 97在线成人 | 国产精品 欧美 日韩 | 国产精品一区二区av日韩在线 | 日韩午夜在线播放 | 在线观看视频免费播放 | 丰满少妇在线观看 | 欧美国产日韩一区二区 | 久草电影在线 | 开心色激情网 | 国产精品美女久久久 | 欧美日韩高清一区二区 | av大全在线免费观看 | 亚洲成人资源在线观看 | 午夜av在线电影 | 久久在线免费视频 | 国产精品免费av | 日韩一级电影网站 | 久久99精品国产一区二区三区 | 久久一视频 | 国产精品一区专区欧美日韩 | 国产成人av网址 | 日韩一级电影在线 | 五月综合激情网 | www.国产在线观看 | 五月婷婷狠狠 | 日日天天干 | a视频免费看 | 高清一区二区三区 | 日日操天天操狠狠操 | 日本中出在线观看 | 亚洲 欧美 变态 国产 另类 | 久久欧美综合 | 91在线免费公开视频 | 国产视频一区二区三区在线 | 免费日p视频 | wwwww.国产 | 欧美一级日韩三级 | 九色在线视频 | 中文字幕精品视频 | 久久九九免费视频 | 国产人成精品一区二区三 | 一级电影免费在线观看 | 亚洲国产成人精品在线观看 | 成人在线观看资源 | 黄色片毛片 | 亚洲成免费 | 肉色欧美久久久久久久免费看 | 高清视频一区 | 亚洲成人网av | 在线观看国产区 | 国产又粗又猛又爽又黄的视频先 | 日韩网站一区二区 | 欧美日韩精品在线免费观看 | 国产不卡一 | 日韩精品一区二区三区高清免费 | 亚洲综合成人专区片 | 成人av日韩| 五月婷久| 超碰在线中文字幕 | 四虎国产精品免费观看视频优播 | 日本中文在线观看 | 中文字幕第一页在线播放 | av视屏在线 | 探花视频在线版播放免费观看 | 最新日韩视频在线观看 | 激情婷婷色| 手机在线视频福利 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕刺激在线 | 国语对白少妇爽91 | 在线免费观看国产黄色 | 日韩精品久久久久久久电影竹菊 | av大片免费 | 欧美色精品天天在线观看视频 | 久久国产精品系列 | 九九久久国产精品 | 6699私人影院 | 精品麻豆入口免费 | www.狠狠插.com | www.久久免费 | 日韩中文字幕电影 | 99在线观看免费视频精品观看 | 久久久久国产精品视频 | av无限看 | 久久精品免费播放 | 久久九九影视 | 在线免费观看视频你懂的 | 色91在线视频 | 国产最新精品视频 | 亚洲黄色免费在线看 | 国产精品国产亚洲精品看不卡15 | 国产小视频精品 | 日本不卡123 | 99精品在线观看 | 在线视频精品 | 欧美日韩中文国产一区发布 | 亚洲精品理论片 | 九热精品 | 久久国产精品区 | 久久久久看片 | 婷婷色五 | 香蕉视频在线视频 | 国产精品成人aaaaa网站 | 久草在线视频资源 | av成人在线电影 | 国产小视频免费观看 | 成在线播放 | 99国产精品一区二区 | 亚洲综合激情 | 国产精品久久久免费看 | av.com在线 | 色播六月天| 四虎国产精品成人免费4hu | 最近中文字幕在线 | 亚洲国产电影在线观看 | 色悠悠久久综合 | 日韩美女av在线 | 国产福利一区在线观看 | 免费99精品国产自在在线 | 韩国av三级 | 天天做综合网 | 91亚洲精品久久久 | 久久久久免费视频 | 精品国产一二三四区 | 97超视频| 国产护士hd高朝护士1 | 国产精品尤物视频 | 最新色站| 亚洲电影影音先锋 | 天天要夜夜操 | 色一级片| av解说在线观看 | 亚洲综合成人在线 | 在线观看成人一级片 | 免费看污在线观看 | 久久精品福利 | 久久久精品欧美一区二区免费 | 久久综合九色综合97婷婷女人 | 国产剧情一区二区在线观看 | 操久久免费视频 | 亚洲狠狠丁香婷婷综合久久久 | 人人插人人搞 | 亚洲一区二区三区精品在线观看 | 国产精品人成电影在线观看 | 亚洲精品色 | 国产视频在线观看免费 | 欧洲精品视频一区二区 | 欧美性黄网官网 | 国产黄色免费看 | 欧美在线视频不卡 | 日韩三级视频在线观看 | 久久久亚洲国产精品麻豆综合天堂 | 97电影在线| 久久国产99 | 亚洲精品理论片 | 不卡电影一区二区三区 | 日韩精品中文字幕久久臀 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 黄色成人av | 中文一区在线 | 成人一级视频在线观看 | 欧美性春潮 | 精品96久久久久久中文字幕无 | 久久精品国产一区二区 | 欧美人人| 射射射av | 日本精品一区二区三区在线播放视频 | 成年人国产视频 | 国产香蕉视频 | 日韩久久视频 | 国产二区电影 | 国产黄色片免费 | 亚洲精品自拍视频在线观看 | 欧美日韩性视频 | 91正在播放 | 99热在线国产 | 2019天天干夜夜操 | 97超碰总站 | 天天爽天天碰狠狠添 | 人人干人人干人人干 | 亚洲成av人片在线观看无 | 久久综合99| 国产露脸91国语对白 | 国产色拍 | 欧美精品久久久久久久久久丰满 | 亚洲国产精品激情在线观看 | 亚洲成人av影片 | 视频三区| 99久久激情 | 91九色pron| 日韩欧美国产精品 | 99国产精品视频免费观看一公开 | 热久久国产精品 | 美女福利视频在线 | 亚洲第一色 | 亚洲第一色 | 天天射天天操天天 | 亚洲人成人99网站 | 久久av伊人 | 日本精品中文字幕在线观看 | 精品亚洲二区 | 欧美一区二区日韩一区二区 | 手机在线日韩视频 | 精品国产一区二区三区噜噜噜 | 美女久久久久 | 免费成人av | 亚洲综合色视频 | 精品国产伦一区二区三区观看体验 | 99热国产在线 | 日本黄色免费播放 | 在线导航av| 韩国在线一区二区 | 国产精品一区二区免费 | 国产精品一区二区视频 | 午夜精品一区二区三区视频免费看 | www.久久91| 黄色精品国产 | 国产无遮挡猛进猛出免费软件 | 国产一区二区在线精品 | 免费亚洲精品视频 | 99久在线精品99re8热视频 | 国产美女精彩久久 | 亚洲婷婷综合色高清在线 | 久久99视频 | 久久九九视频 | 日本中文字幕一二区观 | 日韩欧美综合视频 | 五月色婷 | 色综合久久中文字幕综合网 | 国产精品久久久久久久免费大片 | 99热在线精品观看 | 日本在线成人 | 久久五月天婷婷 | 国产精品免费久久久久 | 黄色一级在线视频 | 人人爱人人做人人爽 | 久久精品这里精品 | 五月天,com| 色99久久| 在线免费视频你懂的 | 国产偷国产偷亚洲清高 | 午夜.dj高清免费观看视频 | 97在线观看免费高清完整版在线观看 | 色插综合| 亚洲免费专区 | 欧美激情综合五月色丁香 | 国产精品12345 | 黄色三级在线观看 | 欧美特一级片 | 国产免费a | 国产免码va在线观看免费 | 97超碰免费| 我要看黄色一级片 | 狠狠干夜夜操 | 五月天色综合 | 久久久久久黄 | 成人91在线 | 欧美精品一区在线发布 | 日韩精品一区二区三区水蜜桃 | 久久久网| 亚洲国产精品人久久电影 | 91麻豆看国产在线紧急地址 | 日日综合网 | 欧美91精品国产自产 | 国产资源免费在线观看 | 操操操操网 | 欧美精品三级 | 久久热首页 |