📄 chaosb.lst
字号:
C51 COMPILER V8.02 CHAOSB 03/26/2009 22:13:17 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CHAOSB
OBJECT MODULE PLACED IN chaosb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chaosb.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2 #include "7219.h"
3 #include"intrins.h"
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 uchar k[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};
8 sbit vout =P2^0;
9 bit flag;//成功标志
10 bit wt;//溢出标志
11
12 float high,low;//超声波时间
13 uchar qian,bai,shi,ge;//距离的个位、十位、百位
14
15
16 /*************************************************************************
17 * 函数原型:void delay_50us()
18 * 功 能:50us的延时
19 **************************************************************************/
20 void delay_50us(unsigned int t) // t=100, 5ms; t=1000, 50ms
21 {
22 1 unsigned char j;
23 1 for(;t>0;t--)
24 1 for(j=19;j>0;j--);
25 1 }
26
27 /*************************************************************************
28 * 函数原型:void work()
29 * 功 能:超声波距离转换
30 **************************************************************************/
31 void work(void)
32 {
33 1 float value;
34 1 value=(high*256+low)*17/1000-3;
35 1 qian=value/1000;
36 1 bai=(value-qian*1000)/100;
37 1 shi=(value-qian*1000-bai*100)/10;
38 1 ge=value-qian*1000-bai*100-shi*10;
39 1
40 1 }
41 /*************************************************************************
42 * 函数原型:void fas()
43 * 功 能:发送40khz的超声波
44 **************************************************************************/
45 void fas()
46 {
47 1 unsigned char i;
48 1 ET1 = 1;
49 1 TR1 = 1;
50 1 for(i=0;i<8;i++)
51 1 {
52 2 vout = ~vout;
53 2 _nop_();
54 2 _nop_();
55 2 _nop_();
C51 COMPILER V8.02 CHAOSB 03/26/2009 22:13:17 PAGE 2
56 2 _nop_();
57 2 _nop_();
58 2 _nop_();
59 2 _nop_();
60 2 _nop_();
61 2 }
62 1 delay_50us(1);
63 1 EX0 = 1; //开启外部中断
64 1 EA = 1;
65 1 }
66 /*************************************************************************
67 * 函数原型:void INIT1()
68 * 功 能:超声波计时溢出中断
69 **************************************************************************/
70 void INTT1() interrupt 3
71 {
72 1 EA = 0;
73 1 TR1 = 0;
74 1 TH1 = 0;
75 1 TL1 = 0;
76 1 wt=1;
77 1
78 1
79 1 }
80 /*************************************************************************
81 * 函数原型:void work()
82 * 功 能:超声波返回中断
83 **************************************************************************/
84 void PINT0() interrupt 0
85 {
86 1 TR1 = 0;
87 1 //ET1 = 0; //关闭定时器0
88 1 //EX1 = 0;
89 1 EA = 0;
90 1 low = TL1;
91 1 high = TH1;
92 1 TH1 = 0;
93 1 TL1 = 0;
94 1 flag = 1;
95 1 // jis++;
96 1 }
97 /*************************************************************************
98 * 函数原型:void max7219show()
99 * 功 能:超声波距离显示--厘米为单位
100 **************************************************************************/
101 void max7219show()
102 {
103 1 Write(0x04,k[ge]);
104 1 Write(0x03,k[shi]);
105 1 Write(0x02,k[bai]);
106 1 Write(0x01,k[qian]);
107 1
108 1 }
109 main()
110 {
111 1 P0 = 0xff;
112 1 P1 = 0xff;
113 1 P2 = 0xff;
114 1 P3 = 0xff;
115 1 TMOD = 0x10;
116 1 TH1 = 0;
117 1 TL1 = 0;
C51 COMPILER V8.02 CHAOSB 03/26/2009 22:13:17 PAGE 3
118 1 inith();
119 1 max7219show();
120 1 wt=1;
121 1 while(1)
122 1 {
123 2 if(flag)
124 2 {
125 3 //EA = 0;
126 3 //if(jis>45)
127 3 //{
128 3 work();
129 3 max7219show();
130 3 // jis=0;
131 3 //}
132 3 delay_50us(6000);
133 3 flag = 0;
134 3 fas();
135 3 }
136 2 if (wt)
137 2 {
138 3 //EA=0;
139 3 // max7219show();
140 3 wt=0;
141 3 fas();
142 3 }
143 2 }
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 799 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 7
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -