📄 课设3.lst
字号:
C51 COMPILER V7.50 课设3 06/26/2006 22:18:32 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 课设3
OBJECT MODULE PLACED IN 课设3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 课设3.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 unsigned char code d[10] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
3 unsigned char code w[6] ={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};
4 unsigned char b[9][3],a[6];
5 unsigned char cout, k;//计数标志。
6 unsigned int cout_j;
7 unsigned char sc= 0; //时间初始化
8 unsigned char mi= 0;
9 unsigned char hour = 10;
10 unsigned char i,key,n=0;
11 sbit P3_0=P3^0;
12 sbit P3_1=P3^1;
13 sbit P3_2=P3^2;
14 sbit P3_4=P3^4;
15 sbit P2_7=P2^7;
16 bit bj_60,bj_11,bj_10,bj_ma,bj_c;//超过60分报警标志
17 void delay(unsigned char i,unsigned char k)
18 {
19 1 do{ if(bj_ma==1)
20 2 { a[0] = b[k][0] % 10;
21 3 a[1] = b[k][0] / 10;
22 3 a[2] = b[k][1]% 10;
23 3 a[3] = b[k][1] / 10;
24 3 a[4] =b[k][2] % 10;
25 3 a[5] = b[k][2] / 10;
26 3 }
27 2 else
28 2 { a[0] = sc % 10;
29 3 a[1] = sc / 10;
30 3 a[2] = mi % 10;
31 3 a[3] = mi / 10;
32 3 a[4] = hour % 10;
33 3 a[5] = hour / 10;
34 3 }
35 2 }while(i--);
36 1 }
37 cc(unsigned char i) //保存当前时刻时间数据
38 { b[i][0]=sc;
39 1 b[i][1]=mi;
40 1 b[i][2]=hour;
41 1 }
42 void wait()interrupt 1 //定时50ms
43 {
44 1 TH0 = 0xee;
45 1 TL0 = 0x00;
46 1 cout++;
47 1 P3_4=0; //外部定时报警
48 1 if (cout==2) // 以秒为单位
49 1 { bj_c=~bj_c; //10min时灯闪的频率定为2秒
50 2 sc++;
51 2 cout = 0;
52 2 cout_j++;//计数标志。
53 2 if (sc==60)
54 2 {
55 3 sc = 0;
C51 COMPILER V7.50 课设3 06/26/2006 22:18:32 PAGE 2
56 3 mi++;
57 3 if (mi==60)
58 3 {
59 4 mi = 0;
60 4 hour++;
61 4 if (hour==24)hour = 0;
62 4 }
63 3 }
64 2 if(cout_j==600)bj_10=1;//10MIN标志,
65 2 if(cout_j==660)bj_11=1; //11分标志,
66 2 if(cout_j==3600){bj_60=1;cc(n);n++;}
67 2 //报警开,记录当前时刻,存储单元指向下一个以便下次报警记录时间
68 2 }
69 1 }
70 void kk()interrupt 3 //中断显示
71 {
72 1 TH1=0Xf8; //显示定时两毫秒。
73 1 TL1=0Xcc;
74 1 P1 = w[i];
75 1 P2 = d[a[i]];
76 1 i++;
77 1 if((i==3||i==5)&&bj_ma==0)P2_7=bj_c;
78 1 if(i==6)i=0;
79 1 }
80 mm()
81 {
82 1 unsigned char k,down,up;
83 1 P0=0x00;
84 1 P0=0xF0;
85 1 k=P0;
86 1 if(k==0xF0)return 0xFF;
87 1 delay(100,key); ////////////
88 1 down=3;
89 1 while(k&0x80)down--,k<<=1;
90 1 P0=0x00;
91 1 P0=0x0F;
92 1 k=P0;
93 1 if(k==0x0F)return 0xFF;
94 1 up=0;
95 1 while(k&0x01)up+=4,k>>=1;
96 1 return up+down;
97 1 }//scankey
98 tt() //松键操作
99 { unsigned char k;
100 1 while(1)
101 1 { k=mm();
102 2 if(k==mm()&&k==0xff)break;
103 2 }
104 1 }
105 void jb()interrupt 2 //定时中断显示
106 { P3_4=1; //定时标志
107 1 if(bj_10==1){P3_2=bj_c;}
108 1 if(bj_11==1){P3_0=~P3_0;P3_2=~P3_2;bj_10=0;}//11min灯1s闪烁,
109 1 if(bj_60==1)
110 1 { P3_1=~P3_1;
111 2 P3_2=0;
112 2 bj_11=0;
113 2 P3_0=1;
114 2 }
115 1 }
116 void main()
117 {
C51 COMPILER V7.50 课设3 06/26/2006 22:18:32 PAGE 3
118 1 IP=0X0A; //T0,T1,INT1,
119 1 TMOD = 0X11;
120 1 TH0 = 0Xee;
121 1 TL0 = 0X00;
122 1 TH1=0Xf8;
123 1 TL1=0Xcc;
124 1 IE=0X8E;
125 1 TCON=0X5C;
126 1 while (1)
127 1 { k=mm();
128 2 delay(100,key); //////////////////////////////////////////////
129 2 if(k==mm()&&k!=0xFF)
130 2 { tt();
131 3 switch(i)
132 3 {
133 4 case 8:key=8;
134 4 b[8][0]=n;
135 4 b[8][1]=0;
136 4 b[8][2]=0;
137 4 bj_ma=~bj_ma;
138 4 break;
139 4 case 9:bj_11=0;
140 4 bj_10=0;
141 4 bj_60=0;
142 4 cout_j=0;
143 4 P3_0=1;
144 4 P3_1=1;
145 4 P3_2=1;
146 4 break; //复位,清计数,定时
147 4 case 10:
148 4 case 11:
149 4 case 12:
150 4 case 13:
151 4 case 14:
152 4 case 15:break;
153 4 default:key=k;bj_ma=~bj_ma; //显示记录的时间
154 4 }
155 3 }
156 2 }
157 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 603 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 ----
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -