📄 can.lst
字号:
1: #include "pic18.h"
2: char CAN_Adress_H,CAN_Adress_L;
3: char CAN_Adress_EH,CAN_Adress_EL;
4: int CAN_FLAG;
5: unsigned int CAN_Delay_count=0;
6:
7: void initial()
8: {
9: INTCON=0X00;
10: ADCON1=0X07;
11: PIE1=0;
12: PIE2=0;
13: PIE3=0;
14: }
15:
16:
17: void initcan()
18: {
19: TRISB=(TRISB|0X08)&0XFB;
20: CANCON=0x80;
21: while((CANSTAT&0X80)==0)
22: {;
23: }
24: BRGCON1=0X01;
25: BRGCON2=0X90;
26: BRGCON3=0X42;
27: TXB0CON=0x03;
28: TXB0SIDL=CAN_Adress_L&0xE0;
29: TXB0SIDH=CAN_Adress_H;
30: TXB0DLC=0X08;
31: TXB0D0=0X00;
32: TXB0D1=0X01;
33: TXB0D2=0X02;
34: TXB0D3=0X03;
35: TXB0D4=0X04;
36: TXB0D5=0X05;
37: TXB0D6=0X06;
38: TXB0D7=0X07;
39: RXB0SIDL=CAN_Adress_L&0xE0;
40: RXB0CON=0X20;
41: RXB0DLC=0X08;
42: RXB0D0=0X00;
43: RXB0D1=0X00;
44: RXB0D2=0X00;
45: RXB0D3=0X00;
46: RXB0D4=0X00;
47: RXB0D5=0X00;
48: RXB0D6=0X00;
49: RXB0D7=0X00;
50:
51: RXF0SIDH=CAN_Adress_h;
52: RXF0SIDL=CAN_Adress_L;
53: RXM0SIDH=0XFF;
54: RXM0SIDL=0XE0;
55:
56: CANCON=0X40;
57:
58: while((CANSTAT&0X40)!=0)
59: {;}
60: PIR3=0X00;
61: PIE3=PIE3|0X01;
62: IRP3=IPR3|0X01;
63: }
64: void CAN_deal()
65: {
66: CAN_FLAG=0;
67: TXB0CON=TXB0CON&0ZF7;
68: TXB0D0=RXB0D0+1;
69: TXB0D1=RXB0D1+1;
70: TXB0D2=RXB0D2+1;
71: TXB0D3=RXB0D3+1;
72: TXB0D4=RXB0D4+1;
73: TXB0D5=RXB0D5+1;
74: TXB0D6=RXB0D6+1;
75: TXB0D7=RXB0D7+1;
76: }
77:
78: void interrupt HI_ISR()
79: {
80: if(RXB0IF==1)
81: {
82: CAN_FLAG=1;
83: BXB0IF=0;
84: BXB0FUL=0;
85: }
86:
87: main()
88: {
89: initial();
90: CAN_Adress_H=0x33;
91: CAN_Adress_L=0xE0;
92: initcan();
93: IPEN=1;
94: INTCON=INTCON|0XC0;
95: while(1){
96: if(CAN_FLAG==1)CAN_deal();
97: else if(CAN_Delay_count>0x2FE)
98: {
99: TXB0CON=TXB0CON|0X08;
100: CAN_Delay_count=0;
101: }
102: else CAN_Delay_count++;
103: }
104: }
105:
106:
107:
108:
109:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -