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

📄 sja.lst

📁 基于CAN总线通讯的AD7710数摸转换芯片的摸拟量的采集程序
💻 LST
字号:
C51 COMPILER V3.20,  SN-0  SJA                                                             07/11/02  14:13:21  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE SJA
OBJECT MODULE PLACED IN SJA.OBJ
COMPILER INVOKED BY: D:\QTH8052F\BIN\C51.EXE SJA.C OBJECTEXTEND DB SB

stmt level    source

   1          /*
               * sja.c
               *
               * CAN总线通讯
               *
               * 
               *						原作者:刘篷,孙占辉
               *
               *						修改:陈真勇(SA01010010)
               *						w3wind@sina.com or
               *						zychen@ustc.edu.cn
               *						中国科学技术大学自动化系
               *						2002/6/12
               */
  15          
  16          #include "type.h"
  17          #include "link.h"
  18          #include "delay.h"
  19          #include "watchdog.h"
  20          
  21          BYTE canmode[17];	/* 存放控制字 */
  22          BYTE TXdata[11];	/* 发送缓冲区 */
  23          BYTE RXdata[11];	/* 接收缓冲区 */
  24          
  25          
  26          void ctransmit() reentrant;
  27          
  28          
  29          /* direct access to 8051 memory areas */
  30          BYTE read_sja(BYTE addr) reentrant using 0
  31          {
  32   1      	return ((BYTE volatile*)0x30000L)[addr];
  33   1      }
  34          
  35          void write_sja(BYTE addr,BYTE val) reentrant using 0
  36          {
  37   1      	((BYTE volatile*)0x30000L)[addr]=val;
  38   1      }
  39          
  40          
  41          /*
               * function below used for SJA settings,system startup display
               */
  44          void set_canmode(BYTE md_addr,BYTE baud)
  45          {
  46   1      	canmode[0]=0x00;/*normal mode,single filter*/ 
  47   1      	canmode[1]=0x09;/*enable receive and overflow interrupt*/
  48   1      	canmode[2]=baud;/*bustime0*/
  49   1      	canmode[3]=0xA3;/*bustime1*/
  50   1      	canmode[4]=0x1A;/*output control*/
  51   1      	canmode[5]=0xC7;/*clock divide pelican mode,bypass comparator*/
  52   1      	canmode[6]=md_addr;
  53   1      	canmode[7]=0xff;
  54   1      	canmode[8]=0x03;
  55   1      	canmode[9]=0xff;
C51 COMPILER V3.20,  SN-0  SJA                                                             07/11/02  14:13:21  PAGE 2   

  56   1      	canmode[10]=0xc0;
  57   1      	canmode[11]=0xff;
  58   1      	canmode[12]=0xc0;
  59   1      	canmode[13]=0xff;
  60   1      }
  61          
  62          void send_reset_frame(BYTE md_addr) using 0
  63          {
  64   1      	BYTE temp_reg,relay_time;
  65   1      	
  66   1      	write_sja(1,0x08);
  67   1      	temp_reg=read_sja(4);
  68   1      	write_sja(4,0x00);
  69   1      	TXdata[0]=0x08;
  70   1      	TXdata[1]=0x40;
  71   1      	TXdata[2]=0x00;
  72   1      	TXdata[3]=0x5f;
  73   1      	TXdata[4]=0x05;
  74   1      	TXdata[5]=md_addr;
  75   1      	TXdata[6]=0x00;
  76   1      	TXdata[7]=0x00;
  77   1      	TXdata[8]=0x00;
  78   1      	TXdata[9]=0x00;
  79   1      	TXdata[10]=0x00;
  80   1      	relay_time=md_addr;
  81   1      	while(relay_time--){/* delay some time relate to module address in order to avoid crash */
  82   2      		delay(5);
  83   2      		clear_watchdog();
  84   2      	}
  85   1      	ctransmit();
  86   1      	write_sja(4,temp_reg);
  87   1      }
  88          /* init SJA1000 */
  89          void init_sja(BYTE md_addr,BYTE baud)
  90          {
  91   1      	set_canmode(md_addr,baud);
  92   1      
  93   1      	read_sja(3);
  94   1      	do{
  95   2      		write_sja(0,0x01);
  96   2      	}while(!(read_sja(0)&0x01));
  97   1      
  98   1      	write_sja(6,canmode[2]); /*bustime0 default 0xc3*/
  99   1      	write_sja(7,canmode[3]); /*bustime1 default 0xa3*/
 100   1      	write_sja(8,canmode[4]); /*output control*/
 101   1      	write_sja(31,canmode[5]); /*PeliCAN mode,bypass the input comparator*/
 102   1      	
 103   1      	write_sja(14,0x00);
 104   1      	write_sja(15,0x00);
 105   1      
 106   1      	write_sja(16,canmode[6]); /*acceptcode default ffffffff*/
 107   1      	write_sja(17,canmode[7]);
 108   1      	write_sja(18,canmode[8]);
 109   1      	write_sja(19,canmode[9]);
 110   1      
 111   1      	write_sja(20,canmode[10]); /*acceptmask default ffffffff*/
 112   1      	write_sja(21,canmode[11]);
 113   1      	write_sja(22,canmode[12]);
 114   1      	write_sja(23,canmode[13]);
 115   1      
 116   1      	write_sja(4,canmode[1]); 
 117   1      	write_sja(1,0x04);
C51 COMPILER V3.20,  SN-0  SJA                                                             07/11/02  14:13:21  PAGE 3   

 118   1      	/*can_mode[17],0 mode,1 inter,2 bustime0,3 bustime1,4 outputcontrol,5 clockdivide,6-9 acode,10-13 amask,1
             -4 errorlimit,15 RXecount,16 TXecount*/
 119   1      	do{
 120   2      		write_sja(0x00,canmode[0]); /*SJA1000 workingmode normal*/
 121   2      	}while(!read_sja(0)&0x08 );
 122   1      
 123   1      	send_reset_frame(md_addr);/*发出初始帧*/
 124   1      }
 125          
 126          void ctransmit() reentrant using 0
 127          { 
 128   1      	int j;
 129   1      	BYTE can_addr;
 130   1      	EA=0;
 131   1      
 132   1      	can_addr=16; 
 133   1      
 134   1      	do{
 135   2      	}while(! (read_sja(2)&0x04) ); /* wait until reg2^2==1 */
 136   1      
 137   1      	CANLAMP=0;/* light LED */
 138   1      	for(j=0;j<11;j++)	{/* write 11 bytes data to transmit buffer */ 
 139   2      		write_sja(can_addr++,TXdata[j]);
 140   2      	}
 141   1      	CANLAMP=1;/* disable LED */
 142   1      	write_sja(0x01,0x01);/* send out  */
 143   1      
 144   1      	EA=1;
 145   1      }
 146          
 147          /* 读取帧
               * return value: 0 successful,1 failure
               */
 150          BYTE receive() reentrant using 0
 151          {
 152   1      	int i=0;
 153   1      	BYTE addr=16;
 154   1      
 155   1      	if(read_sja(2)&0x01) 
 156   1      	{
 157   2      		CANLAMP=0; 
 158   2      		do{ 
 159   3      			for(i=0;i<11;i++){ 
 160   4      				RXdata[i]=read_sja(addr++);/*接收数据,读接收寄存器*/
 161   4      			}
 162   3      			write_sja(0x01,0x04);  /*清空寄存器*/
 163   3      		}while(read_sja(2)&0x01);
 164   2      		read_sja(3); 
 165   2      		CANLAMP=1;
 166   2      		return 0;
 167   2      	}
 168   1      	else
 169   1      	{
 170   2      		write_sja(0x01,0x0c); 
 171   2      		read_sja(3); 
 172   2      		return 1;
 173   2      	}
 174   1      }
 175          
C51 COMPILER V3.20,  SN-0  SJA                                                             07/11/02  14:13:21  PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


CANLAMP. . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0096H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
_send_reset_frame. . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  md_addr. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  temp_reg . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  relay_time . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
T2 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
_?receive. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     U_INT     INT      0000H  2
  addr . . . . . . . . . . . . . . . .  AUTO     U_INT     U_CHAR   0002H  1
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0097H  1
T2IE . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CDH  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
BGEN . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CBH  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
T2IP . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CEH  1
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
T2EX . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
C_T2 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C9H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
_?delay. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
WDCS . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
ADSCLK . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
_init_sja. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  md_addr. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  baud . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
WDSI . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
ADDRDY . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
X25045SCK. . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
clear_watchdog . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CP_RL2 . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C8H  1
RXdata . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  11
TXdata . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000BH  11
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
ET2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ADH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
TF2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CFH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
C51 COMPILER V3.20,  SN-0  SJA                                                             07/11/02  14:13:21  PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
PT2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BDH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
TR2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CAH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
canmode. . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0016H  17
_?read_sja . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  addr . . . . . . . . . . . . . . . .  AUTO     U_INT     U_CHAR   0000H  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
_set_canmode . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  md_addr. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  baud . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
CANCS. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A7H  1
_?write_sja. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  addr . . . . . . . . . . . . . . . .  AUTO     U_INT     U_CHAR   0000H  1
  val. . . . . . . . . . . . . . . . .  AUTO     U_INT     U_CHAR   0001H  1
HC245G . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A6H  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
X25045CS . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
ADRFS. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0095H  1
T2RSE. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CCH  1
ADTFS. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
ADSDATA. . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1
X25045SI . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
ADA0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0094H  1
_?ctransmit. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  j. . . . . . . . . . . . . . . . . .  AUTO     U_INT     INT      0000H  2
  can_addr . . . . . . . . . . . . . .  AUTO     U_INT     U_CHAR   0002H  1
X25045SO . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0093H  1
WDSCK. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    588    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     39       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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