📄 text1.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 + -