⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.src

📁 《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter 8 《Proteus在MCS-51&ARM7系统中的应用百例》MCS-51例子的C语言版本。 最
💻 SRC
字号:
; .\main.SRC generated from: main.c
; COMPILER INVOKED BY:
;        D:\Program Files\Keil 8.08\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND SRC(.\main.SRC)

$NOMOD51

NAME	MAIN

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
EA	BIT	0A8H.7
IE	DATA	0A8H
RD	BIT	0B0H.7
ES	BIT	0A8H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	0B0H.2
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	0B0H.3
PS	BIT	0B8H.4
SP	DATA	081H
OV	BIT	0D0H.2
WR	BIT	0B0H.6
LED_G1	BIT	0A0H.1
LED_G2	BIT	0A0H.4
SBUF	DATA	099H
PCON	DATA	087H
P30	BIT	0B0H.0
P31	BIT	0B0H.1
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
LED_R1	BIT	0A0H.3
LED_R2	BIT	0A0H.6
IE0	BIT	088H.1
IE1	BIT	088H.3
LED_Y1	BIT	0A0H.2
LED_Y2	BIT	0A0H.5
B	DATA	0F0H
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
TF1	BIT	088H.7
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
TB8	BIT	098H.3
EX1	BIT	0A8H.2
IT1	BIT	088H.2
P	BIT	0D0H.0
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
PT0	BIT	0B8H.1
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
REN	BIT	098H.4
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?display?MAIN     SEGMENT CODE 
?PR?main?MAIN        SEGMENT CODE 
?CO?MAIN             SEGMENT CODE 
?DT?MAIN             SEGMENT DATA 
	EXTRN	CODE (?C_STARTUP)
	PUBLIC	TEMP
	PUBLIC	DBUF
	PUBLIC	Second2
	PUBLIC	Second1
	PUBLIC	LedMap
	PUBLIC	main
	PUBLIC	display

	RSEG  ?DT?MAIN
        Second1:   DS   1
        Second2:   DS   1
           DBUF:   DS   4
           TEMP:   DS   4

	RSEG  ?CO?MAIN
LedMap:
	DB	03FH
	DB	006H
	DB	05BH
	DB	04FH
	DB	066H
	DB	06DH
	DB	07DH
	DB	007H
	DB	07FH
	DB	06FH
	DB	077H
	DB	07CH
	DB	058H
	DB	05EH
	DB	07BH
	DB	071H
	DB	000H
	DB	040H

; #include <reg51.h>
; typedef unsigned char BYTE;
; 
; sbit LED_G1=P2^1;
; sbit LED_Y1=P2^2;
; sbit LED_R1=P2^3;
; 
; sbit LED_G2=P2^4;
; sbit LED_Y2=P2^5;
; sbit LED_R2=P2^6;
; 
; sbit P30=P3^0;
; sbit P31=P3^1;
; 
; BYTE Second1;
; BYTE Second2;
; BYTE DBUF[4];	//显示码缓冲区1
; BYTE TEMP[4];	
; BYTE code LedMap[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,		
; 			 		0x7D,0x07,0x7F,0x6F,0x77,0x7C,		
; 			 		0x58,0x5E,0x7B,0x71,0x00,0x40};
; 
; void display()

	RSEG  ?PR?display?MAIN
L?0073:
	USING	0
L?0074:
	MOV  	R4,#014H
L?0075:
	DEC  	Second1
	DEC  	Second2
display:
	USING	0
			; SOURCE LINE # 23
; {	
			; SOURCE LINE # 24
; 	BYTE dis_i;
; 	BYTE dis_j;
; 	BYTE offset;
; 
; 	DBUF[3]=Second1/10;	
			; SOURCE LINE # 29
	MOV  	A,Second1
	MOV  	B,#0AH
	DIV  	AB
	MOV  	DBUF+03H,A
; 	DBUF[2]=Second1%10;	
			; SOURCE LINE # 30
	MOV  	A,Second1
	MOV  	B,#0AH
	DIV  	AB
	MOV  	DBUF+02H,B
; 	DBUF[1]=Second2/10;	
			; SOURCE LINE # 31
	MOV  	A,Second2
	MOV  	B,#0AH
	DIV  	AB
	MOV  	DBUF+01H,A
; 	DBUF[0]=Second2%10;
			; SOURCE LINE # 32
	MOV  	A,Second2
	MOV  	B,#0AH
	DIV  	AB
	MOV  	DBUF,B
; 	
; 	dis_i=4;
			; SOURCE LINE # 34
;---- Variable 'dis_i?040' assigned to Register 'R7' ----
	MOV  	R7,#04H
; 	offset=0;
			; SOURCE LINE # 35
;---- Variable 'offset?042' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0003:
; 	do
; 	{
			; SOURCE LINE # 37
; 		TEMP[offset]=LedMap[DBUF[offset]];
			; SOURCE LINE # 38
	MOV  	A,#LOW (DBUF)
	ADD  	A,R6
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	DPTR,#LedMap
	MOVC 	A,@A+DPTR
	MOV  	R5,A
	MOV  	A,#LOW (TEMP)
	ADD  	A,R6
	MOV  	R0,A
	MOV  	@R0,AR5
; 		offset++;
			; SOURCE LINE # 39
	INC  	R6
; 	}while(--dis_i);
			; SOURCE LINE # 40
	DJNZ 	R7,?C0003
; 
; 	dis_i=0x04;
			; SOURCE LINE # 42
	MOV  	R7,#04H
; 	offset=0;
			; SOURCE LINE # 43
	CLR  	A
	MOV  	R6,A
?C0006:
; 
; 	do
; 	{	
			; SOURCE LINE # 46
; 		dis_j=0x08;
			; SOURCE LINE # 47
;---- Variable 'dis_j?041' assigned to Register 'R5' ----
	MOV  	R5,#08H
; 		ACC=TEMP[offset];
			; SOURCE LINE # 48
	MOV  	A,#LOW (TEMP)
	ADD  	A,R6
	MOV  	R0,A
	MOV  	A,@R0
?C0009:
; 
; 		do
; 		{
			; SOURCE LINE # 51
; 
; 			#pragma asm
; 				RLC A
	  RLC A
; 			#pragma endasm
; 
; 			P30=CY;
			; SOURCE LINE # 57
	MOV  	P30,C
; 			P31=0;
			; SOURCE LINE # 58
	CLR  	P31
; 			P31=1;	
			; SOURCE LINE # 59
	SETB 	P31
; 		}while(--dis_j);
			; SOURCE LINE # 60
	DJNZ 	R5,?C0009
; 		offset++;
			; SOURCE LINE # 61
	INC  	R6
; 	}while(--dis_i);
			; SOURCE LINE # 62
	DJNZ 	R7,?C0006
; 		
; }
			; SOURCE LINE # 64
	RET  	
; END OF display

; 
; main()

	RSEG  ?PR?main?MAIN
main:
	USING	0
			; SOURCE LINE # 66
; {
			; SOURCE LINE # 67
; 	BYTE delay_count;	//延时次数
; 	BYTE second;
; 	BYTE flash;
; 
; 	TMOD=0x01;
			; SOURCE LINE # 72
	MOV  	TMOD,#01H
; 	TH0 =0x3C;
			; SOURCE LINE # 73
	MOV  	TH0,#03CH
; 	TL0 =0xB0;
			; SOURCE LINE # 74
	MOV  	TL0,#0B0H
; 	TF0 =0;
			; SOURCE LINE # 75
	CLR  	TF0
; 	TR0 =1;
			; SOURCE LINE # 76
	SETB 	TR0
; 	P1  =0x00;
			; SOURCE LINE # 77
	CLR  	A
	MOV  	P1,A
?C0011:
; 
; 	while(1)
			; SOURCE LINE # 79
; 	{
			; SOURCE LINE # 80
; 		/******wait1******/
; 		delay_count=20;
			; SOURCE LINE # 82
;---- Variable 'delay_count?143' assigned to Register 'R4' ----
	MOV  	R4,#014H
; 		second=20;
			; SOURCE LINE # 83
;---- Variable 'second?144' assigned to Register 'R3' ----
	MOV  	R3,#014H
; 		Second1=25;
			; SOURCE LINE # 84
	MOV  	Second1,#019H
; 		Second2=25;
			; SOURCE LINE # 85
	MOV  	Second2,#019H
; 		display();
			; SOURCE LINE # 86
	LCALL	display
; 		
; 		LED_G1=1;				
			; SOURCE LINE # 88
	SETB 	LED_G1
; 		LED_Y1=0;
			; SOURCE LINE # 89
	CLR  	LED_Y1
; 		LED_R1=0;
			; SOURCE LINE # 90
	CLR  	LED_R1
; 		LED_G2=0;
			; SOURCE LINE # 91
	CLR  	LED_G2
; 		LED_Y2=0;
			; SOURCE LINE # 92
	CLR  	LED_Y2
; 		LED_R2=1;
			; SOURCE LINE # 93
	SETB 	LED_R2
; 
; 		do
; 		{
			; SOURCE LINE # 96
; 			do
; 			{	
			; SOURCE LINE # 98
?C0019:
; 				while(!TF0);
			; SOURCE LINE # 99
	JNB  	TF0,?C0019
?C0020:
; 				TF0=0;
			; SOURCE LINE # 100
	CLR  	TF0
; 				TH0=0x3C;
			; SOURCE LINE # 101
	MOV  	TH0,#03CH
; 				TL0=0xB0;
			; SOURCE LINE # 102
	MOV  	TL0,#0B0H
; 			}while(--delay_count);
			; SOURCE LINE # 103
	DJNZ 	R4,?C0019
; 	
; 			delay_count=20;
			; SOURCE LINE # 105
; 			Second1--;
			; SOURCE LINE # 106
; 			Second2--;
			; SOURCE LINE # 107
; 			display();
			; SOURCE LINE # 108
	LCALL	L?0073
; 		}while(--second);
			; SOURCE LINE # 109
	DJNZ 	R3,?C0019
; 
; 
; 		/******wait2******/
; 		delay_count=5;
			; SOURCE LINE # 113
	MOV  	R4,#05H
; 		second=3;
			; SOURCE LINE # 114
	MOV  	R3,#03H
; 		flash=4;
			; SOURCE LINE # 115
;---- Variable 'flash?145' assigned to Register 'R2' ----
	MOV  	R2,#04H
; 		Second1=5;
			; SOURCE LINE # 116
	MOV  	Second1,#05H
; 		Second2=5;
			; SOURCE LINE # 117
	MOV  	Second2,#05H
; 		display();
			; SOURCE LINE # 118
	LCALL	display
; 
; 		do
; 		{
			; SOURCE LINE # 121
; 			do
; 			{
			; SOURCE LINE # 123
; 				do
; 				{
			; SOURCE LINE # 125
?C0032:
; 					do
; 					{
			; SOURCE LINE # 127
; 						LED_Y1=0;
			; SOURCE LINE # 128
	CLR  	LED_Y1
; 						LED_R1=0;
			; SOURCE LINE # 129
	CLR  	LED_R1
; 						LED_G2=0;
			; SOURCE LINE # 130
	CLR  	LED_G2
; 						LED_Y2=0;
			; SOURCE LINE # 131
	CLR  	LED_Y2
; 						LED_R2=1;
			; SOURCE LINE # 132
	SETB 	LED_R2
; 					}while(!TF0);
			; SOURCE LINE # 133
	JNB  	TF0,?C0032
; 					
; 					TF0=0;
			; SOURCE LINE # 135
	CLR  	TF0
; 					TH0=0x3C;
			; SOURCE LINE # 136
	MOV  	TH0,#03CH
; 					TL0=0xB0;
			; SOURCE LINE # 137
	MOV  	TL0,#0B0H
; 				}while(--flash);
			; SOURCE LINE # 138
	DJNZ 	R2,?C0032
; 				LED_G1=~LED_G1;
			; SOURCE LINE # 139
	CPL  	LED_G1
; 				flash=4;
			; SOURCE LINE # 140
	MOV  	R2,#04H
; 			}while(--delay_count);
			; SOURCE LINE # 141
	DJNZ 	R4,?C0032
; 			delay_count=5;
			; SOURCE LINE # 142
	MOV  	R4,#05H
; 
; 			Second1--;
			; SOURCE LINE # 144
; 			Second2--;
			; SOURCE LINE # 145
; 			display();
			; SOURCE LINE # 146
	LCALL	L?0075
; 
; 		}while(--second);
			; SOURCE LINE # 148
	DJNZ 	R3,?C0032
; 		
; 
; 		/******wait3******/
; 		delay_count=20;
			; SOURCE LINE # 152
	MOV  	R4,#014H
; 		second=2;
			; SOURCE LINE # 153
	MOV  	R3,#02H
; 		Second1=2;
			; SOURCE LINE # 154
	MOV  	Second1,#02H
; 		Second2=2;
			; SOURCE LINE # 155
	MOV  	Second2,#02H
; 		display();
			; SOURCE LINE # 156
	LCALL	display
; 		
; 		do
; 		{
			; SOURCE LINE # 159
; 			do
; 			{
			; SOURCE LINE # 161
?C0041:
; 				do
; 				{
			; SOURCE LINE # 163
; 					LED_G1=0;
			; SOURCE LINE # 164
	CLR  	LED_G1
; 					LED_R1=0;
			; SOURCE LINE # 165
	CLR  	LED_R1
; 					LED_G2=0;
			; SOURCE LINE # 166
	CLR  	LED_G2
; 					LED_Y2=0;
			; SOURCE LINE # 167
	CLR  	LED_Y2
; 					LED_R2=1;			
			; SOURCE LINE # 168
	SETB 	LED_R2
; 					LED_Y1=1;
			; SOURCE LINE # 169
	SETB 	LED_Y1
; 				}while(!TF0);
			; SOURCE LINE # 170
	JNB  	TF0,?C0041
; 								
; 				TF0=0;
			; SOURCE LINE # 172
	CLR  	TF0
; 				TH0=0x3C;
			; SOURCE LINE # 173
	MOV  	TH0,#03CH
; 				TL0=0xB0;
			; SOURCE LINE # 174
	MOV  	TL0,#0B0H
; 			}while(--delay_count);			
			; SOURCE LINE # 175
	DJNZ 	R4,?C0041
; 			delay_count=20;
			; SOURCE LINE # 176
; 			Second1--;
			; SOURCE LINE # 177
; 			Second2--;
			; SOURCE LINE # 178
; 			display();
			; SOURCE LINE # 179
	LCALL	L?0073
; 
; 		}while(--second);
			; SOURCE LINE # 181
	DJNZ 	R3,?C0041
; 
; 		/******wait4******/
; 		delay_count=20;
			; SOURCE LINE # 184
; 		second=20;
			; SOURCE LINE # 185
	MOV  	R3,#014H
; 		Second1=25;
			; SOURCE LINE # 186
	MOV  	Second1,#019H
; 		Second2=25;
			; SOURCE LINE # 187
	MOV  	Second2,#019H
; 		display();
			; SOURCE LINE # 188
	LCALL	display
; 
; 		do
; 		{
			; SOURCE LINE # 191
; 			do
; 			{
			; SOURCE LINE # 193
?C0050:
; 				do
; 				{
			; SOURCE LINE # 195
; 					LED_G1=0;
			; SOURCE LINE # 196
	CLR  	LED_G1
; 					LED_Y1=0;
			; SOURCE LINE # 197
	CLR  	LED_Y1
; 					LED_R1=1;			
			; SOURCE LINE # 198
	SETB 	LED_R1
; 					LED_G2=1;			
			; SOURCE LINE # 199
	SETB 	LED_G2
; 					LED_Y2=0;
			; SOURCE LINE # 200
	CLR  	LED_Y2
; 					LED_R2=0;
			; SOURCE LINE # 201
	CLR  	LED_R2
; 				}while(!TF0);
			; SOURCE LINE # 202
	JNB  	TF0,?C0050
; 				
; 				TF0=0;
			; SOURCE LINE # 204
	CLR  	TF0
; 				TH0=0x3C;
			; SOURCE LINE # 205
	MOV  	TH0,#03CH
; 				TL0=0xB0;
			; SOURCE LINE # 206
	MOV  	TL0,#0B0H
; 			}while(--delay_count);
			; SOURCE LINE # 207
	DJNZ 	R4,?C0050
; 
; 			delay_count=20;
			; SOURCE LINE # 209
; 			Second1--;
			; SOURCE LINE # 210
; 			Second2--;
			; SOURCE LINE # 211
; 			display();
			; SOURCE LINE # 212
	LCALL	L?0074
; 		}while(--second);
			; SOURCE LINE # 213
	DJNZ 	R3,?C0050
; 
; 		/******wait5******/
; 		delay_count=5;
			; SOURCE LINE # 216
	MOV  	R4,#05H
; 		second=4;
			; SOURCE LINE # 217
	MOV  	R3,#04H
; 		flash=3;
			; SOURCE LINE # 218
	MOV  	R2,#03H
; 
; 		Second1=5;
			; SOURCE LINE # 220
	MOV  	Second1,#05H
; 		Second2=5;
			; SOURCE LINE # 221
	MOV  	Second2,#05H
; 		display();
			; SOURCE LINE # 222
	LCALL	display
; 
; 		do
; 		{
			; SOURCE LINE # 225
; 			do
; 			{
			; SOURCE LINE # 227
; 				do
; 				{
			; SOURCE LINE # 229
?C0062:
; 					do
; 					{
			; SOURCE LINE # 231
; 						LED_G1=0;
			; SOURCE LINE # 232
	CLR  	LED_G1
; 						LED_Y1=0;
			; SOURCE LINE # 233
	CLR  	LED_Y1
; 						LED_R1=1;			
			; SOURCE LINE # 234
	SETB 	LED_R1
; 						LED_Y2=0;
			; SOURCE LINE # 235
	CLR  	LED_Y2
; 						LED_R2=0;
			; SOURCE LINE # 236
	CLR  	LED_R2
; 					}while(!TF0);
			; SOURCE LINE # 237
	JNB  	TF0,?C0062
; 
; 					TF0=0;
			; SOURCE LINE # 239
	CLR  	TF0
; 					TH0=0x3C;
			; SOURCE LINE # 240
	MOV  	TH0,#03CH
; 					TL0=0xB0;
			; SOURCE LINE # 241
	MOV  	TL0,#0B0H
; 				}while(--second);
			; SOURCE LINE # 242
	DJNZ 	R3,?C0062
; 
; 				LED_G2=~LED_G2;
			; SOURCE LINE # 244
	CPL  	LED_G2
; 				second=4;
			; SOURCE LINE # 245
	MOV  	R3,#04H
; 			}while(--delay_count);
			; SOURCE LINE # 246
	DJNZ 	R4,?C0062
; 			delay_count=5;
			; SOURCE LINE # 247
	MOV  	R4,#05H
; 			Second1--;
			; SOURCE LINE # 248
; 			Second2--;
			; SOURCE LINE # 249
; 			display();
			; SOURCE LINE # 250
	LCALL	L?0075
; 		}while(--flash);
			; SOURCE LINE # 251
	DJNZ 	R2,?C0062
; 
; 
; 		/******wait6******/
; 		delay_count=20;
			; SOURCE LINE # 255
	MOV  	R4,#014H
; 		second=2;
			; SOURCE LINE # 256
	MOV  	R3,#02H
; 		Second1=2;
			; SOURCE LINE # 257
	MOV  	Second1,#02H
; 		Second2=2;
			; SOURCE LINE # 258
	MOV  	Second2,#02H
; 		display();
			; SOURCE LINE # 259
	LCALL	display
; 
; 		do
; 		{
			; SOURCE LINE # 262
; 			do
; 			{
			; SOURCE LINE # 264
?C0071:
; 				do
; 				{
			; SOURCE LINE # 266
; 					LED_G1=0;
			; SOURCE LINE # 267
	CLR  	LED_G1
; 					LED_Y1=0;
			; SOURCE LINE # 268
	CLR  	LED_Y1
; 					LED_R1=1;				
			; SOURCE LINE # 269
	SETB 	LED_R1
; 					LED_G2=0;
			; SOURCE LINE # 270
	CLR  	LED_G2
; 					LED_R2=0;
			; SOURCE LINE # 271
	CLR  	LED_R2
; 					LED_Y2=1;
			; SOURCE LINE # 272
	SETB 	LED_Y2
; 				}while(!TF0);
			; SOURCE LINE # 273
	JNB  	TF0,?C0071
; 
; 				TF0=0;
			; SOURCE LINE # 275
	CLR  	TF0
; 				TH0=0x3C;
			; SOURCE LINE # 276
	MOV  	TH0,#03CH
; 				TL0=0xB0;
			; SOURCE LINE # 277
	MOV  	TL0,#0B0H
; 			}while(--delay_count);
			; SOURCE LINE # 278
	DJNZ 	R4,?C0071
; 			delay_count=20;
			; SOURCE LINE # 279
; 			Second1--;
			; SOURCE LINE # 280
; 			Second2--;
			; SOURCE LINE # 281
; 			display();
			; SOURCE LINE # 282
	LCALL	L?0074
; 		}while(--second);
			; SOURCE LINE # 283
	DJNZ 	R3,?C0071
; 	}
			; SOURCE LINE # 284
	LJMP 	?C0011
; END OF main

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -