📄 zj.lst
字号:
C51 COMPILER V8.01 ZJ 03/22/2010 21:00:02 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE ZJ
OBJECT MODULE PLACED IN zj.OBJ
COMPILER INVOKED BY: D:\学习软件\keil\C51\BIN\C51.EXE zj.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3
4 sbit RE=P3^4; // 控制487接收,发送控制端
5 uchar code display_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c};
6 uchar j,temperature[4]; //存储温度数组
7 bit t; // 控制数据连续传送位
8
9 void display();
10 void delay(uchar a);
11
12
13 void main()
14 {
15 1 uchar i;
16 1
17 1 TMOD=0x21; //定时计数器1设置为模式2
18 1 TH0=(65536-50000*110592/120000)/256; //设置50ms溢出一次
19 1 TL0=(65536-50000*110592/120000)%256;
20 1 TL1=0XFD; //波特率设置
21 1 TH1=0XFD;
22 1 PCON=0X00;
23 1 SCON=0xd0; //工作在方式3,允许通信;
24 1 TR1=1; //定时计数器1开始计数
25 1 TR0=1;
26 1 ET0=1;
27 1 RE=0; //487准备接受数据数据
28 1 EA=1; //开总中断
29 1 ES=1; //开串口通信中断
30 1
31 1 while(1)
32 1 {
33 2 if(t==1&j>=20) //判断是否满足数据连续传送的条件
34 2 {
35 3 j=0;
36 3
37 3 while(RI!=1);
38 3 display();
39 3
40 3 if(SBUF==0XFE)
41 3 {
42 4 RI=0;
43 4 delay(10);
44 4 for(i=0;i<4;i++) //发送要显示的4个数据
45 4 {
46 5
47 5 while(RI!=1);
48 5 temperature[i]=SBUF;
49 5 RI=0;
50 5 delay(10);
51 5 }
52 4
53 4 }
54 3
55 3 ES=1;
C51 COMPILER V8.01 ZJ 03/22/2010 21:00:02 PAGE 2
56 3 t=0;
57 3 }
58 2
59 2 display();
60 2 }
61 1
62 1 }
63
64
65 void delay(uchar a)
66 {
67 1 uchar i;
68 1 for(;a>0;a--)
69 1 for(i=100;i>0;i--);
70 1
71 1 }
72
73
74 void display() //显示函数
75 {
76 1
77 1 P2=0XFF; // 显示从机的代号
78 1 P0=display_table[temperature[0]];
79 1 P2=0xfe;
80 1 delay(1);
81 1
82 1 P2=0XFF; // 显示温度
83 1 P0=display_table[temperature[1]];
84 1 P2=0xfd;
85 1 delay(1);
86 1
87 1 P2=0XFF;
88 1 P0=display_table[temperature[2]];
89 1 P2=0xfb;
90 1 delay(1);
91 1
92 1 P2=0XFF;
93 1 P0=display_table[temperature[3]]+0x80;
94 1 P2=0xf7;
95 1 delay(1);
96 1
97 1 }
98
99
100 void time() interrupt 1 //定时器
101 {
102 1 TH0=(65536-50000*110592/120000)/256;
103 1 TL0=(65536-50000*110592/120000)%256;
104 1
105 1 j++;
106 1 }
107
108
109 void r_scon() interrupt 4 //串口中断函数
110 {
111 1 uchar i;
112 1
113 1 if(RI==1)
114 1 {
115 2 RI=0;
116 2 delay(10);
117 2 if(SBUF==0XFD) //判断是否是接受一次数据,还是不断传输数据
C51 COMPILER V8.01 ZJ 03/22/2010 21:00:02 PAGE 3
118 2 {
119 3 ES=0;
120 3 t=0; //停止数据连续传送
121 3 for(i=0;i<4;i++) //发送要显示的4个数据
122 3 {
123 4 while(RI!=1);
124 4 temperature[i]=SBUF;
125 4 RI=0;
126 4 delay(10);
127 4 }
128 3
129 3 ES=1;
130 3 }
131 2 else if(SBUF==0XFE) //连续发送数据
132 2 {
133 3 t=1;
134 3 ES=0;
135 3 }
136 2 }
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 278 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 1
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 + -