📄 can.lis
字号:
009E ; write_sja(RXERR,0x00);
009E 2227 clr R18
00A0 0EE0 ldi R16,14
00A2 BFDF rcall _write_sja
00A4 .dbline 111
00A4 ; write_sja(TXERR,0x00);
00A4 2227 clr R18
00A6 0FE0 ldi R16,15
00A8 BCDF rcall _write_sja
00AA .dbline 112
00AA ; write_sja(ECC,0x00);
00AA 2227 clr R18
00AC 0CE0 ldi R16,12
00AE B9DF rcall _write_sja
00B0 .dbline 113
00B0 ; write_sja(RBSA,0x00); //缓存器起始地址寄存器设置为0
00B0 2227 clr R18
00B2 0EE1 ldi R16,30
00B4 B6DF rcall _write_sja
00B6 .dbline 115
00B6 ;
00B6 ; write_sja(ACR0,0x00); //acceptcode default ffffffff
00B6 2227 clr R18
00B8 00E1 ldi R16,16
00BA B3DF rcall _write_sja
00BC .dbline 116
00BC ; write_sja(ACR1,0x00);
00BC 2227 clr R18
00BE 01E1 ldi R16,17
00C0 B0DF rcall _write_sja
00C2 .dbline 117
00C2 ; write_sja(ACR2,0x00);
00C2 2227 clr R18
00C4 02E1 ldi R16,18
00C6 ADDF rcall _write_sja
00C8 .dbline 118
00C8 ; write_sja(ACR3,0x00);
00C8 2227 clr R18
00CA 03E1 ldi R16,19
00CC AADF rcall _write_sja
00CE .dbline 120
00CE ;
00CE ; write_sja(AMR0,0xff); //acceptmask default ffffffff
00CE 2FEF ldi R18,255
00D0 04E1 ldi R16,20
00D2 A7DF rcall _write_sja
00D4 .dbline 121
00D4 ; write_sja(AMR0,0xff);
00D4 2FEF ldi R18,255
00D6 04E1 ldi R16,20
00D8 A4DF rcall _write_sja
00DA .dbline 122
00DA ; write_sja(AMR0,0xff);
00DA 2FEF ldi R18,255
00DC 04E1 ldi R16,20
00DE A1DF rcall _write_sja
00E0 .dbline 123
00E0 ; write_sja(AMR0,0xff);
00E0 2FEF ldi R18,255
00E2 04E1 ldi R16,20
00E4 9EDF rcall _write_sja
00E6 .dbline 125
00E6 ;
00E6 ; write_sja(IER,0x01); //开放接收中断
00E6 21E0 ldi R18,1
00E8 04E0 ldi R16,4
00EA 9BDF rcall _write_sja
00EC .dbline 126
00EC ; write_sja(CMR,0x0c); //清除数据溢出和释放接收缓冲器;
00EC 2CE0 ldi R18,12
00EE 01E0 ldi R16,1
00F0 98DF rcall _write_sja
00F2 L15:
00F2 .dbline 128
00F2 ; do
00F2 ; {
00F2 .dbline 129
00F2 ; write_sja(MODE,0x08); //设置SJA1000 工作模式,单滤波接收工作模式
00F2 28E0 ldi R18,8
00F4 0027 clr R16
00F6 95DF rcall _write_sja
00F8 .dbline 130
00F8 ; }
00F8 L16:
00F8 .dbline 131
00F8 ; while((read_sja(MODE)&0x01)); //确认复位标志是否被删除
00F8 0027 clr R16
00FA 82DF rcall _read_sja
00FC 00FD sbrc R16,0
00FE F9CF rjmp L15
0100 .dbline 132
0100 ; SEI();
0100 7894 sei
0102 .dbline -2
0102 L3:
0102 00D0 rcall pop_gset1
0104 .dbline 0 ; func end
0104 0895 ret
0106 .dbsym l temp 1 c
0106 .dbsym r k 20 i
0106 .dbend
0106 .dbfunc e CanTransmit _CanTransmit fV
0106 ; status -> <dead>
.even
0106 _CanTransmit::
0106 .dbline -1
0106 .dbline 139
0106 ; }
0106 ;
0106 ; /*************************************************
0106 ; SJA1000发送子函数
0106 ; *************************************************/
0106 ; void CanTransmit(void)
0106 ; {
0106 .dbline 141
0106 ; uchar status;
0106 ; CLI(); //关中断
0106 F894 cli
0108 .dbline 142
0108 ; TransBuffer[0]=0x88;
0108 88E8 ldi R24,136
010A 80930F00 sts _TransBuffer,R24
010E .dbline 143
010E ; TransBuffer[1]=0x00;
010E 2224 clr R2
0110 20921000 sts _TransBuffer+1,R2
0114 .dbline 144
0114 ; TransBuffer[2]=0x00;
0114 20921100 sts _TransBuffer+2,R2
0118 .dbline 145
0118 ; TransBuffer[3]=0x00;
0118 20921200 sts _TransBuffer+3,R2
011C .dbline 146
011C ; TransBuffer[4]=0x00;
011C 20921300 sts _TransBuffer+4,R2
0120 .dbline 147
0120 ; TransBuffer[5]=0x01;
0120 81E0 ldi R24,1
0122 80931400 sts _TransBuffer+5,R24
0126 .dbline 148
0126 ; TransBuffer[6]=0x02;
0126 82E0 ldi R24,2
0128 80931500 sts _TransBuffer+6,R24
012C .dbline 149
012C ; TransBuffer[7]=0x03;
012C 83E0 ldi R24,3
012E 80931600 sts _TransBuffer+7,R24
0132 .dbline 150
0132 ; TransBuffer[8]=0x04;
0132 84E0 ldi R24,4
0134 80931700 sts _TransBuffer+8,R24
0138 .dbline 151
0138 ; TransBuffer[9]=0x05;
0138 85E0 ldi R24,5
013A 80931800 sts _TransBuffer+9,R24
013E .dbline 152
013E ; TransBuffer[10]=0x06;
013E 86E0 ldi R24,6
0140 80931900 sts _TransBuffer+10,R24
0144 .dbline 153
0144 ; TransBuffer[11]=0x07;
0144 87E0 ldi R24,7
0146 80931A00 sts _TransBuffer+11,R24
014A .dbline 154
014A ; TransBuffer[12]=0xaa;
014A 8AEA ldi R24,170
014C 80931B00 sts _TransBuffer+12,R24
0150 L31:
0150 .dbline 155
0150 L32:
0150 .dbline 155
0150 ; while(!(read_sja(SR)&0x04)); //wait until reg2^2==1 ,即判断发送缓冲器的状态
0150 02E0 ldi R16,2
0152 56DF rcall _read_sja
0154 02FF sbrs R16,2
0156 FCCF rjmp L31
0158 .dbline 156
0158 ; write_sja(TXEFF,TransBuffer[0]); //扩展帧,数据长度为8个字节
0158 20910F00 lds R18,_TransBuffer
015C 00E1 ldi R16,16
015E 61DF rcall _write_sja
0160 .dbline 157
0160 ; write_sja(TXID0,TransBuffer[1]);
0160 20911000 lds R18,_TransBuffer+1
0164 01E1 ldi R16,17
0166 5DDF rcall _write_sja
0168 .dbline 158
0168 ; write_sja(TXID1,TransBuffer[2]);
0168 20911100 lds R18,_TransBuffer+2
016C 02E1 ldi R16,18
016E 59DF rcall _write_sja
0170 .dbline 159
0170 ; write_sja(TXID2,TransBuffer[3]);
0170 20911200 lds R18,_TransBuffer+3
0174 03E1 ldi R16,19
0176 55DF rcall _write_sja
0178 .dbline 160
0178 ; write_sja(TXID3,TransBuffer[4]);
0178 20911300 lds R18,_TransBuffer+4
017C 04E1 ldi R16,20
017E 51DF rcall _write_sja
0180 .dbline 161
0180 ; write_sja(TXDATA0,TransBuffer[5]);
0180 20911400 lds R18,_TransBuffer+5
0184 05E1 ldi R16,21
0186 4DDF rcall _write_sja
0188 .dbline 162
0188 ; write_sja(TXDATA1,TransBuffer[6]);
0188 20911500 lds R18,_TransBuffer+6
018C 06E1 ldi R16,22
018E 49DF rcall _write_sja
0190 .dbline 163
0190 ; write_sja(TXDATA2,TransBuffer[7]);
0190 20911600 lds R18,_TransBuffer+7
0194 07E1 ldi R16,23
0196 45DF rcall _write_sja
0198 .dbline 164
0198 ; write_sja(TXDATA3,TransBuffer[8]);
0198 20911700 lds R18,_TransBuffer+8
019C 08E1 ldi R16,24
019E 41DF rcall _write_sja
01A0 .dbline 165
01A0 ; write_sja(TXDATA4,TransBuffer[9]);
01A0 20911800 lds R18,_TransBuffer+9
01A4 09E1 ldi R16,25
01A6 3DDF rcall _write_sja
01A8 .dbline 166
01A8 ; write_sja(TXDATA5,TransBuffer[10]);
01A8 20911900 lds R18,_TransBuffer+10
01AC 0AE1 ldi R16,26
01AE 39DF rcall _write_sja
01B0 .dbline 167
01B0 ; write_sja(TXDATA6,TransBuffer[11]);
01B0 20911A00 lds R18,_TransBuffer+11
01B4 0BE1 ldi R16,27
01B6 35DF rcall _write_sja
01B8 .dbline 168
01B8 ; write_sja(TXDATA7,TransBuffer[12]);
01B8 20911B00 lds R18,_TransBuffer+12
01BC 0CE1 ldi R16,28
01BE 31DF rcall _write_sja
01C0 .dbline 169
01C0 ; write_sja(CMR,0x01); //发送请求命令
01C0 21E0 ldi R18,1
01C2 01E0 ldi R16,1
01C4 2EDF rcall _write_sja
01C6 L46:
01C6 .dbline 170
01C6 L47:
01C6 .dbline 170
01C6 ; while(!(read_sja(SR) & 0x08));//检测SR.3位,判断发送是否完成
01C6 02E0 ldi R16,2
01C8 1BDF rcall _read_sja
01CA 03FF sbrs R16,3
01CC FCCF rjmp L46
01CE .dbline 171
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -