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

📄 xiaoche.lst

📁 电子大赛循迹小车小车原理图1 可自动循迹、加速减速、和自动循迹。
💻 LST
字号:
C51 COMPILER V6.12  XIAOCHE                                                                03/30/2009 18:12:37 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE XIAOCHE
OBJECT MODULE PLACED IN .\xiaoche.OBJ
COMPILER INVOKED BY: G:\keil\C51\BIN\C51.EXE .\xiaoche.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define N 2
   6          sbit black1=P2^0;
   7          sbit black2=P2^1;
   8          sbit left1=P2^2;
   9          sbit right1=P2^3;
  10          sbit left2=P2^4;
  11          sbit right2=P2^5;
  12          sbit rs=P2^7;
  13          sbit lcden=P2^6;
  14          sbit IN4=P1^0;
  15          sbit ENB=P1^1;
  16          sbit IN3=P1^2;
  17          sbit IN2=P1^3;
  18          sbit ENA=P1^4;
  19          sbit IN1=P1^5;
  20          void xunji();
  21          uchar t,a,b,c,d,e,f,g;
  22          uint s,t1,road,speed;
  23          uchar code table[]="T:000s S:00.00m";
  24          uchar code table1[]="V:00.00cm/s  00s";
  25          void delay(uint z)
  26          {
  27   1      	uint x,y;
  28   1      	for(x=z;x>0;x--)
  29   1      		for(y=110;y>0;y--);
  30   1      }
  31          
  32          void write_com(uchar com)
  33          {
  34   1      	rs=0;
  35   1      	lcden=0;
  36   1      	P0=com;
  37   1      	delay(N);
  38   1      	lcden=1;
  39   1      	delay(N);
  40   1      	lcden=0;	
  41   1      }
  42          
  43          void write_date(uchar date)
  44          {
  45   1      	rs=1;
  46   1      	lcden=0;
  47   1      	P0=date;
  48   1      	delay(N);
  49   1      	lcden=1;
  50   1      	delay(N);
  51   1      	lcden=0;	
  52   1      }
  53          void write_time(uchar dat)
  54          {
  55   1      	uchar bai,shi,ge;
C51 COMPILER V6.12  XIAOCHE                                                                03/30/2009 18:12:37 PAGE 2   

  56   1      	bai=dat/100;
  57   1      	shi=dat%100/10;
  58   1      	ge=dat%10;
  59   1      	write_com(0x80+2);
  60   1      	write_date(0x30+bai);
  61   1      	write_date(0x30+shi);
  62   1      	write_date(0x30+ge);
  63   1      }
  64          void write_rosp(uchar add,uint rosp)
  65          {
  66   1      	uchar qian,bai,shi,ge;
  67   1      	qian=rosp/1000;
  68   1      	bai=rosp%1000/100;
  69   1      	shi=rosp%1000%100/10;
  70   1      	ge=rosp%10;
  71   1      	write_com(0x80+add);
  72   1      	write_date(0x30+qian);
  73   1      	write_date(0x30+bai);
  74   1      	write_com(0x80+add+3);
  75   1      	write_date(0x30+shi);
  76   1      	write_date(0x30+ge);
  77   1      }
  78          void write_daoji(uchar daoji)
  79          {
  80   1      	uchar shi,ge;
  81   1      	shi=daoji/10;
  82   1      	ge=daoji%10;
  83   1      	write_com(0x80+0x40+13);
  84   1      	write_date(0x30+shi);
  85   1      	write_date(0x30+ge);
  86   1      }
  87          void init()
  88          {
  89   1      	uchar num;
  90   1      	lcden=0;
  91   1      	write_com(0x38);
  92   1      	write_com(0x0c);
  93   1      	write_com(0x06);
  94   1      	write_com(0x01);
  95   1      	write_com(0x80);
  96   1      	for(num=0;num<15;num++)
  97   1      		{
  98   2      			write_date(table[num]);
  99   2      			delay(N);
 100   2      		}
 101   1      	write_com(0x80+0x40);
 102   1      	for(num=0;num<16;num++)
 103   1      		{
 104   2      			write_date(table1[num]);
 105   2      			delay(2);
 106   2      		}
 107   1      	TMOD=0x11;
 108   1      	TH0=(65536-10000)/256;
 109   1      	TL0=(65536-10000)%256;
 110   1      	TH1=(65536-50000)/256;
 111   1      	TL1=(65536-50000)%256;
 112   1      	EA=1;//开总中
 113   1      	EX0=1;//开外部中断0
 114   1      	TCON=0x01;
 115   1      	ET0=1;//开定时器0中断
 116   1      	ET1=1;
 117   1      	TR0=1;//启动定时器0
C51 COMPILER V6.12  XIAOCHE                                                                03/30/2009 18:12:37 PAGE 3   

 118   1      	t=0;
 119   1      	a=0;
 120   1      	b=0;
 121   1      	c=0;
 122   1      	d=0;
 123   1      	e=0;
 124   1      	f=10;
 125   1      	t1=0;
 126   1      	s=0;
 127   1      }
 128          void limit()
 129          {
 130   1      	if(black1==0&&black2==0)
 131   1      	{
 132   2      		delay(N);
 133   2      		c++;
 134   2      		while(black1==0&&black2==0);
 135   2      		if(c==9)c=0;
 136   2      	}
 137   1      		while(c==2||c==6)
 138   1      		{
 139   2      			if(speed>=2450)
 140   2      			{
 141   3      				ENA=0;
 142   3      				ENB=0;
 143   3      			}
 144   2      			else
 145   2      			{
 146   3      				ENA=1;
 147   3      				ENB=1;
 148   3      			}
 149   2      			xunji();
 150   2      		}
 151   1      		if(c==4)
 152   1      		{	
 153   2      			ENA=1;
 154   2      			ENB=1;
 155   2      			IN1=1;
 156   2      			IN2=1;
 157   2      			IN3=1;
 158   2      			IN4=1;
 159   2      			TR1=1;
 160   2      		}
 161   1      		else if(c==8)
 162   1      		{
 163   2      			ENA=1;
 164   2      			ENB=1;
 165   2      			IN1=1;
 166   2      			IN2=1;
 167   2      			IN3=1;
 168   2      			IN4=1;
 169   2      		}
 170   1      		while(c==0||c==1||c==3||c==5||c==7)xunji();
 171   1      	
 172   1      }
 173          void xunji()
 174          {
 175   1      		while(left1==0||(right1==1&&right2==0))			//左拐
 176   1      		{
 177   2      		 	ENA=0;
 178   2      			ENB=1;
 179   2      			IN3=1;
C51 COMPILER V6.12  XIAOCHE                                                                03/30/2009 18:12:37 PAGE 4   

 180   2      			IN4=0;
 181   2      		}
 182   1      		while(right1==0||(left1==1&&left2==0))			//右拐
 183   1      		{
 184   2      			ENA=1;
 185   2      			IN1=1;
 186   2      			IN2=0;
 187   2      			ENB=0;
 188   2      		}
 189   1      		while((right1==left1)&&(left2==right2))
 190   1      		{
 191   2      			ENA=1;
 192   2      			IN1=1;
 193   2      			IN2=0;
 194   2      			ENB=1;
 195   2      			IN3=1;
 196   2      			IN4=0;
 197   2      		}
 198   1      }
 199          void main()
 200          {
 201   1      	init();
 202   1      	while(1)
 203   1      	{
 204   2      		limit();
 205   2      	}
 206   1      }
 207          void exter0() interrupt 0
 208          {
 209   1      	speed=60000/t1;
 210   1      	t1=0;
 211   1      	s++;
 212   1      	road=6*s;	
 213   1      }
 214          void timer0() interrupt 1 
 215          {
 216   1      	TH0=(65536-10000)/256;
 217   1      	TL0=(65536-10000)%256;
 218   1      	t1++;	b++;
 219   1      	if(b==100)
 220   1      	{
 221   2      		b=0;
 222   2      		t++;
 223   2      		write_time(t);
 224   2      		write_rosp(0x40+2,speed);
 225   2      		write_rosp(9,road);
 226   2      	}
 227   1      }
 228          void timer1() interrupt 3
 229          {
 230   1      	TH1=(65536-50000)/256;
 231   1      	TL1=(65536-50000)%256;
 232   1      	d++;
 233   1      	if(d%20==0){f--;write_daoji(f);}
 234   1      	if(d==200)
 235   1      	{
 236   2      		d=0;
 237   2      		TR1=0;
 238   2      		ENA=1;
 239   2      		ENB=1;
 240   2      		IN1=1;
 241   2      		IN2=0;
C51 COMPILER V6.12  XIAOCHE                                                                03/30/2009 18:12:37 PAGE 5   

 242   2      		IN3=0;
 243   2      		IN4=1;
 244   2      		if(left1==0&&right2==0)
 245   2      		{
 246   3      			delay(N);e++;
 247   3      			while(left1==0&&right2==0);
 248   3      		}
 249   2      		if(left2==0&&right1==0)
 250   2      		{
 251   3      			delay(N);e++;
 252   3      			while(left2==0&&right1==0);
 253   3      		}
 254   2      		if(c==5&&e==2)
 255   2      		{
 256   3      			ENA=1;
 257   3      			ENB=1;
 258   3      			IN1=1;
 259   3      			IN2=0;
 260   3      			IN3=1;
 261   3      			IN4=0;
 262   3      			e=0;
 263   3      		}
 264   2      	}
 265   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    959    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       4
   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 + -