📄 homesec1.lst
字号:
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 1
DOS C51 COMPILER V5.02, COMPILATION OF MODULE HOMESEC1
OBJECT MODULE PLACED IN HOMESEC1.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE HOMESEC1.C CD SB DB OE PL(69) PW(132) ROM(COMPACT) SMALL OT(6,SPEED) REGFILE(HOMESECU.REG)
stmt level source
1 // 瘤糯捞 焊靛 七傀绢
2 // 哪颇老矾 : KEIL C DEMO
3 // 2003.12.15
4 // 公茄抛农愁矾瘤
5 #include <AT89X51.h>
6 // 屈 急攫
7 #define byte unsigned char
8 // 副饭捞 柯 烹脚 内靛
9 #define RLY0_ON 11
10 #define RLY1_ON 12
11 #define RLY2_ON 13
12 #define RLY3_ON 14
13 #define RLY4_ON 15
14 #define RLY5_ON 16
15 #define RLY6_ON 17
16 #define RLY7_ON 18
17 // 副饭捞 坷橇 烹脚 内靛
18 #define RLY0_OFF 21
19 #define RLY1_OFF 22
20 #define RLY2_OFF 23
21 #define RLY3_OFF 24
22 #define RLY4_OFF 25
23 #define RLY5_OFF 26
24 #define RLY6_OFF 27
25 #define RLY7_OFF 28
26 // 季辑 柯 烹脚 内靛
27 #define SEN0_ON 31
28 #define SEN1_ON 32
29 #define SEN2_ON 33
30 #define SEN3_ON 34
31 #define SEN4_ON 35
32 #define SEN5_ON 36
33 #define SEN6_ON 37
34 #define SEN7_ON 38
35 // 季辑 坷橇 烹脚 内靛
36 #define SEN0_OFF 41
37 #define SEN1_OFF 42
38 #define SEN2_OFF 43
39 #define SEN3_OFF 44
40 #define SEN4_OFF 45
41 #define SEN5_OFF 46
42 #define SEN6_OFF 47
43 #define SEN7_OFF 48
44 // 傈眉 蔼 夸没 内靛
45 #define SEN_RQ 51
46 // 器飘 巧 概俏
47 sbit lamp = P3^2;
48 sfr sensor = 0x80;//P0
49 sfr relay = 0xA0; //P2
50 // 烹脚 荐脚 滚欺
51 #define rsize 20
52 #define RTIME 1
53 byte rbuf[rsize];
54 byte rcount=0,rtime=0,pcount=0;
55 byte rbuf1, rbuf2;
56 byte oldBuf=255;
57 bit isTx;
58 // ETC
59 #define LAMPTIME 5000
60
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 2
61 // 老矫 措扁 窃荐
62 delay(byte d)
63 {
64 1 byte d2;
65 1 while(d--){
66 2 d2 = 0xff;
67 2 while(d2--);
68 2 }
69 1 }
70 // 烹脚 价脚 措扁 窃荐
71 wait_ti()
72 {
73 1 byte i = 255;
74 1 while(!TI && i--);
75 1 }
76 // sensor ON/OFF 内靛 价脚
77 send_sensor_code(byte b)
78 {
79 1 byte i;
80 1 byte oldB,newB;
81 1 for(i=0;i<8;i++){
82 2 wait_ti();
83 2 oldB=oldBuf & (1 << i);
84 2 newB=b & (1 << i);
85 2
86 2 if (oldB != newB) {
87 3 if (newB) SBUF=SEN0_OFF + i;
88 3 else SBUF = SEN0_ON + i;
89 3 }
90 2 }
91 1
92 1 oldBuf=b;
93 1 }
94 // 林 窃荐
95 main()
96 {
97 1 int lamp_count;
98 1 byte sen_buf;
99 1 // 扁夯蔼 汲沥
100 1 // SP = 0x50;
101 1 relay = 0x00;
102 1 // 烹脚 棺 烹脚 牢磐反飘 汲沥
103 1 EA = 0;
104 1 PCON = 0;//
105 1 SCON = 0x50;
106 1 TMOD = 0x21;
107 1 TH1 = 0x0fd;
108 1 TL0 = 0x00;
109 1 TH0 = 0x00;
110 1 TR1 = 1;
111 1 ES = 1;
112 1 EA = 1;
113 1 // 泪矫 措扁
114 1 delay(255);
115 1 // 皑瘤 涝仿 烹脚栏肺 免仿
116 1 sen_buf = sensor;
117 1 send_sensor_code(sen_buf);
118 1 while(1){
119 2 if(!lamp_count--){
120 3 lamp = !lamp;// 伐橇 柯 坷橇
121 3 lamp_count = LAMPTIME;
122 3 }
123 2 if((rcount>0)&&(rtime--)) continue;// 烹脚 荐脚 辆丰 眉农 (矫埃瞒)
124 2
125 2 if((rcount==0)&&(sen_buf!=sensor)){
126 3 sen_buf =sensor;
127 3 send_sensor_code(sen_buf);
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 3
128 3 }
129 2 if(rcount==0) continue;
130 2 if(pcount>=rcount){
131 3 rcount = pcount = 0;
132 3 continue;
133 3 }
134 2 rtime = 0;
135 2 rbuf2 = rbuf[pcount++];
136 2 if (rbuf2==SEN_RQ){ // 季辑 皑瘤 葛滴 夸没 窍搁
137 3 sen_buf = sensor;
138 3 send_sensor_code(sen_buf); // 季辑 惑怕 焊郴绊
139 3 } else
140 2 if (rbuf2>=RLY0_ON && rbuf2<=RLY7_ON){ // 副饭捞 柯 夸没捞搁
141 3 relay |= (1 << (rbuf2-RLY0_ON));
142 3 } else
143 2 if (rbuf2>=RLY0_OFF && rbuf2<=RLY7_OFF){ // 副饭捞 坷橇 夸没捞搁
144 3 relay &= ~(1 << (rbuf2-RLY0_OFF));
145 3 }
146 2 }
147 1 }
148 ser_int() interrupt SIO_VECTOR
149 {
150 1 if (RI){ //Recive Buffer is Fill
151 2 rbuf1 = SBUF;
152 2 RI = 0;
153 2 rtime = RTIME;
154 2 if(rcount<rsize) rbuf[rcount++]=rbuf1;
155 2 else rtime=0;
156 2 } else if (TI)
157 1 TI = 0;
158 1 }
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _delay (BEGIN)
;---- Variable 'd' assigned to Register 'R7' ----
;---- Variable 'd2' assigned to Register 'R6' ----
; SOURCE LINE # 62
; SOURCE LINE # 63
0000 ?C0001:
; SOURCE LINE # 65
0000 AD07 MOV R5,AR7
0002 1F DEC R7
0003 ED MOV A,R5
0004 600A JZ ?C0005
; SOURCE LINE # 66
0006 7EFF MOV R6,#0FFH
0008 ?C0003:
; SOURCE LINE # 67
0008 AD06 MOV R5,AR6
000A 1E DEC R6
000B ED MOV A,R5
000C 60F2 JZ ?C0001
000E 80F8 SJMP ?C0003
; SOURCE LINE # 68
; SOURCE LINE # 69
0010 ?C0005:
0010 22 RET
; FUNCTION _delay (END)
; FUNCTION wait_ti (BEGIN)
; SOURCE LINE # 71
; SOURCE LINE # 72
; SOURCE LINE # 73
;---- Variable 'i' assigned to Register 'R7' ----
0000 7FFF MOV R7,#0FFH
0002 ?C0006:
; SOURCE LINE # 74
0002 209906 JB TI,?C0008
0005 AE07 MOV R6,AR7
0007 1F DEC R7
0008 EE MOV A,R6
0009 70F7 JNZ ?C0006
; SOURCE LINE # 75
000B ?C0008:
000B 22 RET
; FUNCTION wait_ti (END)
; FUNCTION _send_sensor_code (BEGIN)
;---- Variable 'b' assigned to Register 'R5' ----
0000 AD07 MOV R5,AR7
; SOURCE LINE # 77
; SOURCE LINE # 78
; SOURCE LINE # 81
;---- Variable 'i' assigned to Register 'R4' ----
0002 E4 CLR A
0003 FC MOV R4,A
0004 ?C0009:
; SOURCE LINE # 82
0004 120000 R LCALL wait_ti
; SOURCE LINE # 83
0007 7401 MOV A,#01H
0009 A804 MOV R0,AR4
000B 08 INC R0
000C 8002 SJMP ?C0036
000E ?C0035:
000E C3 CLR C
000F 33 RLC A
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 5
0010 ?C0036:
0010 D8FC DJNZ R0,?C0035
0012 FF MOV R7,A
0013 5500 R ANL A,oldBuf
0015 FE MOV R6,A
;---- Variable 'oldB' assigned to Register 'R6' ----
; SOURCE LINE # 84
0016 EF MOV A,R7
0017 5D ANL A,R5
0018 FF MOV R7,A
;---- Variable 'newB' assigned to Register 'R7' ----
; SOURCE LINE # 86
0019 6E XRL A,R6
001A 600F JZ ?C0011
; SOURCE LINE # 87
001C EF MOV A,R7
001D 6007 JZ ?C0013
001F EC MOV A,R4
0020 2429 ADD A,#029H
0022 F599 MOV SBUF,A
0024 8005 SJMP ?C0011
0026 ?C0013:
; SOURCE LINE # 88
0026 EC MOV A,R4
0027 241F ADD A,#01FH
0029 F599 MOV SBUF,A
; SOURCE LINE # 89
; SOURCE LINE # 90
002B ?C0011:
002B 0C INC R4
002C BC08D5 CJNE R4,#08H,?C0009
002F ?C0010:
; SOURCE LINE # 92
002F 8D00 R MOV oldBuf,R5
; SOURCE LINE # 93
0031 22 RET
; FUNCTION _send_sensor_code (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 95
; SOURCE LINE # 96
; SOURCE LINE # 101
0000 E4 CLR A
0001 F5A0 MOV relay,A
; SOURCE LINE # 103
0003 C2AF CLR EA
; SOURCE LINE # 104
0005 F587 MOV PCON,A
; SOURCE LINE # 105
0007 759850 MOV SCON,#050H
; SOURCE LINE # 106
000A 758921 MOV TMOD,#021H
; SOURCE LINE # 107
000D 758DFD MOV TH1,#0FDH
; SOURCE LINE # 108
0010 F58A MOV TL0,A
; SOURCE LINE # 109
0012 F58C MOV TH0,A
; SOURCE LINE # 110
0014 D28E SETB TR1
; SOURCE LINE # 111
0016 D2AC SETB ES
; SOURCE LINE # 112
0018 D2AF SETB EA
; SOURCE LINE # 114
001A 7FFF MOV R7,#0FFH
001C 120000 R LCALL _delay
C51 COMPILER V5.02, SN- HOMESEC1 12/16/03 11:46:23 PAGE 6
; SOURCE LINE # 116
;---- Variable 'sen_buf' assigned to Register 'R3' ----
001F AB80 MOV R3,sensor
; SOURCE LINE # 117
0021 AF03 MOV R7,AR3
0023 120000 R LCALL _send_sensor_code
0026 ?C0016:
; SOURCE LINE # 118
; SOURCE LINE # 119
0026 E500 R MOV A,lamp_count+01H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -