📄 c21-2.lst
字号:
C51 COMPILER V7.06 C21_2 09/23/2008 23:35:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE C21_2
OBJECT MODULE PLACED IN C21-2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C21-2.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG51.H>
2 #include <intrins.H>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define STATUS_KEY 0xdf
6 #define INC_KEY 0xfb
7 #define DEC_KEY 0xf7
8 #define OK_KEY 0xef
9 #define ON 0
10 #define OFF 1
11 uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
12 uchar code ACT[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
13 sbit SDA=P3^7;
14 sbit SCL=P3^6;
15 sbit OUT=P1^0;
16 uchar cnt1,cnt2,sec,min,hour,status;
17 uchar set1_m,set1_h,set2_m,set2_h;
18 uchar bdata com_data;
19 sbit mos_bit=com_data^7;
20 sbit low_bit=com_data^0;
21 bit set1_flag,set2_flag;
22 //==============================================================================
23 void pout(void);
24 uchar scan_key(void);
25 uchar rd_2401(char a);
26 void wr_2401(char a,uchar b);
27 void ic_delay(uint n);
28 void delay(uint k);
29 //==============================================================================
30 void initial(void)
31 {
32 1 uchar rd_val;
33 1 rd_val=rd_2401(100);
34 1 if(rd_val==88)
35 1 {
36 2 set1_m=rd_2401(80);ic_delay(250);
37 2 set1_h=rd_2401(81);ic_delay(250);
38 2 set2_m=rd_2401(90);ic_delay(250);
39 2 set2_h=rd_2401(90);ic_delay(250);
40 2 set1_flag=rd_2401(70);ic_delay(250);
41 2 set2_flag=rd_2401(71);ic_delay(250);
42 2 }
43 1 TMOD=0x11;
44 1 TH0=-(50000/256);
45 1 TL0=-(50000%256);
46 1 TR0=1;ET0=1;
47 1 TH1=-(1000/256);
48 1 TH1=-(1000%256);
49 1 TR1=1;ET1=1;EA=1;
50 1 }
51 //===============================================================================
52 void main(void)
53 {
54 1 uchar key_val;
55 1 initial();
C51 COMPILER V7.06 C21_2 09/23/2008 23:35:30 PAGE 2
56 1 for(;;)
57 1 {
58 2 pout();
59 2 key_val=scan_key();
60 2 if(key_val==STATUS_KEY)
61 2 {
62 3 status++;
63 3 if(status==5)
64 3 {
65 4 status=0;
66 4 EA=0;
67 4 wr_2401(80,set1_m);ic_delay(250);
68 4 wr_2401(81,set1_h);ic_delay(250);
69 4 wr_2401(90,set2_m);ic_delay(250);
70 4 wr_2401(91,set2_h);ic_delay(250);
71 4 wr_2401(70,set1_flag);ic_delay(250);
72 4 wr_2401(71,set2_flag);ic_delay(250);
73 4 wr_2401(100,88);ic_delay(250);
74 4 EA=1;
75 4 }
76 3 delay(300);
77 3 }
78 2 /********************************************************************************/
79 2 if(key_val==INC_KEY)
80 2 {
81 3 switch(status)
82 3 {
83 4 case 1:if(set1_m<59)set1_m++;delay(300);break;
84 4 case 2:if(set1_h<23)set1_h++;delay(300);break;
85 4 case 3:if(set2_m<59)set2_m++;delay(300);break;
86 4 case 4:if(set2_h<23)set2_h++;delay(300);break;
87 4 default:break;
88 4 }
89 3 }
90 2 /********************************************************************************/
91 2 if(key_val==DEC_KEY)
92 2 {
93 3 switch(status)
94 3 {
95 4 case 1:if(set1_m>0)set1_m--;delay(300);break;
96 4 case 2:if(set1_h>0)set1_h--;delay(300);break;
97 4 case 3:if(set2_m>0)set2_m--;delay(300);break;
98 4 case 4:if(set2_h>0)set2_h--;delay(300);break;
99 4 default:break;
100 4 }
101 3 }
102 2 /********************************************************************************/
103 2 if(key_val==OK_KEY)
104 2 {
105 3 if((status==1)||(status==2))set1_flag=~set1_flag;delay(300);
106 3 if((status==3)||(status==4))set2_flag=~set2_flag;delay(300);
107 3 }
108 2 }
109 1 }
110 //================================================================================
111 uchar scan_key(void)
112 {
113 1 uchar temp;
114 1 P3=0xff;
115 1 temp=P3;
116 1 if(temp!=0xff)
117 1 {
C51 COMPILER V7.06 C21_2 09/23/2008 23:35:30 PAGE 3
118 2 delay(30);
119 2 temp=P3;
120 2 if(temp!=0xff)
121 2 return temp;
122 2 }
123 1 return 0;
124 1 }
125 //=================================================================================
126 void pout(void)
127 {
128 1 if(set1_flag)
129 1 {
130 2 if((min==set1_m)&&(hour==set1_h))OUT=ON;
131 2 else OUT=OFF;
132 2 }
133 1 if(set2_flag)
134 1 {
135 2 if((min==set2_m)&&(hour==set2_h))OUT=ON;
136 2 else OUT=OFF;
137 2 }
138 1 }
139 //=================================================================================
140 void serve1(void) interrupt 1
141 {
142 1 TH0=-(50000/256);
143 1 TL0=-(50000%256);
144 1 cnt1++;
145 1 if(cnt1>=20){sec++;cnt1=0;}
146 1 if(sec>=60){min++;sec=0;}
147 1 if(min>=60){hour++;min=0;}
148 1 if(hour>=24)hour=0;
149 1 }
150 //================================================================================
151 void delay(uint k)
152 {
153 1 uint i,j;
154 1 for(i=0;i<k;i++)
155 1 {
156 2 for(j=0;j<121;j++)
157 2 {;}
158 2 }
159 1 }
160 //=================================================================================
161 void serve_2(void) interrupt 3
162 {
163 1 static bit bit_flag;
164 1 TH1=-(1000/256);
165 1 TL1=-(1000%256);
166 1 cnt2++;
167 1 if(status==0){if(cnt2>5)cnt2=0;}
168 1 else {if(cnt2>29)cnt2=0;}
169 1 if(status==0)
170 1 {
171 2 switch(cnt2)
172 2 {
173 3 case 0:P0=SEG7[sec%10];P2=ACT[0];break;
174 3 case 1:P0=SEG7[sec/10];P2=ACT[1];break;
175 3 case 2:P0=SEG7[min%10];P2=ACT[2];break;
176 3 case 3:P0=SEG7[min/10];P2=ACT[3];break;
177 3 case 4:P0=SEG7[hour%10];P2=ACT[4];break;
178 3 case 5:P0=SEG7[hour/10];P2=ACT[5];break;
179 3 default:break;
C51 COMPILER V7.06 C21_2 09/23/2008 23:35:30 PAGE 4
180 3 }
181 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -