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