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

📄 test3.lst

📁 SJA1000驱动程序(分别用C&ASM书写)
💻 LST
📖 第 1 页 / 共 5 页
字号:
  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 + -