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

📄 at90can128.lis

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01D8           ;                       send_time = 0;
 01D8 2224              clr R2
 01DA 20920900          sts _send_time,R2
 01DE                   .dbline 209
 01DE           ;               }
 01DE           L46:
 01DE                   .dbline 210
 01DE           ;       }
 01DE           L44:
 01DE                   .dbline 211
 01DE           ;       if (!display_mark)
 01DE 20900800          lds R2,_display_mark
 01E2 2220              tst R2
 01E4 69F4              brne L48
 01E6           X14:
 01E6                   .dbline 212
 01E6           ;       {
 01E6                   .dbline 213
 01E6           ;                       display_time++;
 01E6 80910A00          lds R24,_display_time
 01EA 8F5F              subi R24,255    ; addi 1
 01EC 80930A00          sts _display_time,R24
 01F0                   .dbline 214
 01F0           ;                       if (display_time >= 25)
 01F0 8931              cpi R24,25
 01F2 30F0              brlo L50
 01F4           X15:
 01F4                   .dbline 215
 01F4           ;                       {
 01F4                   .dbline 216
 01F4           ;                           display_time = 0;
 01F4 2224              clr R2
 01F6 20920A00          sts _display_time,R2
 01FA                   .dbline 217
 01FA           ;                               display_mark = TRUE;
 01FA 81E0              ldi R24,1
 01FC 80930800          sts _display_mark,R24
 0200                   .dbline 218
 0200           ;                       }
 0200           L50:
 0200                   .dbline 219
 0200           ;               }
 0200           L48:
 0200                   .dbline -2
 0200           L43:
 0200                   .dbline 0 ; func end
 0200 2990              ld R2,y+
 0202 2FBE              out 0x3f,R2
 0204 9991              ld R25,y+
 0206 8991              ld R24,y+
 0208 2990              ld R2,y+
 020A 1895              reti
 020C                   .dbend
 020C                   .dbfunc e CHA_Init _CHA_Init fV
                        .even
 020C           _CHA_Init::
 020C                   .dbline -1
 020C                   .dbline 224
 020C           ; }
 020C           ; 
 020C           ; 
 020C           ; void CHA_Init(void)
 020C           ; {
 020C                   .dbline 225
 020C           ;               CHA++;
 020C 80910100          lds R24,_CHA
 0210 8F5F              subi R24,255    ; addi 1
 0212 80930100          sts _CHA,R24
 0216                   .dbline 226
 0216           ;               if (CHA >= 100)
 0216 80910100          lds R24,_CHA
 021A 8436              cpi R24,100
 021C 18F0              brlo L53
 021E           X16:
 021E                   .dbline 227
 021E           ;                       CHA = 0;
 021E 2224              clr R2
 0220 20920100          sts _CHA,R2
 0224           L53:
 0224                   .dbline -2
 0224           L52:
 0224                   .dbline 0 ; func end
 0224 0895              ret
 0226                   .dbend
 0226                   .dbfunc e main _main fV
 0226           ;            len -> R22
 0226           ;              i -> R20
                        .even
 0226           _main::
 0226                   .dbline -1
 0226                   .dbline 231
 0226           ; }
 0226           ; 
 0226           ; void main(void)
 0226           ; {
 0226                   .dbline 234
 0226           ;       uint8 i,len;
 0226           ; 
 0226           ;       CLI();
 0226 F894              cli
 0228                   .dbline 235
 0228           ;       PORT_Init();
 0228 EBDE              xcall _PORT_Init
 022A                   .dbline 236
 022A           ;       TIMER0_Init();   
 022A 02DF              xcall _TIMER0_Init
 022C                   .dbline 237
 022C           ;       TIMER2_Init();   
 022C 0FDF              xcall _TIMER2_Init
 022E                   .dbline 238
 022E           ;       USART1_Init();
 022E 0E940000          xcall _USART1_Init
 0232                   .dbline 239
 0232           ;       TJA1040_DISABLE();
 0232 5C9A              sbi 0xb,4
 0234                   .dbline 240
 0234           ;       NOP();
 0234 0000              nop
 0236                   .dbline 241
 0236           ;       NOP();   
 0236 0000              nop
 0238                   .dbline 242
 0238           ;       TJA1040_ENABLE();
 0238 5C98              cbi 0xb,4
 023A                   .dbline 243
 023A           ;       NOP();
 023A 0000              nop
 023C                   .dbline 244
 023C           ;       NOP();
 023C 0000              nop
 023E                   .dbline 245
 023E           ;       CAN_Init();
 023E 0E940000          xcall _CAN_Init
 0242                   .dbline 246
 0242           ;       Watchdog_Init();
 0242 14DF              xcall _Watchdog_Init
 0244                   .dbline 247
 0244           ;       SEI();
 0244 7894              sei
 0246 52C0              xjmp L57
 0248           L56:
 0248                   .dbline 284
 0248           ; /*
 0248           ;   00000000:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
 0248           ;   00000010:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
 0248           ;   00000020:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
 0248           ;   00000030:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
 0248           ;   00000040:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
 0248           ;   00000050:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
 0248           ;   00000060:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
 0248           ;   00000070:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
 0248           ;   00000080:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
 0248           ;   00000090:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
 0248           ;   000000A0:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
 0248           ;   000000B0:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
 0248           ;   000000C0:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
 0248           ;   000000D0:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
 0248           ;   000000E0:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
 0248           ;   000000F0:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
 0248           ;   00000100:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
 0248           ;   00000110:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
 0248           ;   00000120:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
 0248           ;   00000130:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
 0248           ;   00000140:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
 0248           ;   00000150:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
 0248           ;   00000160:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
 0248           ;   00000170:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
 0248           ;   00000180:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
 0248           ;   00000190:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
 0248           ;   000001A0:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
 0248           ;   000001B0:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
 0248           ;   000001C0:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
 0248           ;   000001D0:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
 0248           ;   000001E0:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
 0248           ;   000001F0:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
 0248           ;   00000200:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
 0248           ; */  
 0248           ;       while (1)
 0248           ;       {
 0248                   .dbline 285
 0248           ;               CANPAGE = 0x00;
 0248 2224              clr R2
 024A 2092ED00          sts 237,R2
 024E                   .dbline 286
 024E           ;               if (CANSTMOB & (1 << RXOK))
 024E 2090EE00          lds R2,238
 0252 25FE              sbrs R2,5
 0254 3DC0              rjmp L59
 0256           X17:
 0256                   .dbline 287
 0256           ;               {
 0256                   .dbline 288
 0256           ;               CANSTMOB &= ~(1 << RXOK);
 0256 8091EE00          lds R24,238
 025A 8F7D              andi R24,223
 025C 8093EE00          sts 238,R24
 0260                   .dbline 289
 0260           ;                       for (i = 0 ; i < 16 ; i++)
 0260 4427              clr R20
 0262 09C0              xjmp L64
 0264           L61:
 0264                   .dbline 290
 0264           ;                               rec_Buf[i] = 0x00;
 0264 80E0              ldi R24,<_rec_Buf
 0266 90E0              ldi R25,>_rec_Buf
 0268 E42F              mov R30,R20
 026A FF27              clr R31
 026C E80F              add R30,R24
 026E F91F              adc R31,R25
 0270 2224              clr R2
 0272 2082              std z+0,R2
 0274           L62:
 0274                   .dbline 289
 0274 4395              inc R20
 0276           L64:
 0276                   .dbline 289
 0276 4031              cpi R20,16
 0278 A8F3              brlo L61
 027A           X18:
 027A                   .dbline 291
 027A           ;                       rec_Buf[0] = CANIDT1;
 027A 2090F300          lds R2,243
 027E 20920000          sts _rec_Buf,R2
 0282                   .dbline 292
 0282           ;                       rec_Buf[1] = CANIDT2;
 0282 2090F200          lds R2,242
 0286 20920100          sts _rec_Buf+1,R2
 028A                   .dbline 293
 028A           ;                       rec_Buf[2] = CANIDT4;
 028A 2090F000          lds R2,240
 028E 20920200          sts _rec_Buf+2,R2
 0292                   .dbline 294
 0292           ;                       if (rec_Buf[2] & 0x02)
 0292 21FE              sbrs R2,1
 0294 04C0              rjmp L67
 0296           X19:
 0296                   .dbline 295
 0296           ;                               rec_Buf[2] = 1;         //      remote frame
 0296 81E0              ldi R24,1
 0298 80930200          sts _rec_Buf+2,R24
 029C 03C0              xjmp L68
 029E           L67:
 029E                   .dbline 297
 029E           ;                       else
 029E           ;                               rec_Buf[2] = 0;         //      data frame
 029E 2224              clr R2
 02A0 20920200          sts _rec_Buf+2,R2
 02A4           L68:
 02A4                   .dbline 298
 02A4           ;                       len = CANCDMOB & 0x0F;
 02A4 6091EF00          lds R22,239
 02A8 6F70              andi R22,15
 02AA                   .dbline 299
 02AA           ;                       for (i = 0 ; i < len ; i++)
 02AA 4427              clr R20
 02AC 0AC0              xjmp L75
 02AE           L72:
 02AE                   .dbline 300
 02AE           ;                               rec_Buf[3+i] = CANMSG;
 02AE 80E0              ldi R24,<_rec_Buf+3
 02B0 90E0              ldi R25,>_rec_Buf+3
 02B2 E42F              mov R30,R20
 02B4 FF27              clr R31
 02B6 E80F              add R30,R24
 02B8 F91F              adc R31,R25
 02BA 2090FA00          lds R2,250
 02BE 2082              std z+0,R2
 02C0           L73:
 02C0                   .dbline 299
 02C0 4395              inc R20
 02C2           L75:
 02C2                   .dbline 299
 02C2 4617              cp R20,R22
 02C4 A0F3              brlo L72
 02C6           X20:
 02C6                   .dbline 301
 02C6           ;                       USART1_Begin_Send();
 02C6 0E940000          xcall _USART1_Begin_Send
 02CA                   .dbline 302
 02CA           ;                       CANCDMOB = 0x88;
 02CA 88E8              ldi R24,136
 02CC 8093EF00          sts 239,R24
 02D0                   .dbline 303
 02D0           ;         } 
 02D0           L59:
 02D0                   .dbline 304
 02D0           ;               CHA = CANGIT & 0x7F;
 02D0 8091DA00          lds R24,218
 02D4 8F77              andi R24,127
 02D6 80930100          sts _CHA,R24
 02DA                   .dbline 307
 02DA           ; //            DISPLAY_LED();
 02DA           ; //            if (display_mark)
 02DA           ;               {       
 02DA                   .dbline 308
 02DA           ;                       display_mark = FALSE;
 02DA 2224              clr R2
 02DC 20920800          sts _display_mark,R2
 02E0                   .dbline 309
 02E0           ;                       DISPLAY_Init(CHA);
 02E0 00910100          lds R16,_CHA
 02E4 1127              clr R17
 02E6 0E940000          xcall _DISPLAY_Init
 02EA                   .dbline 310
 02EA           ;               }
 02EA                   .dbline 311
 02EA           ;               WDR();
 02EA A895              wdr
 02EC                   .dbline 312
 02EC           ;       }
 02EC           L57:
 02EC                   .dbline 283
 02EC ADCF              xjmp L56
 02EE           X21:
 02EE                   .dbline -2
 02EE           L55:
 02EE                   .dbline 0 ; func end
 02EE 0895              ret
 02F0                   .dbsym r len 22 c
 02F0                   .dbsym r i 20 c
 02F0                   .dbend
 02F0           ; }
 02F0           ; 
 02F0           ; 
 02F0           ; //熔丝位配置(打勾表示0,不打勾表示1)
 02F0           ; //                 1                              0
 02F0           ; //WDTON               WDT关闭                         WDT打开
 02F0           ; //CKDIV8      禁止系统时钟8分频                  允许系统时钟8分频
 02F0           ; //EESAVE      全片擦除时擦除EERROM数据        全片擦除时保留EERROM数据        
 02F0           ; //DWEN               禁止单线调试                                       使能单线调试  
 02F0           ; 
 02F0           ; //BOD检测电平选择:
 02F0           ; //BODLEVEL2..0        BOD门槛电压
 02F0           ; //111 BOD禁止
 02F0           ; //110 1.8V
 02F0           ; //101 2.7V
 02F0           ; //100 4.3V                       (选择4.3V)
 02F0           ; //其余        保留
 02F0           ; 
 02F0           ; //时钟源选择:
 02F0           ; //系统时钟源  CKSEL3..0
 02F0           ; //低功耗晶振(小振幅)  1111-1000
 02F0           ; //大振幅晶振  0111-0110
 02F0           ; //低频晶振    0101-0100
 02F0           ; //128kHz内部RC振荡    0011
 02F0           ; //可校准内部RC振荡    0010
 02F0           ; //外部时钟    0000
 02F0           ; //保留选项    0001    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -