📄 时钟显示.lst
字号:
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 时钟显蔩
OBJECT MODULE PLACED IN 时钟显示.OBJ
COMPILER INVOKED BY: F:\程序\应用程序\Keil(微机原理)\C51\BIN\C51.EXE 时钟显示.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include<reg52.h>
2 void time0(void);
3 void time1(void);
4 void charge(void);
5 //sbit P25=P2^5;
6 void which_row_key_down();
7 void which_line_key_down();
8 void delay_10ms();
9 unsigned char if_keydown();
10
11 unsigned char line,x;
12 unsigned char i,j,d,buff;
13
14 //unsigned char b;
15 //unsigned char cycle;
16 unsigned char timer,tim,a;
17 /*unsigned char ho_high=0;
18 unsigned char ho_low=0;
19 unsigned char mi_high=0;
20 unsigned char mi_low=0;
21 unsigned char se_high=0;
22 unsigned char se_low=0;*/
23 unsigned char buffer_1[6],buffer_2[6];
24
25
26 unsigned char code tab_1[10]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0x07,0x7f,0x6f};
27 unsigned char code tab_2[6]={0X01,0X02,0X04,0x08,0X10,0X20};
28 //unsigned char code b[16]={0x3f,0x06,0x5b,0x4f,0x67,0x66,0x6d,0x7d,0x7f,0x07,0x7f,0x6f,0x39,0x5c,0x79,0x7
-1};
29
30 //unsigned char r1;
31 void main(void)
32 {
33 1 buffer_1[0]=0;
34 1 buffer_1[1]=0;
35 1 buffer_1[2]=0;
36 1 buffer_1[3]=0;
37 1 buffer_1[4]=0;
38 1 buffer_1[5]=0;
39 1 buffer_2[0]=0;
40 1 buffer_2[1]=0;
41 1 buffer_2[2]=0;
42 1 buffer_2[3]=0;
43 1 buffer_2[4]=0;
44 1 buffer_2[5]=0;
45 1 buff=1;
46 1 TMOD=1;
47 1 IE=0X8a;
48 1 TCON=0X11;
49 1 PT0=1;
50 1
51 1 tim=6;
52 1 timer=15;
53 1 TH0=0Xbd;
54 1 TL0=0Xc0;
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 2
55 1 // TH1=0Xf8;
56 1 // TL1=0Xff;
57 1 TR0=1;
58 1 TR1=1;
59 1 do{
60 2 if(if_keydown())
61 2 {
62 3 //which_row_key_down();
63 3 which_line_key_down();
64 3 //x=line*4+row;
65 3 //P2=b[x];
66 3 }
67 2 }while(1);
68 1 }
69 void time0(void) interrupt 1 using 0
70 {
71 1 if(!timer)
72 1 {
73 2 buffer_1[5]=buffer_1[5]+1;
74 2 charge();
75 2 TH0=0Xbd;
76 2 TL0=0Xc0;
77 2 timer=15;
78 2 }
79 1 else{timer--;}
80 1 TR0=1;
81 1 //TH0=0Xff;
82 1 //TL0=0Xf1;
83 1
84 1 }
85 void time1(void) interrupt 3 using 0
86 {
87 1 if(tim)
88 1 {
89 2 a=6-tim;
90 2 P1=tab_2[a];
91 2 if(buff)
92 2 {
93 3 P2=tab_1[buffer_1[a]];
94 3 }
95 2 else
96 2 {
97 3 P2=tab_1[buffer_2[a]];
98 3 }
99 2 tim--;
100 2 if(tim==0)
101 2 {
102 3 tim=6;
103 3 }
104 2 }
105 1 // while(--tim);
106 1
107 1
108 1 TR1=1;
109 1 TH1=0Xf8;
110 1 TL1=0Xff;
111 1
112 1 }
113 void charge(void)
114 {
115 1 if(buffer_1[5]==10)
116 1 {
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 3
117 2 buffer_1[5]=0;
118 2 buffer_1[4]=buffer_1[4]+1;
119 2 }
120 1 if(buffer_1[4]==6)
121 1 {
122 2 buffer_1[4]=0;
123 2 buffer_1[3]=buffer_1[3]+1;
124 2 }
125 1 if(buffer_1[3]==10)
126 1 {
127 2 buffer_1[3]=0;
128 2 buffer_1[2]=buffer_1[2]+1;
129 2 }
130 1 if(buffer_1[2]==6)
131 1 {
132 2 buffer_1[2]=0;
133 2 buffer_1[1]=buffer_1[1]+1;
134 2 }
135 1 if(buffer_1[1]==10&&buffer_1[0]!=2)
136 1 {
137 2 buffer_1[1]=0;
138 2 buffer_1[0]=buffer_1[0]+1;
139 2 }
140 1 if(buffer_1[1]==4&&buffer_1[0]==2)
141 1 {
142 2 buffer_1[1]=0;
143 2 buffer_1[0]=0;
144 2 }
145 1 }
146
147 unsigned char if_keydown()
148 {
149 1 P0=0xf0;
150 1 //P0=0xf0;
151 1 i=P0;
152 1 if(i==0x70)
153 1 {
154 2 delay_10ms();
155 2 i=P0;
156 2 if(i==0x70)
157 2 {return 1;}
158 2 else return 0;
159 2 }
160 1 return 0;
161 1 }
162 /*void which_row_key_down()
163 {
164 P0=0xf0;
165 c=P0;
166 switch(c)
167 {
168 case 0x70:row=0;break;
169 case 0xb0:row=1;break;
170 case 0xd0:row=2;break;
171 case 0xe0:row=3;break;
172 }
173 }*/
174 void which_line_key_down()
175 {
176 1 P0=0x0f;
177 1 d=P0;
178 1 switch(d)
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 4
179 1 {
180 2 case 0x07:line=3,buff=0;break;
181 2 case 0x0b:line=2;break;
182 2 case 0x0d:line=1;break;
183 2 case 0x0e:line=0;break;
184 2 }
185 1 }
186 void delay_10ms()
187 {
188 1 for(i=0;i<2;i++)
189 1 for(j=0;j<40;j++)
190 1 ;
191 1 }
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN)
; SOURCE LINE # 31
; SOURCE LINE # 32
; SOURCE LINE # 33
0000 E4 CLR A
0001 F500 R MOV buffer_1,A
; SOURCE LINE # 34
0003 F500 R MOV buffer_1+01H,A
; SOURCE LINE # 35
0005 F500 R MOV buffer_1+02H,A
; SOURCE LINE # 36
0007 F500 R MOV buffer_1+03H,A
; SOURCE LINE # 37
0009 F500 R MOV buffer_1+04H,A
; SOURCE LINE # 38
000B F500 R MOV buffer_1+05H,A
; SOURCE LINE # 39
000D F500 R MOV buffer_2,A
; SOURCE LINE # 40
000F F500 R MOV buffer_2+01H,A
; SOURCE LINE # 41
0011 F500 R MOV buffer_2+02H,A
; SOURCE LINE # 42
0013 F500 R MOV buffer_2+03H,A
; SOURCE LINE # 43
0015 F500 R MOV buffer_2+04H,A
; SOURCE LINE # 44
0017 F500 R MOV buffer_2+05H,A
; SOURCE LINE # 45
0019 750001 R MOV buff,#01H
; SOURCE LINE # 46
001C 758901 MOV TMOD,#01H
; SOURCE LINE # 47
001F 75A88A MOV IE,#08AH
; SOURCE LINE # 48
0022 758811 MOV TCON,#011H
; SOURCE LINE # 49
0025 D2B9 SETB PT0
; SOURCE LINE # 51
0027 750006 R MOV tim,#06H
; SOURCE LINE # 52
002A 75000F R MOV timer,#0FH
; SOURCE LINE # 53
002D 758CBD MOV TH0,#0BDH
; SOURCE LINE # 54
0030 758AC0 MOV TL0,#0C0H
; SOURCE LINE # 57
0033 D28C SETB TR0
; SOURCE LINE # 58
0035 D28E SETB TR1
0037 ?C0003:
; SOURCE LINE # 59
; SOURCE LINE # 60
0037 120000 R LCALL if_keydown
003A EF MOV A,R7
003B 60FA JZ ?C0003
; SOURCE LINE # 61
; SOURCE LINE # 63
003D 120000 R LCALL which_line_key_down
C51 COMPILER V7.50 时钟显蔩 09/05/2006 21:35:27 PAGE 6
; SOURCE LINE # 66
; SOURCE LINE # 67
0040 80F5 SJMP ?C0003
; FUNCTION main (END)
; FUNCTION time0 (BEGIN)
0000 C0E0 PUSH ACC
0002 C0F0 PUSH B
0004 C083 PUSH DPH
0006 C082 PUSH DPL
0008 C0D0 PUSH PSW
000A 75D000 MOV PSW,#00H
; SOURCE LINE # 69
; SOURCE LINE # 71
000D E500 R MOV A,timer
000F 7010 JNZ ?C0006
; SOURCE LINE # 72
; SOURCE LINE # 73
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -