📄 test3.lst
字号:
0011 332 ERR_FLAG BIT 011H ;监测到错误标志
0012 333 OVER_FLAG BIT 012H ;超载标志
0013 334 DS_END_FLAG BIT 013H ;SJA1000发送完成标志
0014 335 WUI_FLAG BIT 014H ;唤醒SJA1000标志
336
0015 337 TOIR BIT 015H ;定时器T0标志
338
339 ;;;;;;;;;;;;;;;显示闪烁标志区;;;;;;;;;;;;;;;;;;;;
002F 340 FLIGHDISP DATA 02FH
007F 341 FLIGHBIT0 BIT 07FH
007E 342 FLIGHBIT1 BIT 07EH
007D 343 FLIGHBIT2 BIT 07DH
007C 344 FLIGHBIT3 BIT 07CH
007B 345 FLIGHBIT4 BIT 07BH
007A 346 FLIGHSYNC BIT 07AH
347
348 ;;;;;;;;;;;;;;显示位选选择;;;;;;;;;;;;;;;;;;
0097 349 EN_DISPBIT0 BIT P1.7
0096 350 EN_DISPBIT1 BIT P1.6
0095 351 EN_DISPBIT2 BIT P1.5
0094 352 EN_DISPBIT3 BIT P1.4
0093 353 EN_DISPBIT4 BIT P1.3
354
355 ;;;;;;;;;;;;;;;显示闪烁频率计数;;;;;;;;;;;;;;;;;;;;
007E 356 FLIGHCOUNT DATA 07EH
357
358 ;;;;;;;;;;;;;;;显示位选计数;;;;;;;;;;;;;;;;;;;;
007D 359 DISP_POINT DATA 07DH
360
361
0030 362 SEC_COUNT_L DATA 030H ;秒定时计数器
0031 363 SEC_COUNT_H DATA 031H
0032 364 SAVE_INT_INFO DATA 032H ;保存SJA1000中断寄存器的内容
0033 365 ERRORCOUNT DATA 033H ;错误计数
0034 366 DISPLAYBUF0 DATA 034H ;显示缓冲区34H--38H
367
368 ;
0040 369 SEND_DATA_BUF1 DATA 040H ;发送缓冲区
0041 370 SEND_DATA_BUF2 DATA 041H
0042 371 SEND_DATA_BUF3 DATA 042H
0043 372 SEND_DATA_BUF4 DATA 043H
0044 373 SEND_DATA_BUF5 DATA 044H
0045 374 SEND_DATA_BUF6 DATA 045H
0046 375 SEND_DATA_BUF7 DATA 046H
0047 376 SEND_DATA_BUF8 DATA 047H
0048 377 SEND_DATA_BUF9 DATA 048H
0049 378 SEND_DATA_BUF10 DATA 049H
379
0050 380 RCV_DATA_BUF1 DATA 050H ;接收缓冲区
0051 381 RCV_DATA_BUF2 DATA 051H
0052 382 RCV_DATA_BUF3 DATA 052H
A51 MACRO ASSEMBLER TEST3 06/03/2003 11:04:01 PAGE 7
0053 383 RCV_DATA_BUF4 DATA 053H
0054 384 RCV_DATA_BUF5 DATA 054H
0055 385 RCV_DATA_BUF6 DATA 055H
0056 386 RCV_DATA_BUF7 DATA 056H
0057 387 RCV_DATA_BUF8 DATA 057H
0058 388 RCV_DATA_BUF9 DATA 058H
0059 389 RCV_DATA_BUF10 DATA 059H
390
007C 391 ERROR_STATUS DATA 07CH ;错误状态表示
007F 392 TEST_DATA DATA 07FH ;测试发送数据
393
394 ;程序开始
0000 395 ORG 0000H
0000 020100 396 LJMP MAIN ;运行主程序
397
0003 398 ORG 0003H
0003 020250 399 LJMP BCAN_INT0 ;中断方式访问SJA1000程序
400
000B 401 ORG 000BH
000B 020288 402 LJMP T0_INTERRUPT ;定时器0中断
403
404
405
0100 406 ORG 0100H ;程序开始
0100 407 MAIN:
408
409 ;内部RAM清零
0100 787F 410 MOV R0,#07fH
0102 E4 411 CLR A
0103 F6 412 MOV @R0,A
0104 D8FD 413 DJNZ R0,$-1
0106 F6 414 MOV @R0,A
0107 758160 415 MOV SP,#60H ;设置SP
010A 120239 416 LCALL DELAY ;延时
010D 120239 417 LCALL DELAY
418
0110 120221 419 LCALL UART_INIT ;串口初始化
0113 12020D 420 LCALL T0_INIT
0116 D2AF 421 SETB EA
422
0118 753320 423 MOV ErrorCount, #020H ;32次,报错
011B 424 SJA1000_INIT0:
011B 120397 425 LCALL BCAN_CREATE_COMMUNATION ;调用SJA1000接口测试函数
011E 30D509 426 JNB F0, SJA1000_INIT1;接口正常,初始化SJA1000
0121 D533F7 427 DJNZ ErrorCount , SJA1000_INIT0 ;接口不正常,再检测
0124 757CFF 428 MOV ERROR_STATUS,#SJA_INTFACE_ERR
0127 0201AD 429 LJMP ERROR_HANDLE ;错误处理
430
012A 431 SJA1000_INIT1:
432
433 ;设置接收任何类型的标志符,波特率1000Kbps(16MHZ的晶体),关闭CLKOUT则,
434 ;ACR=任何值,AMR=0FFH,BTR0=084H,BTR1=0A7H,OC==0aaH,CDR=048H
435
436 ;首先设置参数
012A 753320 437 MOV ErrorCount, #020H ;32次,报错
012D 438 SJA1000_INIT11:
012D 7F0C 439 MOV R7, #012
012F 120429 440 LCALL BCAN_SET_BANDRATE ;设置波特率为100k
0132 213D 441 AJMP SJA1000_INIT2
442 ;JNB F0, SJA1000_INIT2 ;判断设置是否成功
0134 D533F6 443 DJNZ ErrorCount , SJA1000_INIT11 ;接口不正常,再检测
0137 757CFA 444 MOV ERROR_STATUS,#SJA_INITBTR_ERR
013A 0201AD 445 LJMP ERROR_HANDLE
446
447
013D 448 SJA1000_INIT2:
A51 MACRO ASSEMBLER TEST3 06/03/2003 11:04:01 PAGE 8
013D 753320 449 MOV ErrorCount, #020H ;32次,报错
0140 450 SJA1000_INIT21:
451 ;设置接收报文ID
0140 7F00 452 MOV R7, #00
0142 7EFF 453 MOV R6, #0FFH
0144 120473 454 LCALL BCAN_SET_OBJECT
0147 2155 455 AJMP SJA1000_INIT3
456
0149 30D509 457 JNB F0, SJA1000_INIT3 ;判断设置是否成功
014C D533F1 458 DJNZ ErrorCount , SJA1000_INIT21
014F 757CFB 459 MOV ERROR_STATUS,#SJA_INITOBJ_ERR
0152 0201AD 460 LJMP ERROR_HANDLE
461
0155 462 SJA1000_INIT3:
0155 753320 463 MOV ErrorCount, #020H ;32次,报错
0158 464 SJA1000_INIT31:
465 ;设置输出控制、时钟分频
0158 7FAA 466 MOV R7, #0AAH ;正常输出模式
015A 7E48 467 MOV R6, #048H ;使能内部比较器、禁止CLKOUT
015C 12048C 468 LCALL BCAN_SET_OUTCLK ;
015F 216D 469 AJMP SJA1000_INIT4
470
0161 30D509 471 JNB F0, SJA1000_INIT4 ;判断设置是否成功
0164 D533F1 472 DJNZ ErrorCount , SJA1000_INIT31
0167 757CF9 473 MOV ERROR_STATUS,#SJA_INITOCLK_ERR
016A 0201AD 474 LJMP ERROR_HANDLE
016D 475 SJA1000_INIT4:
016D 753320 476 MOV ErrorCount, #020H ;32次,报错
0170 477 SJA1000_INIT41:
0170 1203C0 478 LCALL BCAN_QUIT_RETMODEL ;退出复位状态
0173 2181 479 AJMP SJA1000_INIT5
0175 30D509 480 JNB F0, SJA1000_INIT5 ;判断设置是否成功
0178 D533F5 481 DJNZ ErrorCount , SJA1000_INIT41
017B 757CFE 482 MOV ERROR_STATUS,#0FEH;#SJA_INIT_ERR
017E 0201AD 483 LJMP ERROR_HANDLE
0181 484 SJA1000_INIT5:
0181 90FA00 485 MOV DPTR,#REG_CONTROL ;开放SJA1000内部功能中断
0184 74FE 486 MOV A,#0FEH ;中断开放
0186 F0 487 MOVX @DPTR,A
488 ; LCALL T0_INIT ;初始化定时器0
0187 D2B8 489 SETB PX0 ;设置外部中断0为最高优先级
0189 D288 490 SETB IT0 ;设置外部中断位边缘触发
018B 75A883 491 MOV IE,#083H ;开放中断EXO,总中断位EA,俄ET0
018E 492 LOOPER:
018E 101514 493 JBC TOIR,MS_DEALPRG
0191 494 LOOPER1:
0191 100F36 495 JBC RCV_GOOD,RCVDATA_PRG ;sja1000成功接收一帧,通知CPU处理
0194 496 LOOPER2:
0194 101057 497 JBC SEC_FLAG,SENDDATA_PRG ;一秒时间到,每秒发送一次
0197 498 LOOPER3:
0197 10110D 499 JBC ERR_FLAG,ERR_PRG ;错误标志,错误处理
019A 500 LOOPER4:
019A 10121C 501 JBC OVER_FLAG,DOVER_PRG ;超载处理
019D 502 LOOPER5:
019D 101321 503 JBC DS_END_FLAG,DSEND_PRG ;报文发送完成
01A0 504 LOOPER6:
01A0 101424 505 JBC WUI_FLAG,WOKE_PRG ;唤醒处理
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -