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

📄 main.lst

📁 51单片机rtos源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.02  MAIN                                                                   04/04/2001 08:36:59 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN C:\COMP5161\MAIN.OBJ
COMPILER INVOKED BY: C:\COMP5161\C51.EXE C:\COMP5161\MAIN.C DB OE LA CODE OT(5) 

stmt level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          
   4          #define         uchar           unsigned char
   5          #define 	uint		unsigned int
   6          #define		LedPort		XBYTE[0xC000]
   7          #define		SwitchPort	XBYTE[0xC800]
   8          
   9          bit		fscf,crcf,tsn,rsn,tfs,rfs,wxyf,jscf,stno,secflg;
  10          bit		mute,sound,fireflag,startflag,faultflag,negs;
  11          uchar data	crc1,crc2,cfcs,dest,netno,
  12          		b2btime,wxycount,sectimer,bcount;
  13          
  14          uchar data	keynum,keyfirst,imgcode;
  15          
  16          uint  data	rpt,spt,tpt,onlpt,onlrpt,rrpt;
  17          
  18          uchar data	month,day,hour,min,sec;
  19          
  20          uchar xdata	firenum=0,firefirst=0,firecur=0,faultnum=0,faultfirst=0,faultcur=0,startnum=0,startfirst=0,sta
             -rtcur=0 ;
  21          
  22          sbit		WDT	= P1^6;			/*WDT复位线 */
  23          sbit		DRV485  = P1^4;			/*485发送有郊控制线 */
  24          sbit		SpCtr	= P1^5;
  25          sbit		BkLCtr  = P1^7;
  26          
  27          /*uchar xdata	TrBuf[0x400];*/			/*发送缓冲区,1k个单元 */
  28          /*uchar xdata	ReBuf[0x400];*/			/*接收缓冲区,32个单元  */
  29          uchar xdata 	KeyBuf[0x10];			/*键值缓冲区,16个单元  */
  30          uchar xdata	Fire[256][32];
  31          uchar xdata	Fault[256][32];
  32          uchar xdata	Start[256][32];
  33          
  34          extern uchar data zkpb;
  35          
  36          extern void	RS485(void);			/*485接收缓冲区处理子程序*/
  37          /*extern void 	SW485(uchar,uchar);*/		/*向发送缓冲区装配信息帧*/
  38          extern void	SIOT(void);			/*UART中断处理子程序*/
  39          extern void	Delay(uchar);			/*延时子程序*/
  40          extern void	Clear(void);
  41          extern void     IntLcd(void);
  42          extern void	OutEvent(uchar xdata *);
  43          extern void 	DispNoEvent(uchar);
  44          extern void 	ShowStartImg(void);
  45          extern void	OutTNum(uchar,uchar);
  46          extern void	OutCur(uchar);
  47          extern void	INTLCD();
  48          extern void     CLEAR();
  49          
  50          void		KeyProc(void);
  51          void		OutSec(void);
  52          void		SelfTest(void);
  53          void		DispEvent(uchar,uchar);
  54          
C51 COMPILER V6.02  MAIN                                                                   04/04/2001 08:36:59 PAGE 2   

  55          void  sint(void) interrupt 4 using 0		/*串行口中断程序,向量为4*/
  56          {
  57   1      	WDT = ~WDT;
  58   1      	SIOT();
  59   1      	WDT = ~WDT;
  60   1      }
  61          
  62          void  intx0(void) interrupt 0 using 3
  63          {
  64   1      	uchar tmpkey,i,j;
  65   1      	tmpkey = P1 & 0x0F;
  66   1      	Delay(50);
  67   1      	if(tmpkey == ( P1 & 0xF ))
  68   1      	{
  69   2      		tmpkey = ~tmpkey;
  70   2      		for(i = 0,j = 1;i<4;i++)
  71   2      		{
  72   3      			if((j&tmpkey) == j)
  73   3      			{
  74   4      				if(keynum <0x10)
  75   4      				{
  76   5      					keynum += 1;
  77   5      					KeyBuf[ (keyfirst + keynum) & 0x0F ] = i;
  78   5      				}
  79   4      				else
  80   4      				{
  81   5      					KeyBuf[keyfirst] = i;
  82   5      					keyfirst = ( keyfirst +1 ) & 0x0F;
  83   5      				}
  84   4      			}
  85   3      			break;
  86   3      		}
  87   2      	}
  88   1      }
  89          
  90          
  91          void  intt0(void) interrupt 1 using 3		/*50ms中断处理子程序,中断向量1,工作寄存器组3*/
  92          {
  93   1      	TH0 = 0x87;
  94   1      	TL0 = 0xFF;
  95   1      
  96   1      	sectimer += 1;
  97   1      	if(sectimer == 20) { sectimer = 0; sec = (sec + 1) % 60 ; secflg = 1;}
  98   1      
  99   1      	if( wxycount != 0 )			/*wxycount每中断一次减1,当为0时置无响应标志位wxyf*/
 100   1      	  {
 101   2      	  	wxycount = wxycount - 1;
 102   2      	  	if( wxycount == 0 ) wxyf = 1;
 103   2      	  }
 104   1      	if( b2btime != 0 )			/*b2bcount每中断一次减1,当为0时置接收错标志位jscf*/
 105   1      	  {
 106   2      	  	b2btime = b2btime - 1;
 107   2      	  	if ( b2btime == 0 ) jscf = 1;
 108   2      	  }
 109   1      }
 110          
 111          
 112          void main(void)
 113          {
 114   1      
 115   1      	PCON = 0x0;
 116   1      	SCON = 0xF0;
C51 COMPILER V6.02  MAIN                                                                   04/04/2001 08:36:59 PAGE 3   

 117   1      	TMOD = 0x21;
 118   1      	TH0 = 0xFB;
 119   1      	TL0 = 0x32;
 120   1      	SM2 = 1;
 121   1      	netno = ( SwitchPort & 0x3F ) + 73;		/*拔码开关数据低3位加73为本机号*/
 122   1      	stno = 1;
 123   1      	WDT = ~WDT;
 124   1      
 125   1      	if((SwitchPort & 0x80) == 0x80) { TH1 = TL1 = 0xFE; }	/*拔码开关数据第四位为0时baud = 4800bps,为1时baud 
             -= 9600bps*/
 126   1       	else { TH1 = TL1 = 0xFC; }
 127   1      
 128   1      	SelfTest();
 129   1       	ET0 = 1;
 130   1       	TR0 = 1;
 131   1       	ES  = 1;
 132   1       	PS  = 1;
 133   1       	TR1 = 1;
 134   1       	EA = 1;
 135   1       	DRV485 = 0;
 136   1       	BkLCtr = 1;
 137   1      
 138   1              INTLCD();
 139   1              CLEAR();
 140   1       	ShowStartImg();
 141   1      
 142   1       	while (1)
 143   1       	{
 144   2       		if(keynum !=0) 	KeyProc();
 145   2       		if(secflg == 1)	{ OutSec(); secflg = 0;}
 146   2                      /*if(rpt != rrpt)*/ RS485();
 147   2                      if(fireflag == 1) {imgcode = 1; DispEvent( 0x01,firefirst + firecur ); fireflag = 0;}
 148   2                      if(startflag == 1) {imgcode = 2; DispEvent( 0x02,startfirst + startcur ); startflag = 0;}
 149   2                      if(faultflag == 1) {imgcode = 3; DispEvent( 0x03,faultfirst + faultcur ); faultflag = 0;}
 150   2              }
 151   1      }
 152          
 153          
 154          void SelfTest(void)
 155          {
 156   1      	uchar i;
 157   1      	zkpb = 	LedPort;
 158   1      	LedPort = LedPort | 0x0f;
 159   1      	for(i = 0;i<100;i++);
 160   1      	LedPort = zkpb;
 161   1      }
 162          
 163          void KeyProc(void)
 164          {
 165   1      	switch(KeyBuf[keyfirst])
 166   1      	{
 167   2      		case 0x00:
 168   2      		{
 169   3      			switch(imgcode)
 170   3      			{
 171   4      				case 0x00 : break;
 172   4      				case 0x01 :
 173   4      				{
 174   5      
 175   5      					if(firecur > 0) firecur -= 1;
 176   5      					DispEvent( 0x01,firefirst + firecur );
 177   5      					break;
C51 COMPILER V6.02  MAIN                                                                   04/04/2001 08:36:59 PAGE 4   

 178   5      				}
 179   4      				case 0x02 :
 180   4      				{
 181   5      					if(startcur >0) startcur -= 1;
 182   5      					DispEvent( 0x02,startfirst + startcur );
 183   5      					break;
 184   5      				}
 185   4      				case 0x03 :
 186   4      				{
 187   5      					if(faultcur >0) faultcur -= 1;
 188   5      					DispEvent( 0x03,faultfirst + faultcur );
 189   5      					break;
 190   5      				}
 191   4      				case 0x04 : break;
 192   4      				default   : break;
 193   4      			}
 194   3      		}
 195   2      		case 0x01:
 196   2      		{
 197   3      			switch(imgcode)
 198   3      			{
 199   4      				case 0x00 : break;
 200   4      				case 0x01 :
 201   4      				{
 202   5      					if(firecur < (firenum - 1 )) firecur += 1;
 203   5      					DispEvent( 0x01,firefirst + firecur );
 204   5      					break;
 205   5      				}
 206   4      				case 0x02 :
 207   4      				{
 208   5      					if(startcur < (startnum - 1)) startcur += 1;
 209   5      					DispEvent( 0x02,startfirst + startcur );
 210   5      					break;
 211   5      				}
 212   4      				case 0x03 :
 213   4      				{
 214   5      					if(faultcur < (faultnum - 1)) faultcur += 1;
 215   5      					DispEvent( 0x03,faultfirst + faultcur );
 216   5      					break;
 217   5      				}
 218   4      				case 0x04 : break;
 219   4      				default   : break;
 220   4      			}
 221   3      		}
 222   2      		case 0x02:
 223   2      		{
 224   3      			if(imgcode != 0) imgcode = ( imgcode & 0x03 ) + 1 ;
 225   3      			else break;
 226   3      
 227   3                              switch(imgcode)
 228   3      			{
 229   4      				case 0x01 :
 230   4      				{
 231   5      					if(firenum > 0)
 232   5      					{
 233   6      						DispEvent( 0x01,firefirst + firenum - 1 );
 234   6      					        break;
 235   6      					}
 236   5      					else DispNoEvent( 0x01 );
 237   5      					break;
 238   5      				}
 239   4      				case 0x02 :
C51 COMPILER V6.02  MAIN                                                                   04/04/2001 08:36:59 PAGE 5   

 240   4      				{
 241   5      					if( startnum > 0)
 242   5      					{
 243   6      						DispEvent( 0x02,startfirst + startnum - 1 );
 244   6      						break;
 245   6      					}
 246   5      					else DispNoEvent( 0x02 );
 247   5      					break;
 248   5      				}
 249   4      				case 0x03 :
 250   4      				{
 251   5      					if( faultnum > 0 )
 252   5      					{
 253   6      						DispEvent( 0x03,faultfirst + faultnum - 1 );
 254   6      					        break;
 255   6      					}
 256   5      					else DispNoEvent( 0x03 );
 257   5      					break;
 258   5      				}
 259   4      			}
 260   3      			break;
 261   3      		}
 262   2      		case 0x03:
 263   2      		{
 264   3      			mute = 1;
 265   3      			sound = 0;
 266   3      			break;
 267   3      		}
 268   2      	}
 269   1      	keyfirst = ( keyfirst + 1 ) & 0x0F;
 270   1      	keynum -= 1;
 271   1      }
 272          
 273          void DispEvent(uchar type,uchar loc)
 274          {

⌨️ 快捷键说明

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