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

📄 text1.lst

📁 简单的自行车里程速度计数器
💻 LST
字号:
C51 COMPILER V6.12  TEXT1                                                                  05/02/2007 19:35:47 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\Text1.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\Text1.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          sbit RR = P3^7;//小数点显示控制
   6          sbit ONE = P1^2;//变速开关1
   7          sbit TWO = P1^3;//变速开关2
   8          sbit THREE = P1^6;//变速开关3
   9          sbit FOUR = P1^7;//变速开关4
  10          sbit LIGHTA = P1^0;//里程指示灯
  11          sbit LIGHTB = P1^1;//速度指示灯
  12          sbit CHANGE = P3^0;//里程测速转换
  13          sbit ALERM = P3^1;// 报警开关
  14          uint data distance;//里程计数
  15          uint data speed;//速度计数
  16          uint data times;//轮子转圈数
  17          uchar data sign;//四开关标志
  18          uint data minu;//时间数
  19          uchar code dis_7[11] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xFF};//共阴LED段码表
  20          uchar code control[3] = {0xFD,0xFB,0xF7};//由低到高控制字
  21          uchar data show[3] = {0x00,0x00,0x00};
  22          
  23          /*延时1ms*/
  24          delay(uint t)
  25          {
  26   1      	uint i,j;
  27   1      	for(i=0;i<t;i++)
  28   1      		for(j=0;j<120;j++)
  29   1      		;
  30   1      }
  31          
  32          /*里程显示函数*/
  33          showDistance()
  34          {
  35   1      	uchar k;
  36   1      	uint dis = distance;
  37   1      	show[2] = dis/100;//百位
  38   1      	show[1] = (dis%100)/10;//十位
  39   1      	show[0] = (dis%100)%10;//个位
  40   1      	LIGHTA = 0;
  41   1      	while(1)
  42   1      	{
  43   2      		for(k=0;k<4;k++)
  44   2      		{
  45   3      			P0 = dis_7[show[k]];
  46   3      			P2 = control[k];
  47   3      			delay(1);
  48   3      		}
  49   2      	}
  50   1      }
  51          
  52          
  53          /*超速警报函数*/
  54          overSpeed()
  55          {
C51 COMPILER V6.12  TEXT1                                                                  05/02/2007 19:35:47 PAGE 2   

  56   1      	ALERM = 0;
  57   1      }
  58          
  59          /*速度显示函数*/
  60          showSpeed()
  61          {
  62   1      	uchar m;
  63   1      	uint sp = speed;
  64   1      	show[2] = sp/100;//百位
  65   1      	show[1] = (sp%100)/10;//十位
  66   1      	show[0] = (sp%100)%10;//个位
  67   1      	LIGHTB = 0;
  68   1      	if(speed>50)
  69   1      		overSpeed();
  70   1      	while(1)
  71   1      	{
  72   2      		for(m=0;m<4;m++)
  73   2      		{
  74   3      			P0 = dis_7[show[m]];
  75   3      			P2 = control[m];
  76   3      			delay(1);
  77   3      		}
  78   2      	}
  79   1      }
  80          
  81          /*定时器开关函数*/
  82          void calDistance(void) interrupt 2
  83          {
  84   1      	uint n;
  85   1      	TR0 = 0;
  86   1      	n = minu/4000;//n为秒数
  87   1      	distance = times*sign/1000;//distance为千米数
  88   1      	speed = times*sign/n;//米每秒
  89   1      	TR1 = 1;
  90   1      }
  91          
  92          /*轮圈的圈数计数函数*/
  93          void circle(void) interrupt 0
  94          {
  95   1      	times++;
  96   1      }
  97          
  98          /*计数器T0中断函数*/
  99          void counter(void) interrupt 1
 100          {
 101   1      	minu++;//加一个250us
 102   1      }
 103          
 104          /*初始化函数*/
 105          init()
 106          {
 107   1      	IE = 0;
 108   1      	TMOD = 0x02;
 109   1      	TR0 = 0;
 110   1      	TH0 = 0x06;
 111   1      	TL0 = 0x06;
 112   1      	IT1 = 0;IT0 = 0;
 113   1      	P0 = 0xff;P2 = 0xff;
 114   1      	P1 = 0xff;P3 = 0xff;
 115   1      	RR = 1;
 116   1      	EA = 1;EX0 = 1;EX1 = 1;ET0 = 1;
 117   1      }
C51 COMPILER V6.12  TEXT1                                                                  05/02/2007 19:35:47 PAGE 3   

 118          
 119          main()
 120          {
 121   1      	init();
 122   1      	while(1)
 123   1      	{
 124   2      		if(ONE == 0)
 125   2      			sign = 3;
 126   2      		else if(TWO == 0)
 127   2      			sign = 4;
 128   2      		else if(THREE == 0)
 129   2      			sign = 5;
 130   2      		else if(FOUR == 0)
 131   2      			sign = 6;
 132   2      		if(CHANGE == 0)
 133   2      			showSpeed();
 134   2      		else 
 135   2      			showDistance();
 136   2      	}
 137   1      }
 138          
 139          
 140          
 141          
 142          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    455    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12    ----
   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 + -