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