📄 test.lst
字号:
C51 COMPILER V9.00 TEST 10/16/2011 14:30:12 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit rs=P1^0;
5 sbit rw=P1^1;
6 sbit en=P1^2;
7 sbit beer=P3^6;
8 uchar code a[]="Dis=000cm";
9 uchar num=0,get[2]={0};
10 bit flag=0;
11 void delay(uint z)
12 {
13 1 uint x,y;
14 1 for(x=z;x>0;x--)
15 1 for(y=110;y>0;y--);
16 1 }
17 void delayus(uint i)
18 {
19 1 while(i)i--;
20 1 }
21 void write1602_command(uchar command)//写指令子函数
22 {
23 1 rs=0;
24 1 rw=0;
25 1 P2=command;
26 1 delay(1);
27 1 en=0;
28 1 delay(2);
29 1 en=1;
30 1 }
31 void write1602_data(uchar date)//写数据子函数
32 {
33 1 rs=1;
34 1 rw=0;
35 1 P2=date;
36 1 delay(1);
37 1 en=0;
38 1 delay(2);
39 1 en=1;
40 1 }
41 void init()
42 {
43 1 en=0;
44 1 rw=0;
45 1 write1602_command(0x38);
46 1 write1602_command(0x01);
47 1 write1602_command(0x0c);
48 1 write1602_command(0x06);
49 1 write1602_command(0x80);
50 1 }
51 void display(uint s)
52 {
53 1 write1602_command(0x84);
54 1 write1602_data(s%10000/1000+0x30);
55 1 write1602_data(s%1000/100+0x30);
C51 COMPILER V9.00 TEST 10/16/2011 14:30:12 PAGE 2
56 1 write1602_data(s%100/10+0x30);
57 1 //write1602_data(0x2e);
58 1 //write1602_data(s%10+0x30);
59 1 }
60 void SysInit()
61 {
62 1 init();
63 1 TMOD=0x20;//设置定时器1为工作方式2
64 1 TH1=0xfd;//设置串口通信的波特率为9600
65 1 TL1=0xfd;
66 1 TR1=1;//开启定时器1
67 1 SM0=0;
68 1 SM1=1;
69 1 REN=1;
70 1 EA=1;
71 1 ES=1;
72 1 }
73 void send_uart(uchar dat)
74 {
75 1 SBUF=dat;
76 1 while(!TI);
77 1 TI=0;
78 1 }
79 void main()
80 {
81 1 uchar i;
82 1 uint dis=0;
83 1 SysInit();
84 1 write1602_command(0x80);
85 1 for(i=0;a[i]!='\0';i++)
86 1 {
87 2 write1602_data(a[i]);
88 2 delay(6);
89 2 }
90 1 while(1)
91 1 {
92 2 send_uart(0x55);
93 2 delay(500);//500ms更新一次,根据你的需要修改延时参数
94 2 if(flag)
95 2 {
96 3 flag=0;
97 3 dis=get[0]*256+get[1];
98 3 display(dis);
99 3 if(dis<200) //小于20CM则蜂鸣器响
100 3 beer=0;
101 3 else
102 3 beer=1;
103 3 delay(10);
104 3 ES=1;
105 3 }
106 2 }
107 1
108 1 }
109 void IsrUart() interrupt 4
110 {
111 1 ES=0;
112 1 if(RI)
113 1 {
114 2 RI=0;
115 2 get[num++]=SBUF;
116 2 if(num>1)
117 2 {
C51 COMPILER V9.00 TEST 10/16/2011 14:30:12 PAGE 3
118 3 ES=0;
119 3 num=0;
120 3 flag=1;
121 3 }
122 2 else
123 2 ES=1;
124 2 }
125 1 else
126 1 ES=1;
127 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 386 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 2
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -