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

📄 lin_send.lst

📁 基于51单片机的LIN主节点的设计
💻 LST
字号:
C51 COMPILER V6.12  LIN_SEND                                                               10/12/2008 16:28:17 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE LIN_SEND
OBJECT MODULE PLACED IN .\lin_send.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\lin_send.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1           
   2           
   3           sbit SLNP = P1^3; //定义控制睡眠模式的引脚
*** ERROR C202 IN LINE 3 OF .\LIN_SEND.C: 'P1': undefined identifier
   4          
   5           l_u8 BreakReceived=0;
*** ERROR C129 IN LINE 5 OF .\LIN_SEND.C: missing ';' before 'BreakReceived'
   6           l_u8 USART_DataReceived=0;
   7           l_u8 WaitReceived=0;
   8           l_u8 DataTemp;
   9          //extern l_u8 PID = 0xF0;
  10          
  11          void	l_sys_init(void) //系51单片机统初始化函数
  12          {
  13           	l_u8 i;
  14          	init_LCD(); //初始化液晶显示
  15             clear_LCD();//清屏
  16          	//INT1	引脚的配置
  17          	PX1=0; //优先级置0
  18          	IT1=1;	 //下降沿触发
  19          	//T0定时/计数器配置
  20          	TMOD=TMOD|0X01;	//设置T0为16位定时器	,工作在方式1模式
  21          	PT0=0X01;//优先级置1,表示优先级最高
  22          	//T1定时/计数器配置	   :
  23          	TMOD=TMOD|0X20;	//设置T1为8位之装载定时器,工作在方式2模式
  24          	TH1=0xFA;	 //设置T1的值,使波特率为4800Baud
  25          
  26          	//COM
  27          	PCON=0X00;
  28          	//********TJA1020模式设置*******
  29          	//TJA1020有4种模式 分别为睡眠模式,准备模式,普通斜率模式,低斜率模式
  30          	TH0=-25000/256;//延时25ms  //将TH0设为0x9F
  31          	TL0=-25000%256;		   //将TL0设为0x58
  32          	TR0=1;//启动定时器0
  33          	
  34          	do
  35          	{
  36          		TXD=1;
  37          		RXD=1;
  38          		SLNP=0;	 //sbit SLNP=P1^3; 	 单片机和TJA1020收发器一上电进入睡眠模式
  39          		i=200;
  40          		while(i--);//延时
  41          		SLNP=1;	   //把TJA1020模式设置成普通斜率模式
  42          		i=200;
  43          		while(i--);	//延时
  44             	}
  45          	while(TXD==0&&TF0==0); 	  // 如果设置成功 则 TXD=1
  46          	TR0=0;//关闭T0定时/计数器 定时	   
  47          
  48          	if(TF0==1)//超过25ms返回 表示设置模式失败	    
  49          	{	
  50          		TF0=0;
  51          		//return(1);
  52          	}
  53          	TF0=0;
C51 COMPILER V6.12  LIN_SEND                                                               10/12/2008 16:28:17 PAGE 2   

  54          
  55          	
  56          	EA=1;//开总中断标志 
  57          }
  58          
  59          void l_send_break(void)	 //发送同步间隔函数  
  60          {	
  61          	PCON=0x00;//SMODE置0
  62          	TH1=0xF4;//将波特率设为正常数据传输速率的一般,为了保证发同步间隔时保持至少13个显示电平(低电平) 
  63          	TL1=TH1;	
  64          	TR1=1;
  65          	SCON=0X40;//方式1,不允许接受
  66          	SBUF=0X80;	//二进制为1000 0000,先发低位,再发高位,这里发送同步间隔场,		   
  67          				 //同步间隔场要求先显形电平(低电平),后隐性电平(高电平)			  
  68          	while(TI==0);
  69          	TI=0;
  70          	BreakReceived=1;
  71          
  72              
  73          
  74          	TR1=1;
  75          	SCON=0X50;//串口模式工作在方式1,许接受数据 
  76          
  77          }
  78          
  79           
  80          void delay(l_u16 tm)  //延时函数	 
  81          {
  82          	while(tm--);
  83          } 
  84          
  85          
  86          void l_send_bytes (l_u8 bytes)//发送字节 用来发同步场 
  87          {
  88          	PCON=0x00;//SMODE置0	
  89          	TL1=TH1=0xFA;   //设置T1的值,使波特率为4800Baud
  90          	TR1=1; 
  91          	SCON=0X50;//串口模式工作在方式1 允许接收数据 
  92          	SBUF=bytes;//将数据放到SBUF上准备发送 	
  93          	while(TI==0);
  94          	TI=0;
  95          	USART_DataReceived=1;
  96          	TR1=0;
  97          
  98          	
  99          }
 100          
 101          
 102          l_u8 checksum8(l_u8 *chk8,l_u8 num)	//求校验和,即数据场所有字节的和的反码		 
 103          {									//*chk8是要加的字节,num是字节个数)
 104              l_u8 temp=0;//存放所有字节的和 
 105          	for( ;num>0;num--)
 106          	{
 107          		temp=temp+*chk8;
 108          		  chk8++;
 109          	}		   //求到所有字节的和   
 110          	return(0xff-temp);//求字节何的反码并返回	     
 111          }
 112          
 113          
 114          	void l_send_data(l_u8 * temp,l_u8 num) //发送数据场和校验和,*temp是存放数据的数组,num数据的个数 
 115          {
C51 COMPILER V6.12  LIN_SEND                                                               10/12/2008 16:28:17 PAGE 3   

 116              l_u8 l_chksum,m;//l_chksumw是发送字节的个数 ,m是用来暂时存放校验和的 
 117          	
 118          	TL1=TH1;//TH1=FA,波特率为4800Baud
 119          	SCON=0X50;
 120          	TR1=1;
 121          
 122          	for(l_chksum=0;l_chksum<num;l_chksum++)	//连续发送8个数据,并显示发送的数据 
 123          	{
 124          		SBUF=*temp;
 125          		while(TI==0);
 126          		TI=0;
 127          		USART_DataReceived=1;
 128          		if(l_chksum==4) gotoxy(2,0); //发送完4个后 显示换行	   
 129          		display_LCD_number(*temp);	//显示发送的数据    
 130                  display_LCD_string(" ");  //每发一个数据用一个空格隔开 
 131          		temp++;					 
 132          	}
 133          	temp=temp-num;//再指向首地址
 134          	m=checksum8(temp,num);	//求这个8个数据的校验和 
 135          	SBUF=m; // 发送校验和  
 136          	while(TI==0);
 137          	TI=0;
 138          	USART_DataReceived=1;
 139          
 140          	display_LCD_string(" <S>");
 141          
 142          	USART_DataReceived=1;
 143          	}
 144          
 145            static void RevHeader(void) interrupt 4 	//接收串口中断函数			 
 146          { 
 147           ES=0;//关串口中断	   
 148           if(RI==1)//如果RI=1,表示接收完毕	   
 149           { RI=0;
 150             DataTemp=SBUF;//将SBUF的数据放到DateTemp里 为存到receive_data[n]里作准备			  
 151             WaitReceived=1; 
 152            
 153           }
 154           ES=1;//开串口中断	  
 155           return;   //中断返回	    
 156          }  
 157          
 158          
 159          
 160          

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

⌨️ 快捷键说明

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