📄 rs1.lst
字号:
C51 COMPILER V7.50 RS1 05/29/2008 14:00:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE RS1
OBJECT MODULE PLACED IN RS1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RS1.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<INTRINS.H>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define NOP _nop_()
6 #define DISOFF 0X3F
7 #define TH0_RELOAD 0xd8 //10ms定时器中断重载值
8 #define TL0_RELOAD 0xef
9 /*Timer*/
10 bit bdata f_10ms; /*T0中断10ms到标志*/
11 bit bdata f_20ms; /*20ms按键判断标志*/
12 bit bdata f_200ms; /*20ms按键判断标志*/
13 bit bdata f_400ms; /*400ms按键判断标志*/
14 bit bdata f_1s; /*1秒采样标志*/
15 bit bdata f_20s; /*20秒一个控制周期标志*/
16 #define INT20MSCOUNT 2
17 uchar data cnt_20ms=INT20MSCOUNT;/*按键判断20ms*/
18 #define INT200MSCOUNT 10
19 uchar data cnt_200ms=INT200MSCOUNT;/*AD读500ms*/
20 #define INT400MSCOUNT 2
21 uchar data cnt_400ms=INT400MSCOUNT;/*AD读500ms*/
22 #define INT1SCOUNT 2
23 uchar data cnt_1s=INT1SCOUNT;/*1s*/
24 #define INT20SCOUNT 20
25 uchar data cnt_20s=INT20SCOUNT;/*定时20s计数器*/
26 //********************************
27 #define LED2_PORT P0
28 uchar data disbuf[2]={0,0};
29 uchar data temper[2]={0,0};
30 uchar code distab[10]={0x41,0xe7,0x52,0x62,0xe4,0x68,0x48,0xe3,0x40,0x60};
31 uchar code tab_w[]={0X80,0X40};/*LED2,LED1,位选码表 P2.6-->LED2,P2.7-->LED1*/
32 //P1 |= B0000_0111 熄灭
33 sbit LED1 = P2^7;
34 sbit LED2 = P2^6;
35 uchar data scan;/*显示哪个LED*/
36 uchar data adtmp[10];
37 uchar data sec_cnt;
38 uchar data keytask;
39 bit bdata fkey;
40 uchar data led_cnt;
41 //********************************
42 void main_init(void);
43 void uart_init(void);
44 void ad_init(void);
45 void dis_init(void);
46 void send8(uchar temp);
47 void delay(uint temp);
48 uchar tlc549(void);
49 uchar datlb(uchar data adc);/*数据滤波,和前9次采样值一起,去最大最小值,取平均值*/
50 void datclf(uchar data ad_dat);
51 void tim0_mainloop(void);
52 void dis_mainloop(void);
53 void ad_mainloop(void);
54 void data_mainloop(void);
55 void tim0_init(void);
C51 COMPILER V7.50 RS1 05/29/2008 14:00:53 PAGE 2
56 void key_mainloop(void);
57 //********************************
58 void main(void)
59 {
60 1 main_init();
61 1 EA = 1;
62 1 //send8(0x55);send8(0xaa);
63 1 while(1)
64 1 {
65 2 tim0_mainloop();
66 2 dis_mainloop();
67 2 //send8(0x55);send8(0xaa);
68 2 }
69 1 }
70 //****************************
71 void dis_mainloop()
72 {
73 1 uchar ch;
74 1 if(!f_10ms)return;
75 1 f_10ms = 0;
76 1 P2 &= DISOFF;//关显示
77 1 ch = disbuf[scan]; /*得到当前要显示值*/
78 1 LED2_PORT = distab[ch];
79 1 P2 |= tab_w[scan];
80 1 if(++scan==2)scan=0;
81 1 }
82 //********************************
83 //*产生各种时间控制
84 void tim0_mainloop()
85 { if(!f_10ms) return;
86 1 if(--cnt_20ms==0)
87 1 {
88 2 cnt_20ms=INT20MSCOUNT;
89 2 f_20ms=1; /*20ms*/
90 2 if(--cnt_200ms==0)
91 2 {
92 3 cnt_200ms=INT200MSCOUNT;
93 3 f_200ms=1; /*200ms*/
94 3 if(--cnt_400ms==0)
95 3 {
96 4 cnt_400ms=INT400MSCOUNT;
97 4 f_400ms=1; /*400ms*/
98 4 if(--cnt_1s==0)
99 4 {
100 5 cnt_1s=INT1SCOUNT;
101 5 f_1s=1; /*1s*/
102 5 if(--cnt_20s==0)
103 5 {
104 6 cnt_20s=INT20SCOUNT;
105 6 f_20s=1; /*20秒*/
106 6 }
107 5 }
108 4 }
109 3 }
110 2 }
111 1 }
112
113 //*********************
114 void main_init(void)
115 {
116 1 uart_init();
117 1 // dis_init();
C51 COMPILER V7.50 RS1 05/29/2008 14:00:53 PAGE 3
118 1 tim0_init();
119 1 scan=0;
120 1 sec_cnt=0;
121 1 }
122 //*********************
123 /*定时器0中断服务,产生10ms定时*/
124 void tim0(void) interrupt 1
125 {
126 1 TH0=TH0_RELOAD;TL0=TL0_RELOAD;
127 1 f_10ms=1;
128 1 }
129 //*********************
130 void serial(void) interrupt 4
131 {
132 1 uchar temp;
133 1 if(RI)RI=0;
134 1 temp=SBUF;
135 1 send8(temp);
136 1 disbuf[0] =temp/10;
137 1 disbuf[1] =temp%10;
138 1 if(disbuf[0]>9){disbuf[0]=9;disbuf[1]=9;}
139 1
140 1 }
141
142 //*********************
143 void tim0_init(void)
144 {
145 1 TMOD=0x01; /*T0定时10ms中断显示*/
146 1 TH0=TH0_RELOAD;
147 1 TL0=TL0_RELOAD;
148 1 ET0=1;
149 1 TR0=1;
150 1 }
151 //*********************
152 void uart_init(void)
153 {
154 1 T2CON = 0x34;//12clk-9600 6clk-19200
155 1 RCAP2H = 0xFF;
156 1 RCAP2L = 0xD9;
157 1 SCON = 0x50;
158 1 ES=1;//串口中断
159 1 }
160 //*********************
161 void send8(uchar temp)
162 {
163 1 SBUF = temp;
164 1 while(!TI);
165 1 TI=0;
166 1 }
167 //*********************
168
169
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 259 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 1
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
C51 COMPILER V7.50 RS1 05/29/2008 14:00:53 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -