📄 课设2.lst
字号:
C51 COMPILER V7.50 课设2 06/24/2006 19:31:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 课设2
OBJECT MODULE PLACED IN 课设2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 课设2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define uchar unsigned char
3 uchar cout, k;//计数标志。
4 unsigned int cout_j;
5 uchar miao = 0; //时间初始化
6 uchar fen = 0;
7 uchar hour = 10;
8 uchar flag,i,key,n=0;
9 sbit P0_0=P0^0;
10 sbit P0_1=P0^1;
11 sbit P0_2=P0^2;
12 bit flag_arm,flag_1,flag_ma;//超过60分报警标志
13 uchar huanchun[6];
14 uchar duanma[11] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};
15 uchar weima[6] ={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};
16 unsigned char code b[]={10,3,2,1,11,6,5,4,12,9,8,7,13,14,0,15};
17 uchar room[8][3];
18 void delay(uchar i,uchar k)
19 {
20 1 do{ if(flag_ma==0)
21 2 { huanchun[0] = miao % 10;
22 3 huanchun[1] = miao / 10;
23 3 huanchun[2] = fen % 10;
24 3 huanchun[3] = fen / 10;
25 3 huanchun[4] = hour % 10;
26 3 huanchun[5] = hour / 10;
27 3 }
28 2 else
29 2 { huanchun[0] = room[k][0] % 10;
30 3 huanchun[1] = room[k][0] / 10;
31 3 huanchun[2] = room[k][1]% 10;
32 3 huanchun[3] = room[k][1] / 10;
33 3 huanchun[4] = room[k][2] % 10;
34 3 huanchun[5] = room[k][2] / 10;
35 3 }
36 2 }while(i--);
37 1 }
38 baocun(uchar i)
39 { room[i][0]=miao;
40 1 room[i][1]=fen;
41 1 room[i][2]=hour;
42 1 }
43 void dingshi()interrupt 1 //定时50ms
44 {
45 1 TH0 = 0xee;
46 1 TL0 = 0x00;
47 1 cout++;
48 1 if (cout == 2) // 以秒为单位
49 1 {
50 2 miao++;
51 2 cout = 0;
52 2 cout_j++;//计数标志。
53 2 if(cout_j==660)flag_1=1,P0_0=0; //
54 2 if(cout_j==3600){flag_arm=1;P0_1=0;baocun(n);n++;}//报警开,记录当前时刻,存储单元指向下一个以便下次报警
-记录时间
C51 COMPILER V7.50 课设2 06/24/2006 19:31:33 PAGE 2
55 2 if (miao== 60)
56 2 {
57 3 miao = 0;
58 3 fen++;
59 3 if (fen == 60)
60 3 {
61 4 fen = 0;
62 4 hour++;
63 4 if (hour == 12)
64 4 hour = 0;
65 4 }
66 3 }
67 2 }
68 1 }
69 void xianshi()interrupt 3 using 1 //中断显示
70 {
71 1 TH1=0Xf8; //显示定时两毫秒。
72 1 TL1=0Xcc;
73 1 P1 = weima[i];
74 1 P2 = duanma[huanchun[i]];
75 1 i++;
76 1 if (i==6)i=0;
77 1 }
78 unsigned char scankey(){
79 1 unsigned char k,down,up;
80 1 P3=0x00;
81 1 P3=0xF0;
82 1 k=P3;
83 1 if(k==0xF0)return 0xFF;
84 1 delay(100,key); ////////////
85 1 down=3;
86 1 while(k&0x80)down--,k<<=1;
87 1 P3=0x00;
88 1 P3=0x0F;
89 1 k=P3;
90 1 if(k==0x0F)return 0xFF;
91 1 up=0;
92 1 while(k&0x01)up+=4,k>>=1;
93 1 return b[up+down];
94 1 }//scankey
95 songjian()
96 { unsigned char k;
97 1 while(1)
98 1 { k=scankey();
99 2 if(k==scankey()&&k==0xff)break;
100 2 }
101 1 }
102 shortb(uchar i)
103 { do{
104 2 P0_0=~P0_0;
105 2 do{
106 3 P0_2=~P0_2; //
107 3 delay(1); //P0_3 取反频率
*** WARNING C209 IN LINE 107 OF 课设2.C: '_delay': too few actual parameters
108 3 }while(i--);// P0_4取反频率
109 2 }while(flag_1);
110 1 }
111
112 longb(uchar i)
113 { do{
114 2 P0_1=~P0_1;
115 2 do{
C51 COMPILER V7.50 课设2 06/24/2006 19:31:33 PAGE 3
116 3 P0_2=~P0_2; //
117 3 delay(1); //P0_3 取反频率
*** WARNING C209 IN LINE 117 OF 课设2.C: '_delay': too few actual parameters
118 3 }while(i--);// P0_4取反频率
119 2 }while(flag_arm);
120 1 }
121 void main()
122 {
123 1 IP=0X0A; //T0,T1,INT0,INT1,
124 1 TMOD = 0X11;
125 1 TH0 = 0Xee;
126 1 TL0 = 0X00;
127 1 TH1=0Xf8;
128 1 TL1=0Xcc;
129 1 EA = 1;
130 1 ET0 = 1;
131 1 ET1=1;
132 1 TR1=1;
133 1 TR0 = 1;
134 1 while (1)
135 1 { k=scankey();
136 2 delay(100,key); //////////////////////////////////////////////
137 2 if(k==scankey()&&k!=0xFF)
138 2 { songjian();
139 3 if(k==15)
140 3 { flag_1=0;
141 4 flag_arm=0;
142 4 cout_j=0; //复位,清计数,定时
143 4 }
144 3 else {key=k;flag_ma=~flag_ma; } //显示记录的时间
145 3 }
146 2 if(flag_1==1)shortb(100);
147 2 if(flag_arm==1)longb(100);
148 2 }
149 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 542 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 58 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -