This commit is contained in:
2025-12-27 19:04:08 +08:00
parent 74d0c1a82a
commit a5662eea92
19 changed files with 3642 additions and 0 deletions

253
Listings/STARTUP.lst Normal file
View File

@@ -0,0 +1,253 @@
A51 MACRO ASSEMBLER STARTUP 12/27/2025 19:02:37 PAGE 1
MACRO ASSEMBLER A51 V8.2.7.0
OBJECT MODULE PLACED IN .\Objects\STARTUP.obj
ASSEMBLER INVOKED BY: D:\keli\uv5_arm\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG PRINT(.\Listings\STARTUP.lst) OBJECT(
.\Objects\STARTUP.obj) EP
LOC OBJ LINE SOURCE
1 $nomod51
2 ;------------------------------------------------------------------------------
3 ; This file is part of the C51 Compiler package
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
5 ; Version 8.01
6 ;
7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
8 ;------------------------------------------------------------------------------
9 ; STARTUP.A51: This code is executed after processor reset.
10 ;
11 ; To translate this file use A51 with the following invocation:
12 ;
13 ; A51 STARTUP.A51
14 ;
15 ; To link the modified STARTUP.OBJ file to your application use the following
16 ; Lx51 invocation:
17 ;
18 ; Lx51 your object file list, STARTUP.OBJ controls
19 ;
20 ;------------------------------------------------------------------------------
21 ;
22 ; User-defined <h> Power-On Initialization of Memory
23 ;
24 ; With the following EQU statements the initialization of memory
25 ; at processor reset can be defined:
26 ;
27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
28 ; <i> Note: The absolute start-address of IDATA memory is always 0
29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
0080 30 IDATALEN EQU 80H
31 ;
32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
33 ; <i> The absolute start address of XDATA memory
0000 34 XDATASTART EQU 0
35 ;
36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
37 ; <i> The length of XDATA memory in bytes.
0000 38 XDATALEN EQU 0
39 ;
40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
41 ; <i> The absolute start address of PDATA memory
0000 42 PDATASTART EQU 0H
43 ;
44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
45 ; <i> The length of PDATA memory in bytes.
0000 46 PDATALEN EQU 0H
47 ;
48 ;</h>
49 ;------------------------------------------------------------------------------
50 ;
51 ;<h> Reentrant Stack Initialization
52 ;
53 ; The following EQU statements define the stack pointer for reentrant
54 ; functions and initialized it:
55 ;
56 ; <h> Stack Space for reentrant functions in the SMALL model.
57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
A51 MACRO ASSEMBLER STARTUP 12/27/2025 19:02:37 PAGE 2
58 ; <i> Stack space for reentrant functions in the SMALL model.
0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
61 ; <i> Set the top of the stack to the highest location.
0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
63 ; </h>
64 ;
65 ; <h> Stack Space for reentrant functions in the LARGE model.
66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
67 ; <i> Stack space for reentrant functions in the LARGE model.
0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
70 ; <i> Set the top of the stack to the highest location.
0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
72 ; </h>
73 ;
74 ; <h> Stack Space for reentrant functions in the COMPACT model.
75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
76 ; <i> Stack space for reentrant functions in the COMPACT model.
0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
78 ;
79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
80 ; <i> Set the top of the stack to the highest location.
0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
82 ; </h>
83 ;</h>
84 ;------------------------------------------------------------------------------
85 ;
86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
87 ; <e>Compact Model Page Definition
88 ;
89 ; <i>Define the XDATA page used for PDATA variables.
90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
91 ;
92 ; Enable pdata memory page initalization
0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
94 ;
95 ; <o> PPAGE number <0x0-0xFF>
96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
0000 97 PPAGE EQU 0
98 ;
99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
100 ; <i> most 8051 variants use P2 as uppermost address byte
00A0 101 PPAGE_SFR DATA 0A0H
102 ;
103 ; </e>
104 ;------------------------------------------------------------------------------
105
106 ; Standard SFR Symbols
00E0 107 ACC DATA 0E0H
00F0 108 B DATA 0F0H
0081 109 SP DATA 81H
0082 110 DPL DATA 82H
0083 111 DPH DATA 83H
112
113 NAME ?C_STARTUP
114
115
116 ?C_C51STARTUP SEGMENT CODE
117 ?STACK SEGMENT IDATA
118
---- 119 RSEG ?STACK
0000 120 DS 1
121
122 EXTRN CODE (?C_START)
123 PUBLIC ?C_STARTUP
A51 MACRO ASSEMBLER STARTUP 12/27/2025 19:02:37 PAGE 3
124
---- 125 CSEG AT 0
0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
127
---- 128 RSEG ?C_C51STARTUP
129
0000 130 STARTUP1:
131
132 IF IDATALEN <> 0
0000 787F 133 MOV R0,#IDATALEN - 1
0002 E4 134 CLR A
0003 F6 135 IDATALOOP: MOV @R0,A
0004 D8FD 136 DJNZ R0,IDATALOOP
137 ENDIF
138
139 IF XDATALEN <> 0
MOV DPTR,#XDATASTART
MOV R7,#LOW (XDATALEN)
IF (LOW (XDATALEN)) <> 0
MOV R6,#(HIGH (XDATALEN)) +1
ELSE
MOV R6,#HIGH (XDATALEN)
ENDIF
CLR A
XDATALOOP: MOVX @DPTR,A
INC DPTR
DJNZ R7,XDATALOOP
DJNZ R6,XDATALOOP
ENDIF
153
154 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
157
158 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
166
167 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
172
173 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
179
180 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
184
0006 758100 F 185 MOV SP,#?STACK-1
186
187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
188 ;<h> Code Banking
189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
A51 MACRO ASSEMBLER STARTUP 12/27/2025 19:02:37 PAGE 4
190
195 ;</h>
0009 020000 F 196 LJMP ?C_START
197
198 END
A51 MACRO ASSEMBLER STARTUP 12/27/2025 19:02:37 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 000CH REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?STACK . . . . . . I SEG 0001H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
IBPSTACK . . . . . N NUMB 0000H A
IBPSTACKTOP. . . . N NUMB 0100H A
IDATALEN . . . . . N NUMB 0080H A
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0100H A
PDATALEN . . . . . N NUMB 0000H A
PDATASTART . . . . N NUMB 0000H A
PPAGE. . . . . . . N NUMB 0000H A
PPAGEENABLE. . . . N NUMB 0000H A
PPAGE_SFR. . . . . D ADDR 00A0H A
SP . . . . . . . . D ADDR 0081H A
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
XBPSTACK . . . . . N NUMB 0000H A
XBPSTACKTOP. . . . N NUMB 0000H A
XDATALEN . . . . . N NUMB 0000H A
XDATASTART . . . . N NUMB 0000H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)

115
Listings/main.lst Normal file
View File

@@ -0,0 +1,115 @@
C51 COMPILER V9.60.0.0 MAIN 12/27/2025 19:02:38 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Objects\main.obj
COMPILER INVOKED BY: D:\keli\uv5_arm\C51\BIN\C51.EXE main.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings
-\main.lst) TABS(2) OBJECT(.\Objects\main.obj)
line level source
1 #include "REG51.h"
2 #include "INTRINS.h"
3
4 sbit K1 =P1^4 ; //<2F><><EFBFBD>Ӽ<EFBFBD>
5 sbit K2 =P1^5 ; //<2F><><EFBFBD>ټ<EFBFBD>
6 sbit P00 =P0^1;
7 unsigned char PWM=0xe7; //<2F><><EFBFBD><EFBFBD>ֵ
8
9
10 void delayms(unsigned char ms);
11 void delay(unsigned char t);
12
13 /*********************************************************/
14 void main()
15 {
16 1
17 1 P1=0xff;
18 1 TMOD=0x21 ;
19 1 TH0=0xff ; //50us<75><73>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
20 1 TL0=0xce ; //Ƶ<>ʵ<EFBFBD><CAB5><EFBFBD>
21 1
22 1 TH1=PWM ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
23 1 TL1=0 ;
24 1
25 1 EA=1;
26 1 ET0=1;
27 1 ET1=1;
28 1
29 1 TR0=1 ;
30 1
31 1 while(1)
32 1 {
33 2 do{
34 3 if(PWM!=0xff)
35 3 {PWM++ ;delayms(10);}
36 3 else Beep() ;
*** WARNING C206 IN LINE 36 OF main.c: 'Beep': missing function-prototype
37 3 }
38 2 while(K1==0);
39 2
40 2 do{
41 3 if(PWM!=0xce)
42 3 {PWM-- ;delayms(10);}
43 3 else Beep() ;
44 3 }
45 2 while(K2==0);
46 2 }
47 1 }
48
49 void timer0() interrupt 1
50 {
51 1 TR1=0 ;
52 1 TH0=0xff ;
53 1 TL0=0xce ;
C51 COMPILER V9.60.0.0 MAIN 12/27/2025 19:02:38 PAGE 2
54 1 TH1=PWM ;
55 1 TR1=1 ;
56 1 P00=0 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
57 1 }
58
59
60 void timer1() interrupt 3
61 {
62 1 TR1=0 ;
63 1 P00=1 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
64 1 }
65
66
67 /*********************************************************/
68 // <20><>ʱ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
69 /*********************************************************/
70 void delay(unsigned char t)
71 {
72 1 while(t--) ;
73 1 }
74
75 /*********************************************************/
76 // <20><>ʱ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
77 /*********************************************************/
78 void delayms(unsigned char ms)
79
80 {
81 1 unsigned char i ;
82 1 while(ms--)
83 1 {
84 2 for(i = 0 ; i < 120 ; i++) ;
85 2 }
86 1 }
87
88 /*********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 119 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)

226
Listings/main.m51 Normal file
View File

@@ -0,0 +1,226 @@
BL51 BANKED LINKER/LOCATER V6.22.2.0 12/27/2025 19:02:38 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY:
D:\KELI\UV5_ARM\C51\BIN\BL51.EXE .\Objects\STARTUP.obj, .\Objects\main.obj TO .\Objects\main PRINT (.\Listings\main.m51)
>> RAMSIZE (256)
MEMORY MODEL: SMALL
INPUT MODULES INCLUDED:
.\Objects\STARTUP.obj (?C_STARTUP)
.\Objects\main.obj (MAIN)
D:\KELI\UV5_ARM\C51\LIB\C51S.LIB (?C_INIT)
LINK MAP OF MODULE: .\Objects\main (?C_STARTUP)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0001H UNIT ?DT?MAIN
IDATA 0009H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
0003H 0008H *** GAP ***
CODE 000BH 0003H ABSOLUTE
000EH 000DH *** GAP ***
CODE 001BH 0003H ABSOLUTE
001EH 07E2H *** GAP ***
CODE 0800H 008CH UNIT ?C_C51STARTUP
CODE 088CH 0045H UNIT ?PR?MAIN?MAIN
CODE 08D1H 0016H UNIT ?PR?_DELAYMS?MAIN
CODE 08E7H 0010H UNIT ?PR?TIMER0?MAIN
CODE 08F7H 0007H UNIT ?PR?_DELAY?MAIN
CODE 08FEH 0005H UNIT ?PR?TIMER1?MAIN
CODE 0903H 0004H UNIT ?C_INITSEG
OVERLAY MAP OF MODULE: .\Objects\main (?C_STARTUP)
SEGMENT
+--> CALLED SEGMENT
---------------------
?C_C51STARTUP
+--> ?PR?MAIN?MAIN
+--> ?C_INITSEG
?PR?MAIN?MAIN
+--> ?PR?_DELAYMS?MAIN
UNRESOLVED EXTERNAL SYMBOLS:
BL51 BANKED LINKER/LOCATER V6.22.2.0 12/27/2025 19:02:38 PAGE 2
BEEP
SYMBOL TABLE OF MODULE: .\Objects\main (?C_STARTUP)
VALUE TYPE NAME
----------------------------------
------- MODULE ?C_STARTUP
C:0800H SEGMENT ?C_C51STARTUP
I:0009H SEGMENT ?STACK
C:0000H PUBLIC ?C_STARTUP
D:00E0H SYMBOL ACC
D:00F0H SYMBOL B
D:0083H SYMBOL DPH
D:0082H SYMBOL DPL
N:0000H SYMBOL IBPSTACK
N:0100H SYMBOL IBPSTACKTOP
N:0080H SYMBOL IDATALEN
C:0803H SYMBOL IDATALOOP
N:0000H SYMBOL PBPSTACK
N:0100H SYMBOL PBPSTACKTOP
N:0000H SYMBOL PDATALEN
N:0000H SYMBOL PDATASTART
N:0000H SYMBOL PPAGE
N:0000H SYMBOL PPAGEENABLE
D:00A0H SYMBOL PPAGE_SFR
D:0081H SYMBOL SP
C:0800H SYMBOL STARTUP1
N:0000H SYMBOL XBPSTACK
N:0000H SYMBOL XBPSTACKTOP
N:0000H SYMBOL XDATALEN
N:0000H SYMBOL XDATASTART
C:0000H LINE# 126
C:0800H LINE# 133
C:0802H LINE# 134
C:0803H LINE# 135
C:0804H LINE# 136
C:0806H LINE# 185
C:0809H LINE# 196
------- ENDMOD ?C_STARTUP
------- MODULE MAIN
C:0000H SYMBOL _ICE_DUMMY_
D:0080H PUBLIC P0
D:0090H PUBLIC P1
B:00A8H.7 PUBLIC EA
C:08F7H PUBLIC _delay
C:088CH PUBLIC main
B:0080H.1 PUBLIC P00
D:0089H PUBLIC TMOD
B:00A8H.1 PUBLIC ET0
B:00A8H.3 PUBLIC ET1
D:008CH PUBLIC TH0
D:008DH PUBLIC TH1
D:008AH PUBLIC TL0
BL51 BANKED LINKER/LOCATER V6.22.2.0 12/27/2025 19:02:38 PAGE 3
D:008BH PUBLIC TL1
C:08E7H PUBLIC timer0
C:08FEH PUBLIC timer1
B:0088H.4 PUBLIC TR0
B:0088H.6 PUBLIC TR1
C:08D1H PUBLIC _delayms
D:0008H PUBLIC PWM
B:0090H.4 PUBLIC K1
B:0090H.5 PUBLIC K2
------- PROC MAIN
C:088CH LINE# 14
C:088CH LINE# 15
C:088CH LINE# 17
C:088FH LINE# 18
C:0892H LINE# 19
C:0895H LINE# 20
C:0898H LINE# 22
C:089BH LINE# 23
C:089EH LINE# 25
C:08A0H LINE# 26
C:08A2H LINE# 27
C:08A4H LINE# 29
C:08A6H LINE# 31
C:08A6H LINE# 32
C:08A6H LINE# 33
C:08A6H LINE# 34
C:08ABH LINE# 35
C:08B4H LINE# 36
C:08B7H LINE# 37
C:08B7H LINE# 38
C:08BAH LINE# 40
C:08BAH LINE# 41
C:08C0H LINE# 42
C:08C9H LINE# 43
C:08CCH LINE# 44
C:08CCH LINE# 45
C:08CFH LINE# 46
------- ENDPROC MAIN
------- PROC TIMER0
C:08E7H LINE# 49
C:08E7H LINE# 51
C:08E9H LINE# 52
C:08ECH LINE# 53
C:08EFH LINE# 54
C:08F2H LINE# 55
C:08F4H LINE# 56
C:08F6H LINE# 57
------- ENDPROC TIMER0
------- PROC TIMER1
C:08FEH LINE# 60
C:08FEH LINE# 62
C:0900H LINE# 63
C:0902H LINE# 64
------- ENDPROC TIMER1
------- PROC _DELAY
D:0007H SYMBOL t
C:08F7H LINE# 70
BL51 BANKED LINKER/LOCATER V6.22.2.0 12/27/2025 19:02:38 PAGE 4
C:08F7H LINE# 71
C:08F7H LINE# 72
C:08FDH LINE# 73
------- ENDPROC _DELAY
------- PROC _DELAYMS
D:0007H SYMBOL ms
------- DO
D:0006H SYMBOL i
------- ENDDO
C:08D1H LINE# 78
C:08D1H LINE# 80
C:08D1H LINE# 82
C:08D7H LINE# 83
C:08D7H LINE# 84
C:08E6H LINE# 85
C:08E6H LINE# 86
------- ENDPROC _DELAYMS
------- ENDMOD MAIN
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAY?MAIN
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: BEEP
MODULE: .\Objects\main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: BEEP
MODULE: .\Objects\main.obj (MAIN)
ADDRESS: 08B5H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: BEEP
MODULE: .\Objects\main.obj (MAIN)
ADDRESS: 08CAH
******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 008FH BYTE ( 6%) *
******************************************************************************
Program Size: data=10.0 xdata=0 code=272
LINK/LOCATE RUN COMPLETE. 4 WARNING(S), 0 ERROR(S)