mvp.lst
来自「msc1201 编程4」· LST 代码 · 共 1,131 行 · 第 1/3 页
LST
1,131 行
RC51 COMPILER V03.03.29, MVP 06/03/03 11:10:06 PAGE 1
QCW(0x00002F32)
WIN32 RC51 COMPILER V03.03.29, COMPILATION OF MODULE MVP
OBJECT MODULE PLACED IN d:\data\msc1210\ride\mvp\mvp.obj
COMPILER INVOKED BY: RC51.EXE D:\DATA\MSC1210\RIDE\MVP\MVP.C OBJECT(D:\DATA\MSC1
-210\RIDE\MVP\MVP.OBJ) PIN(D:\RIDE\INC) PIN(D:\RIDE\INC\51\TI\) NOAM
- SUE_OPT PR(D:\DATA\MSC1210\RIDE\MVP\MVP.LST) CD SB OE(1) SM FP(NOF
-LOAT) PW(80) MAXWAR(200) NOIS UNSIGNEDCHAR ET(CHAR)
stmt level source
1 // MSC1210 Versatile Programmer HC 12/16/2002
2 #include <REG1210.H>
3 #include "mvp.h"
WARNING C179 IN LINE 183 OF mvp.h : 'msg' : mspace on parameter ignored
4 unsigned int t0, t1, t2; // global timers
5 xdata at 0x0400 NV ping;
6 xdata at 0x0480 NV pong;
7 NV xdata * data nvcp; // current pointer
8 NV xdata * data nvnp; // next pointer
9 // Serial0
10 unsigned char xdata *rx_hdptr;
11 unsigned char xdata * rx_tailptr;
12 unsigned char xdata * tx_hdptr;
13 unsigned char xdata * tx_tailptr;
14 bit txmt, rxmt, txfull, rxfull;
15 void version (void)
16 {
17 1 putstr("\x1b[1;37;46m\x1b[2J");
18 1 putstr("\nMSC Versatile Programmer\tVer:");
19 1 tx_hex(HWPC1); tx_hex(HWPC0); tx_hex(HWID); tx_byte('F');
20 1 tx_hex(FWVer); putcr();
21 1 }
22 void initsfr(void)
23 {
24 1 PASEL=0x10; // PSEN output OscClk
25 1 CKCON &= 0xf8; // 0 MOVX cycle stretch
26 1 PDCON=0x05; // tone/pwm/adc/systimer
27 1 // ADC setup
28 1 ACLK=kACLK;
29 1 DECIMATION=27; // 800 sample per sec
30 1 ADCON0 = 0x00; // Vref Off, Buff on, BOD off, PGA 1
31 1 ADCON1=0x41; // Unipolar, Self Cal
32 1 ADMUX=0x08;
33 1 // UART setup
34 1 THL2=0xffff;
35 1 RCAP2 = kRCAP2; // 57600 Baud @ 11.0592MHz
36 1 T2CON = 0x34; // T2 as baudrate generator
37 1 SCON = 0x52; // Async mode 1, 8-bit UART, enable rcvr, TI=1,
- RI=0
38 1 // System timer setup
39 1 USEC = kUSEC;
40 1 MSEC = kMSEC;
41 1 // ALE setup
42 1 PASEL=2; // ALE pin = 0;
43 1 // Int Setup
44 1 MSINT=0x81; // Interrupt per 2 ms
45 1 AIE=0x30; // MSec Int and ADC Int
46 1 EAI=1; // enable AuxInt
47 1 // Setup serial port interrupt
48 1 rx_hdptr=RX_BEG; rx_tailptr=RX_BEG; tx_hdptr=TX_BEG; tx_tailptr=T
-X_BEG;
49 1 txmt=1; rxmt=1; txfull=0; rxfull=0; TI=0; RI=0;
50 1 EA=1; ES0=1;
51 1 }
52
53 void nvnew(void)
54 {
55 1 // putstr("NV Clear\n");
56 1 beep(700,100);
57 1 EA=0; EAI=0; nvcp=&ping; nvnp=&pong;
58 1 page_erase(nvcp,0xff,FDM); EAI=1; EAI=0;
WARNING C207 IN LINE 58 OF mvp.c : suspicious pointer conversion
59 1 page_erase(nvnp,0xff,FDM);EAI=1; EAI=0;
WARNING C207 IN LINE 59 OF mvp.c : suspicious pointer conversion
60 1 write_flash_chk(&(nvcp->valid), Yes,FDM);
WARNING C207 IN LINE 60 OF mvp.c : suspicious pointer conversion
61 1 write_flash_chk(&(nvcp->cpu), CPUA,FDM);
WARNING C207 IN LINE 61 OF mvp.c : suspicious pointer conversion
62 1 write_flash_chk(&(nvcp->hexdlto), Master,FDM);
WARNING C207 IN LINE 62 OF mvp.c : suspicious pointer conversion
63 1 write_flash_chk(&(nvcp->speaker), On,FDM);
WARNING C207 IN LINE 63 OF mvp.c : suspicious pointer conversion
64 1 write_flash_chk(&(nvcp->mem),Target,FDM);
WARNING C207 IN LINE 64 OF mvp.c : suspicious pointer conversion
65 1 write_flash_chk(&(nvcp->memaddrl),0,FDM);
WARNING C207 IN LINE 65 OF mvp.c : suspicious pointer conversion
66 1 write_flash_chk(&(nvcp->memaddrh),0,FDM);
WARNING C207 IN LINE 66 OF mvp.c : suspicious pointer conversion
67 1 write_flash_chk(&(nvcp->forcesecure),None,FDM);
WARNING C207 IN LINE 67 OF mvp.c : suspicious pointer conversion
68 1 write_flash_chk(&(nvcp->mode),Program,FDM);
WARNING C207 IN LINE 68 OF mvp.c : suspicious pointer conversion
69 1 EAI=1; EA=1;
70 1 beep(300,100);
71 1 }
72 void nvinit(void)
73 {
74 1 if (ping.valid==Yes && pong.valid!=Yes) {nvcp=&ping; nvnp=&pong;}
-
75 1 else if (pong.valid==Yes && ping.valid!=Yes) {nvcp=&pong; nvnp=&p
-ing;}
76 1 else nvnew();
77 1 }
78
79 void updatenv(void)
80 {
81 1 NV xdata * data nvtp; // temp pointer
82 1 EAI=0; EA=0;
83 1 write_flash_chk(&(nvnp->valid), Yes,FDM);
WARNING C207 IN LINE 83 OF mvp.c : suspicious pointer conversion
84 1 if (nvnp->cpu == 0xff) write_flash_chk(&(nvnp->cpu), (nvcp-
->cpu),FDM);
WARNING C207 IN LINE 84 OF mvp.c : suspicious pointer conversion
85 1 if (nvnp->hexdlto == 0xff) write_flash_chk(&(nvnp->hexdlto), (n
-vcp->hexdlto),FDM);
WARNING C207 IN LINE 85 OF mvp.c : suspicious pointer conversion
86 1 if (nvnp->speaker == 0xff) write_flash_chk(&(nvnp->speaker), (n
-vcp->speaker),FDM);
WARNING C207 IN LINE 86 OF mvp.c : suspicious pointer conversion
87 1 if (nvnp->mem == 0xff) write_flash_chk(&(nvnp->mem), (nvcp-
->mem),FDM);
WARNING C207 IN LINE 87 OF mvp.c : suspicious pointer conversion
88 1 if (nvnp->memaddrl == 0xff) write_flash_chk(&(nvnp->memaddrl),
-(nvcp->memaddrl),FDM);
WARNING C207 IN LINE 88 OF mvp.c : suspicious pointer conversion
89 1 if (nvnp->memaddrh == 0xff) write_flash_chk(&(nvnp->memaddrh),
-(nvcp->memaddrh),FDM);
WARNING C207 IN LINE 89 OF mvp.c : suspicious pointer conversion
90 1 if (nvnp->forcesecure == 0xff)write_flash_chk(&(nvnp->forcesecure
-), (nvcp->forcesecure),FDM);
WARNING C207 IN LINE 90 OF mvp.c : suspicious pointer conversion
91 1 if (nvnp->mode == 0xff) write_flash_chk(&(nvnp->mode), (nvcp-
->mode),FDM);
WARNING C207 IN LINE 91 OF mvp.c : suspicious pointer conversion
92 1 EAI=1; EAI=0; page_erase(nvcp,0xff,FDM); EAI=1; EA=1;
WARNING C207 IN LINE 92 OF mvp.c : suspicious pointer conversion
93 1 nvtp=nvcp; nvcp=nvnp; nvnp=nvtp; // pingpong swap, nvcp <-> nvnp
-
94 1 }
95
96 void modeswitch(void)
97 {
98 1 if (high(k1) && !high(k2) && !high(k3)) {
99 2 EAI=0; EA=0; write_flash_chk(&(nvnp->mode),Bake,FDM);EAI=1; EA=1
-;
WARNING C207 IN LINE 99 OF mvp.c : suspicious pointer conversion
100 2 updatenv();
101 2 beep(500,200);
102 2 }
103 1 if (!high(k1) && high(k2) && !high(k3)) {
104 2 EAI=0; EA=0; write_flash_chk(&(nvnp->mode),Program,FDM);EAI=1; E
-A=1;
WARNING C207 IN LINE 104 OF mvp.c : suspicious pointer conversion
105 2 updatenv();
106 2 beep(500,200);
107 2 }
108 1 if (nvcp->mode==Bake){ led(GREEN,ON); led(RED,OFF);}
109 1 if (nvcp->mode==Program) { led(GREEN,ON); led(RED,ON);}
110 1 nokey();
111 1 }
112
113 void main(void)
114 {
115 1 char sfrinit=START, sfradr, sfrdata;
116 1 unsigned char c;
117 1 initsfr();
118 1 while(sfrinit!=END){ //
119 2 sfradr=faddr_data_read(sfrinit++);
120 2 sfrdata=faddr_data_read(sfrinit++);
121 2 if (sfradr!=0xff) {//host initialized
122 3 sfr_wr(sfradr|0x80,sfrdata);
123 3 } else
124 2 sfrinit=END; // host never init sfr, or END reached
125 2 }
126 1 if (faddr_data_read(2)==0) { // (8002H)==0 => autobaud
127 2 SCON=0;
128 2 TR2 = 0;
129 2 T2CON=0;
130 2 THL2=0;
131 2 autobaud();
WARNING C090 IN LINE 131 OF mvp.c : Call to function 'autobaud' without prototy
-pe
132 2 }
133 1 if (faddr_data_read(3)==0) { // (8003H)==0 => Toggle Test
134 2 while(1) {
135 3 al=c; CP=0; CP=1; id=c;
136 3 CMD0=(c&1)?1:0; CMD1=(c&2)?1:0; CMD2=(c&4)?1:0;
137 3 REQA=(c&1)?1:0; REQS=(c&2)?1:0;
138 3 c++;
139 3 }
140 2 }
141 1 version();
142 1 putstr("H)help\n");
143 1 nvinit();
144 1 c=resetpfpm();
WARNING C090 IN LINE 144 OF mvp.c : Call to function 'resetpfpm' without protot
-ype
145 1 if(c==0){
146 2 modeswitch();
147 2 cmd_parser();
WARNING C090 IN LINE 147 OF mvp.c : Call to function 'cmd_parser' without proto
-type
148 2 } else {putstr("Err="); tx_hex(c); cmd_parser();}
149 1 }
150
RC51 COMPILER V03.03.29, MVP 06/03/03 11:10:06 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION version (BEGIN)
; SOURCE LINE # 17
0000 7E00 R MOV R6,#HIGH(?STR?MVP?BASE)
0002 7F00 R MOV R7,#LOW(?STR?MVP?BASE)
0004 120000 R LCALL _putstr
; SOURCE LINE # 18
0007 7E00 R MOV R6,#HIGH(?STR?MVP?BASE + 00FH)
0009 7F00 R MOV R7,#LOW(?STR?MVP?BASE + 00FH)
000B 120000 R LCALL _putstr
; SOURCE LINE # 19
000E AFEA MOV R7,HWPC1
0010 120000 R LCALL _tx_hex
0013 AFE9 MOV R7,HWPC0
0015 120000 R LCALL _tx_hex
0018 AFEB MOV R7,HWID
001A 120000 R LCALL _tx_hex
001D 7F46 MOV R7,#046H
001F 120000 R LCALL _tx_byte
; SOURCE LINE # 20
0022 7F11 MOV R7,#011H
0024 120000 R LCALL _tx_hex
0027 120000 R LCALL putcr
002A 22 RET
; FUNCTION version (END)
; FUNCTION initsfr (BEGIN)
; SOURCE LINE # 24
0000 75F210 MOV PASEL,#010H
; SOURCE LINE # 25
0003 538EF8 ANL CKCON,#0F8H
; SOURCE LINE # 26
0006 75F105 MOV PDCON,#005H
; SOURCE LINE # 28
0009 75F607 MOV ACLK,#007H
; SOURCE LINE # 29
000C E4 CLR A
000D F5DF MOV DECIMATION+01H,A
000F 75DE1B MOV DECIMATION,#01BH
; SOURCE LINE # 30
0012 F5DC MOV ADCON0,A
; SOURCE LINE # 31
0014 75DD41 MOV ADCON1,#041H
; SOURCE LINE # 32
0017 75D708 MOV ADMUX,#008H
; SOURCE LINE # 34
001A 74FF MOV A,#0FFH
001C F5CD MOV THL2+01H,A
001E F5CC MOV THL2,A
; SOURCE LINE # 35
0020 F5CB MOV RCAP2+01H,A
0022 75CAF3 MOV RCAP2,#0F3H
; SOURCE LINE # 36
0025 75C834 MOV T2CON,#034H
; SOURCE LINE # 37
0028 759852 MOV SCON,#052H
; SOURCE LINE # 39
002B 75FB17 MOV USEC,#017H
; SOURCE LINE # 40
002E 75FD5D MOV MSEC+01H,#05DH
0031 75FCBF MOV MSEC,#0BFH
; SOURCE LINE # 42
0034 75F202 MOV PASEL,#002H
; SOURCE LINE # 44
0037 75FA81 MOV MSINT,#081H
; SOURCE LINE # 45
003A 75A630 MOV AIE,#030H
; SOURCE LINE # 46
003D D2DD SETB EAI
; SOURCE LINE # 48
003F E4 CLR A
0040 F500 R MOV rx_hdptr,A
0042 F500 R MOV rx_hdptr+01H,A
0044 F500 R MOV rx_tailptr,A
0046 F500 R MOV rx_tailptr+01H,A
0048 F500 R MOV tx_hdptr,A
004A 750010 R MOV tx_hdptr+01H,#010H
004D F500 R MOV tx_tailptr,A
004F 750010 R MOV tx_tailptr+01H,#010H
; SOURCE LINE # 49
0052 D200 R SETB txmt
0054 D200 R SETB rxmt
0056 C200 R CLR txfull
0058 C200 R CLR rxfull
005A C299 CLR TI
005C C298 CLR RI
; SOURCE LINE # 50
005E D2AF SETB EA
0060 D2AC SETB ES0
0062 22 RET
; FUNCTION initsfr (END)
; FUNCTION nvnew (BEGIN)
; SOURCE LINE # 56
0000 7E02 MOV R6,#002H
0002 7FBC MOV R7,#0BCH
0004 E4 CLR A
0005 FC MOV R4,A
0006 7D64 MOV R5,#064H
0008 120000 R LCALL _beep
; SOURCE LINE # 57
000B C2AF CLR EA
000D C2DD CLR EAI
000F 750004 R MOV nvcp,#HIGH (ping)
0012 750000 R MOV nvcp+01H,#LOW (ping)
0015 750004 R MOV nvnp,#HIGH (pong)
0018 750080 R MOV nvnp+01H,#LOW (pong)
; SOURCE LINE # 58
001B AE00 R MOV R6,nvcp
001D AF00 R MOV R7,nvcp+01H
001F 7DFF MOV R5,#0FFH
0021 7B01 MOV R3,#001H
0023 120000 R LCALL _page_erase
0026 D2DD SETB EAI
0028 C2DD CLR EAI
; SOURCE LINE # 59
002A AE00 R MOV R6,nvnp
002C AF00 R MOV R7,nvnp+01H
002E 7DFF MOV R5,#0FFH
0030 7B01 MOV R3,#001H
0032 120000 R LCALL _page_erase
0035 D2DD SETB EAI
0037 C2DD CLR EAI
; SOURCE LINE # 60
0039 E500 R MOV A,nvcp+01H
003B 2401 ADD A,#001H
003D FF MOV R7,A
003E E4 CLR A
003F 3500 R ADDC A,nvcp
0041 FE MOV R6,A
0042 E4 CLR A
0043 FD MOV R5,A
0044 7B01 MOV R3,#001H
0046 120000 R LCALL _write_flash_chk
; SOURCE LINE # 61
0049 AE00 R MOV R6,nvcp
004B AF00 R MOV R7,nvcp+01H
004D 7D80 MOV R5,#080H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?