📄 temper.lst
字号:
C51 COMPILER V7.01 TEMPER 04/03/2009 09:54:10 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TEMPER
OBJECT MODULE PLACED IN temper.OBJ
COMPILER INVOKED BY: G:\C51\keil 安装\C51\BIN\C51.EXE temper.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2
3 unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
4 0xef,0xdf,0xbf,0x7f};////数码管位编码
5 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
6 0x6d,0x7d,0x07,0x7f,0x6f,0x00};//数码管段编码
7 unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};
8 unsigned char time;
9 unsigned char getdata;
10 unsigned int temp;
11 unsigned char i;
12
13 sbit ST=P3^0;//p3.0口
14 sbit OE=P3^1;//
15 sbit EOC=P3^2;
16 sbit CLK=P3^3;
17 sbit LED1=P3^6;
18 sbit LED2=P3^7;
19 sbit BELL=P3^5;
20 bit lowflag;
21 bit highflag;
22 unsigned int cnta;
23 unsigned int cntb;
24 bit alarmflag;//报警标志位
25
26
27 void main(void)
28 {
29 1 ST=0;
30 1 OE=0;
31 1 TMOD=0x12;//定时/计数器方式控制位,T1定时方式1,T0定时方式2
32 1 TH0=0x216;//T0定时器初始化
33 1 TL0=0x216;
34 1 TH1=(65536-4000)/256;//T1定时器高位
35 1 TL1=(65536-4000)%256;//T1定时器底位
36 1 TR1=1;//T1运行控制位,启动运行
37 1 TR0=1;//T0运行控制位,启动运行
38 1 ET0=1;//T0溢出标志位
39 1 ET1=1;//T1溢出标志位
40 1 EA=1;//开总的中断位
41 1 ST=1;
42 1 ST=0;
43 1 while(1)
44 1 {
45 2 //LED灯是否闪烁
46 2 if((lowflag==1) &&(highflag==0))
47 2 {
48 3 LED1=0;
49 3 LED2=1;
50 3 }
51 2 else if((highflag==1) && (lowflag==0))
52 2 {
53 3 LED1=1;
54 3 LED2=0;
55 3 }
C51 COMPILER V7.01 TEMPER 04/03/2009 09:54:10 PAGE 2
56 2 else
57 2 {
58 3 LED1=1;
59 3 LED2=1;
60 3 }
61 2
62 2 }
63 1
64 1 }
65
66 void t0(void) interrupt 1 using 0
67 {
68 1 CLK=~CLK;//延时
69 1 }
70 //////////////定时温度A/D转换函数
71 void t1(void) interrupt 3 using 0
72 {
73 1 TH1=(65536-500)/256;//定时
74 1 TL1=(65536-500)%256;
75 1 if(EOC==1)
76 1 {
77 2 OE=1;
78 2 getdata=P0;//D/A转换
79 2 OE=0;
80 2 temp=getdata*25;
81 2 temp=temp/64;
82 2 dispbuf[2]=temp/100;
83 2 dispbuf[3]=temp/10;
84 2 dispbuf[4]=temp%10;
85 2
86 2 if(getdata<77)//低温
87 2 {
88 3 lowflag=1;
89 3 highflag=0;
90 3 }
91 2 else if(getdata>153)//高温
92 2 {
93 3 lowflag=0;
94 3 highflag=1;
95 3 }
96 2 else//正常温度
97 2 {
98 3 lowflag=0;
99 3 highflag=0;
100 3 }
101 2 ST=1;
102 2 ST=0;
103 2 }
104 1 ////数码管显示
105 1 P2=0xff;//数码管初选
106 1 P1=dispcode[dispbuf[time]];//取数码管段编码
107 1 P2=dispbitcode[time];//数码管位编码
108 1 ////延时
109 1 time++;
110 1 if(time==8)
111 1 {
112 2 time=0;
113 2 }
114 1 //报警显示和蜂鸣器鸣叫
115 1 if((lowflag==1) && (highflag==0))
116 1 {
117 2 cnta++;
C51 COMPILER V7.01 TEMPER 04/03/2009 09:54:10 PAGE 3
118 2 if(cnta==800)
119 2 {
120 3 cnta=0;
121 3 alarmflag=~alarmflag;//报警位
122 3 }
123 2 if(alarmflag==1)
124 2 {
125 3 BELL=~BELL;//蜂鸣器报警
126 3 }
127 2 }
128 1 else if((lowflag==0) && (highflag==1))
129 1 {
130 2 cntb++;
131 2 if(cntb==400)
132 2 {
133 3 cntb=0;
134 3 alarmflag=~alarmflag;
135 3 }
136 2 if(alarmflag==1)
137 2 {
138 3 BELL=~BELL;
139 3 }
140 2 }
141 1 else
142 1 {
143 2 alarmflag=0;
144 2 cnta=0;
145 2 cntb=0;
146 2 }
147 1 }
148
149
150
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 323 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -