📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 02/08/2011 09:22:39 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\main.c BROWSE INCDIR(include/) DEBUG OBJECTEXTEND PRINT(.\main.lst)
-OBJECT(main.obj)
line level source
1 /*
2 * check power up times
3 *
4 * author:金沙滩--刚哥
5 * date:2011.1.9
6 */
7
8 #include "main.h"
9 #include "e2prom.h"
10
11
12 code uint8 Ledcode[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
13 uint8 Led_n=0;
14 uint8 Led_buf[6];
15
16 POWER_UP Power_up;
17
18 void delay(uint16 cnt)
19 {
20 1 while (cnt--);
21 1 }
22
23 /*
24 * 定时器0初始化
25 */
26 void timer0_init(void)
27 {
28 1 TMOD = 0x01;
29 1 TH0 = 0xF8;
30 1 TL0 = 0xCC;
31 1 TR0 = 1;
32 1 ET0 = 0;
33 1 EA = 1;
34 1 }
35
36 /*
37 * 数码管初始化
38 */
39 void nixietube_init(void)
40 {
41 1 ADDR3 = 1;
42 1 ENLED = 0;
43 1 }
44
45 /*
46 * 制作数码管显示数据
47 */
48 void make_led_number(uint32 num)
49 {
50 1 ET0 = 0;
51 1 Led_buf[5] = Ledcode[num/100000%10];
52 1 Led_buf[4] = Ledcode[num/10000%10];
53 1 Led_buf[3] = Ledcode[num/1000%10];
54 1 Led_buf[2] = Ledcode[num/100%10];
C51 COMPILER V8.02 MAIN 02/08/2011 09:22:39 PAGE 2
55 1 Led_buf[1] = Ledcode[num/10%10];
56 1 Led_buf[0] = Ledcode[num%10];
57 1 ET0 = 1;
58 1 }
59
60 /*
61 * 数码管显示
62 */
63 void show_num(uint8 *buf)
64 {
65 1 ENLED = 1;
66 1 switch (Led_n)
67 1 {
68 2 case 0:
69 2 ADDR0 = 0;
70 2 ADDR1 = 0;
71 2 ADDR2 = 0;
72 2 P0 = buf[0];
73 2 break;
74 2 case 1:
75 2 ADDR0 = 1;
76 2 ADDR1 = 0;
77 2 ADDR2 = 0;
78 2 P0 = buf[1];
79 2 break;
80 2 case 2:
81 2 ADDR0 = 0;
82 2 ADDR1 = 1;
83 2 ADDR2 = 0;
84 2 P0 = buf[2];
85 2 break;
86 2 case 3:
87 2 ADDR0 = 1;
88 2 ADDR1 = 1;
89 2 ADDR2 = 0;
90 2 P0 = buf[3];
91 2 break;
92 2 case 4:
93 2 ADDR0 = 0;
94 2 ADDR1 = 0;
95 2 ADDR2 = 1;
96 2 P0 = buf[4];
97 2 break;
98 2 case 5:
99 2 ADDR0 = 1;
100 2 ADDR1 = 0;
101 2 ADDR2 = 1;
102 2 P0 = buf[5];
103 2 break;
104 2 }
105 1 ENLED = 0;
106 1
107 1 if (Led_n >= 5)
108 1 Led_n = 0;
109 1 else
110 1 Led_n++;
111 1 }
112
113
114 main()
115 {
116 1 nixietube_init();
C51 COMPILER V8.02 MAIN 02/08/2011 09:22:39 PAGE 3
117 1 timer0_init();
118 1
119 1 i2c_read_buf((uint8 *)&Power_up, E2P_RECORD_ADDR, sizeof(POWER_UP));
120 1 if (Power_up.flag != POWER_UP_MARK)
121 1 {
122 2 Power_up.flag = POWER_UP_MARK;
123 2 Power_up.times = 1;
124 2 }
125 1 else
126 1 {
127 2 Power_up.times++;
128 2 }
129 1 i2c_write_buf((uint8 *)&Power_up, E2P_RECORD_ADDR, sizeof(POWER_UP));
130 1
131 1 make_led_number(Power_up.times);
132 1
133 1 while (1);
134 1 }
135
136
137 void time0() interrupt 1
138 {
139 1 TR0 = 0;
140 1 TH0 = 0xF8;
141 1 TL0 = 0xCC;
142 1
143 1 show_num(Led_buf);
144 1
145 1 TR0 = 1;
146 1 }
147
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 526 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -