📄 93c46.lst
字号:
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 93C46
OBJECT MODULE PLACED IN 93c46.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 93c46.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************
2 k1 = 位选数码管
3 k2 = 加
4 k3 = 擦除
5 k4 = 保存
6 ********************************************************************/
7
8
9
10
11 #include <reg51.h>
12 #include <intrins.h>
13
14
15 //define OP code
16 #define OP_EWEN_H 0x00 // 00 write enable
17 #define OP_EWEN_L 0x60 // 11X XXXX write enable
18 #define OP_EWDS_H 0x00 // 00 disable
19 #define OP_EWDS_L 0x00 // 00X XXXX disable
20
21 #define OP_WRITE_H 0x40 // 01 A6-A0 write data
22 #define OP_READ_H 0x80 // 10 A6-A0 read data
23
24 #define OP_ERASE_H 0xc0 // 11 A6-A0 erase a word
25
26 #define OP_ERAL_H 0x00 // 00 erase all
27 #define OP_ERAL_L 0x40 // 10X XXXX erase all
28 #define OP_WRAL_H 0x00 // 00 write all
29 #define OP_WRAL_L 0x20 // 01X XXXX write all
30
31
32 //define pin
33 sbit CS = P1^6;
34 sbit SK = P1^4;
35 sbit DI = P1^5;
36 sbit DO = P1^7;
37 sbit k1=P1^0;
38 sbit k2=P1^1;
39 sbit k3=P1^2;
40 sbit k4=P1^3;
41 sbit disp_bit0=P2^0;
42 sbit disp_bit1=P2^1;
43 sbit disp_bit2=P2^2;
44 sbit disp_bit3=P2^3;
45 sbit disp_bit4=P2^4;
46 sbit disp_bit5=P2^5;
47 sbit disp_bit6=P2^6;
48 sbit disp_bit7=P2^7;
49
50 void start();
51 void ewen();// 使能写入操作
52 void ewds();// 禁止写入操作
53 void erase();// 擦除全部内容
54 void write(unsigned char addr, unsigned char indata);
55 unsigned char read(unsigned char addr);
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 2
56 void inop(unsigned char op_h, unsigned char op_l);
57 void shin(unsigned char indata);
58 unsigned char shout();
59 unsigned char key_scan();
60 void delay_1ms(unsigned char ms);
61 bit flash_bit,flash_cpl;
62 unsigned char eeprom_data[8],flash_number_bit,flash_500ms,disp_bit;
63 unsigned char disp_code[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,6
64 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//7,8,9,A,B,C,D,E,F,-
65
66
67 main()
68 {
69 1 unsigned char i,key_s,key_v,key_number;
70 1 TMOD&=0xf0;
71 1 TMOD|=0x01;
72 1 TH0=0xec;
73 1 TL0=0x78;
74 1 ET0=1;
75 1 flash_bit=1;
76 1 flash_cpl=1;
77 1 flash_500ms=0x00;
78 1 disp_bit=0x00;
79 1 EA=1;
80 1 TR0=1;
81 1 CS = 0; //初始化端口
82 1 SK = 0;
83 1 DI = 1;
84 1 DO = 1;
85 1 for(i=0;i<8;i++)
86 1 eeprom_data[i]=read(i);
87 1 for(i=0;i<8;i++)
88 1 {
89 2 if(eeprom_data[i]==0xff)
90 2 eeprom_data[i]=0x0f;
91 2 }
92 1 for(;;)
93 1 {
94 2 key_s=key_scan();
95 2 if(key_s^key_v)
96 2 {
97 3 delay_1ms(10);
98 3 key_s=key_scan();
99 3 if(key_s^key_v)
100 3 {
101 4 key_v=key_s;
102 4 if((key_s&0x08)==0x00)
103 4 {
104 5 flash_bit=0;
105 5 key_number=0x01;
106 5 flash_number_bit=0x01;
107 5 ewen();
108 5 //处理第1位数码管
109 5 do
110 5 {
111 6 key_s=key_scan();
112 6 if(key_s^key_v)
113 6 {
114 7 delay_1ms(10);
115 7 key_s=key_scan();
116 7 if(key_s^key_v)
117 7 {
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 3
118 8 key_v=key_s;
119 8 if((key_s&0x08)==0x00)
120 8 {
121 9 key_number=0x02;
122 9 flash_number_bit=0x02;
123 9 }
124 8 else if((key_s&0x04)==0x00)
125 8 {
126 9 if(++eeprom_data[0]==0x10)
127 9 eeprom_data[0]=0x00;
128 9 while(k2==0)
129 9 {
130 10 delay_1ms(200);
131 10 if(k2==0)
132 10 {
133 11 delay_1ms(100);
134 11 if(++eeprom_data[0]==0x10)
135 11 eeprom_data[0]=0x00;
136 11 }
137 10 }
138 9 }
139 8 else if((key_s&0x02)==0x00)
140 8 {
141 9 erase();
142 9 for(i=0;i<10;i++)
143 9 eeprom_data[i]=0x0f;
144 9 }
145 8 else if((key_s&0x01)==0x00)
146 8 {
147 9 erase();
148 9 for(i=0;i<8;i++)
149 9 write(i, eeprom_data[i]);
150 9 ewds();
151 9 flash_bit=1;
152 9 key_number=0x00;
153 9 }
154 8 }
155 7 }
156 6 }while(key_number==0x01);
157 5 //处理第2位数码管
158 5 do
159 5 {
160 6 key_s=key_scan();
161 6 if(key_s^key_v)
162 6 {
163 7 delay_1ms(10);
164 7 key_s=key_scan();
165 7 if(key_s^key_v)
166 7 {
167 8 key_v=key_s;
168 8 if((key_s&0x08)==0x00)
169 8 {
170 9 key_number=0x03;
171 9 flash_number_bit=0x03;
172 9 ewen();
173 9 }
174 8 else if((key_s&0x04)==0x00)
175 8 {
176 9 if(++eeprom_data[1]==0x10)
177 9 eeprom_data[1]=0x00;
178 9 while(k2==0)
179 9 {
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 4
180 10 delay_1ms(200);
181 10 if(k2==0)
182 10 {
183 11 delay_1ms(100);
184 11 if(++eeprom_data[1]==0x10)
185 11 eeprom_data[1]=0x00;
186 11 }
187 10 }
188 9 }
189 8 else if((key_s&0x02)==0x00)
190 8 {
191 9 erase();
192 9 for(i=0;i<10;i++)
193 9 eeprom_data[i]=0x0f;
194 9 }
195 8 else if((key_s&0x01)==0x00)
196 8 { for(i=0;i<8;i++)
197 9 write(i, eeprom_data[i]);
198 9 ewds();
199 9 flash_bit=1;
200 9 key_number=0x00;
201 9 }
202 8 }
203 7 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -