📄 alarm.lst
字号:
C51 COMPILER V6.12 ALARM 04/09/2004 22:23:32 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE ALARM
OBJECT MODULE PLACED IN .\alarm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\alarm.c DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2
3 #define uint unsigned int
4 #define uchar unsigned char
5
6 sbit ring = P1^0;
7 sbit bClk = P3^0;
8 sbit bDin = P3^1;
9
10 //led显示特殊符号
11 #define SPAC 10//led code blank
12 #define NEG 11// -
13 #define ON 12// n
14 #define OFF 13// F
15 #define CUR 14// C
16 #define DEW 15// d
17 #define TEM 16// t
18 uchar code ucFont[17]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0xfd,0x13,0x71,0x63,0x85,0xe
-1};
19 // 0 1 2 3 4 5 6 7 8 9 - n f C d t
20 uchar idata ucLed[2];
21
22 /**************************************************
23 **
24 **显示基本函数
25 **
26 ***************************************************/
27 void OnLed(void)
28 {
29 1 uchar i,j,a;
30 1
31 1 bClk=0;
32 1 for(i=0;i<2;i++)
33 1 {
34 2 a=ucFont[ucLed[i]];
35 2 for(j=0;j<8;j++)
36 2 {
37 3 bDin=(a>>j)&0x01;
38 3 bClk=1;
39 3 bClk=0;
40 3 }
41 2 }
42 1 }
43
44 /**************************************************
45 **
46 **显示整数
47 **
48 ***************************************************/
49 void DisInt(int n)
50 {
51 1 uchar i;
52 1
53 1 for(i=2;i>0;i--)
54 1 {
C51 COMPILER V6.12 ALARM 04/09/2004 22:23:32 PAGE 2
55 2 ucLed[i]=n%10;
56 2 n=n/10;
57 2 }
58 1 for(i=1;i<2;i++)
59 1 {
60 2 if( ucLed[i]==0 ) ucLed[i]=SPAC;
61 2 else i=2;
62 2 }
63 1
64 1 OnLed();
65 1 }
66
67 /* */
68 /* Wait i ms */
69 /* */
70 void Waitms(uint i)
71 {
72 1 uint j,k;
73 1 for(j=0;j<i;j++)
74 1 for(k=0;k<128;k++)
75 1 {;}
76 1 }
77
78 void main(void)
79 {
80 1 uchar KeyData1,KeyData2;
81 1 uchar count;
82 1 uint KeyData=0;
83 1 while(1)
84 1 {
85 2 KeyData1=P0; //scan the switch S1-S8
86 2 KeyData2=P2; //Scan the switch S9-S16
87 2 KeyData=KeyData2;
88 2 KeyData=(KeyData<<8)|KeyData1;
89 2 if( KeyData!=0xffff ) //if there is a switch's state is low
90 2 {
91 3 ring=0; //start alarm
92 3 for(count=0;count<16;count++) //scan the switch form S1 to S16
93 3 {
94 4 if( !((KeyData<<count)&0x8000) ) //if this switch is low(door is open)
95 4 {
96 5 DisInt(count); //show this door's number
97 5 Waitms(2000); //show last 2 seconds and scan the next
98 5 }
99 4 }
100 3 }
101 2 }
102 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 218 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = 2 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -