⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.lis

📁 MCU:ATMEGA8515 Frequence: 16M 描述:利用已有CAN TEST V1.0电路板进行调试, 可靠性测试已通过
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -