巨量逻辑,能不能用看运气

This commit is contained in:
iridiumR 2022-05-07 19:39:50 +08:00
parent 094ec9498a
commit 853a9e8c2d
10 changed files with 821 additions and 279 deletions

View file

@ -1,9 +1,9 @@
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY:
C:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\main.obj, .\Objects\delay.obj, .\Objects\display.obj TO .\Objects\MCU_1 PRINT (.\L
>> istings\MCU_1.m51)
C:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\main.obj, .\Objects\delay.obj, .\Objects\display.obj, .\Objects\snake.obj, .\Objec
>> ts\food.obj TO .\Objects\MCU_1 PRINT (.\Listings\MCU_1.m51)
MEMORY MODEL: LARGE
@ -13,8 +13,18 @@ INPUT MODULES INCLUDED:
.\Objects\main.obj (MAIN)
.\Objects\delay.obj (DELAY)
.\Objects\display.obj (DISPLAY)
.\Objects\snake.obj (SNAKE)
.\Objects\food.obj (FOOD)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C_STARTUP)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?COPY)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IMUL)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SIDIV)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?OFFXADD)
C:\KEIL_V5\C51\LIB\C51L.LIB (RAND)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C_INIT)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?UIDIV)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA)
C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTXDATA)
LINK MAP OF MODULE: .\Objects\MCU_1 (MAIN)
@ -28,28 +38,56 @@ LINK MAP OF MODULE: .\Objects\MCU_1 (MAIN)
IDATA 0008H 0001H UNIT ?STACK
* * * * * * * X D A T A M E M O R Y * * * * * * *
XDATA 0000H 0080H UNIT ?XD?DISPLAY
XDATA 0080H 0004H UNIT ?XD?MAIN
XDATA 0084H 0004H UNIT ?XD?TEST?DISPLAY
XDATA 0088H 0004H UNIT _XDATA_GROUP_
XDATA 0000H 0601H UNIT ?XD?DISPLAY
XDATA 0601H 007BH UNIT ?XD?FOOD
XDATA 067CH 0079H UNIT ?XD?SNAKE
XDATA 06F5H 0004H UNIT ?XD?TEST?DISPLAY
XDATA 06F9H 0004H UNIT ?XD?LOGICJUDGE?FOOD
XDATA 06FDH 0004H UNIT ?XD?RAND?RAND
XDATA 0701H 0004H UNIT _XDATA_GROUP_
XDATA 0705H 0003H UNIT ?XD?BODY_MOVE?SNAKE
XDATA 0708H 0002H UNIT ?XD?SNAKE_MOVE?SNAKE
XDATA 070AH 0002H UNIT ?XD?SNAKE_DRAW?SNAKE
XDATA 070CH 0002H UNIT ?XD?FOOD_ADD?FOOD
XDATA 070EH 0002H UNIT ?XD?FOOD_DRAW?FOOD
XDATA 0710H 0001H UNIT ?XD?_ADDDOT?DISPLAY
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
CODE 0003H 00EDH UNIT ?PR?DRAW?DISPLAY
CODE 00F0H 00C5H UNIT ?PR?CLEAR?DISPLAY
CODE 01B5H 00C5H UNIT ?PR?TEST?DISPLAY
CODE 027AH 008CH UNIT ?C_C51STARTUP
CODE 0306H 0085H UNIT ?C_INITSEG
CODE 038BH 0020H UNIT ?PR?_DELAY?DELAY
CODE 03ABH 001CH UNIT ?PR?INIT?DISPLAY
CODE 03C7H 0019H UNIT ?PR?WRITE?DISPLAY
CODE 03E0H 000BH UNIT ?PR?MAIN?MAIN
CODE 03EBH 000BH UNIT ?PR?DELAY100US?DELAY
CODE 03F6H 0007H UNIT ?PR?_WRITEDATA?DISPLAY
CODE 03FDH 0007H UNIT ?PR?_SETCOMMAND?DISPLAY
CODE 0404H 0007H UNIT ?PR?_SETPAGE?DISPLAY
CODE 040BH 0007H UNIT ?PR?_SETLINE?DISPLAY
CODE 0412H 0007H UNIT ?PR?_SETY?DISPLAY
CODE 0003H 0715H UNIT ?C_INITSEG
CODE 0718H 01B7H UNIT ?C?LIB_CODE
CODE 08CFH 01A6H UNIT ?PR?LOGICJUDGE?FOOD
CODE 0A75H 011DH UNIT ?PR?DRAW?DISPLAY
CODE 0B92H 00DFH UNIT ?PR?FOOD_ADD?FOOD
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 2
CODE 0C71H 00D8H UNIT ?PR?BODY_ADD?SNAKE
CODE 0D49H 00C5H UNIT ?PR?CLEAR?DISPLAY
CODE 0E0EH 00C5H UNIT ?PR?TEST?DISPLAY
CODE 0ED3H 00ABH UNIT ?PR?SNAKE_MOVE?SNAKE
CODE 0F7EH 0099H UNIT ?PR?SNAKE_DRAW?SNAKE
CODE 1017H 008CH UNIT ?C_C51STARTUP
CODE 10A3H 007CH UNIT ?PR?FOOD_DRAW?FOOD
CODE 111FH 0061H UNIT ?PR?_ADDDOT?DISPLAY
CODE 1180H 0053H UNIT ?PR?_SADDDOT?DISPLAY
CODE 11D3H 004DH UNIT ?PR?RAND?RAND
CODE 1220H 0037H UNIT ?PR?SNAKE_INIT?SNAKE
CODE 1257H 0029H UNIT ?PR?BODY_MOVE?SNAKE
CODE 1280H 0020H UNIT ?PR?_DELAY?DELAY
CODE 12A0H 001CH UNIT ?PR?INIT?DISPLAY
CODE 12BCH 0019H UNIT ?PR?WRITE?DISPLAY
CODE 12D5H 0012H UNIT ?PR?SNAKE_TEST?SNAKE
CODE 12E7H 000BH UNIT ?PR?MAIN?MAIN
CODE 12F2H 000BH UNIT ?PR?DELAY100US?DELAY
CODE 12FDH 0007H UNIT ?PR?CACHELOCK?DISPLAY
CODE 1304H 0007H UNIT ?PR?_WRITEDATA?DISPLAY
CODE 130BH 0007H UNIT ?PR?_SETCOMMAND?DISPLAY
CODE 1312H 0007H UNIT ?PR?_SETPAGE?DISPLAY
CODE 1319H 0007H UNIT ?PR?_SETLINE?DISPLAY
CODE 1320H 0007H UNIT ?PR?_SETY?DISPLAY
CODE 1327H 0006H UNIT ?PR?CACHEUNLOCK?DISPLAY
CODE 132DH 0006H UNIT ?PR?CHECKLOCK?DISPLAY
@ -59,9 +97,6 @@ OVERLAY MAP OF MODULE: .\Objects\MCU_1 (MAIN)
SEGMENT XDATA_GROUP
+--> CALLED SEGMENT START LENGTH
-----------------------------------------------
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 2
?C_C51STARTUP ----- -----
+--> ?PR?MAIN?MAIN
+--> ?C_INITSEG
@ -77,13 +112,16 @@ SEGMENT XDATA_GROUP
?PR?WRITE?DISPLAY ----- -----
+--> ?PR?_DELAY?DELAY
?PR?CLEAR?DISPLAY 0088H 0004H
?PR?CLEAR?DISPLAY 0701H 0004H
+--> ?PR?WRITE?DISPLAY
?PR?DRAW?DISPLAY 0088H 0002H
?PR?DRAW?DISPLAY 0701H 0004H
+--> ?PR?WRITE?DISPLAY
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 3
SYMBOL TABLE OF MODULE: .\Objects\MCU_1 (MAIN)
@ -96,47 +134,43 @@ SYMBOL TABLE OF MODULE: .\Objects\MCU_1 (MAIN)
D:00B0H PUBLIC P3
D:00A8H PUBLIC IE
D:00B8H PUBLIC IP
C:03E0H PUBLIC main
C:12E7H PUBLIC main
D:0098H PUBLIC SCON
D:0088H PUBLIC TCON
D:00C8H PUBLIC T2CON
X:0080H PUBLIC i
X:0082H PUBLIC j
D:00D0H PUBLIC PSW
------- PROC MAIN
C:03E0H LINE# 14
C:03E0H LINE# 15
C:03E0H LINE# 16
C:03E3H LINE# 17
C:03E6H LINE# 19
C:03E6H LINE# 20
C:03E6H LINE# 21
C:03E9H LINE# 23
C:12E7H LINE# 9
C:12E7H LINE# 10
C:12E7H LINE# 11
C:12EAH LINE# 12
C:12EDH LINE# 14
C:12EDH LINE# 15
C:12EDH LINE# 16
C:12EDH LINE# 17
C:12F0H LINE# 19
------- ENDPROC MAIN
------- ENDMOD MAIN
------- MODULE DELAY
C:0000H SYMBOL _ICE_DUMMY_
C:03EBH PUBLIC delay100us
C:038BH PUBLIC _delay
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 3
C:12F2H PUBLIC delay100us
C:1280H PUBLIC _delay
------- PROC DELAY100US
------- DO
D:0007H SYMBOL i
D:0006H SYMBOL j
------- ENDDO
C:03EBH LINE# 3
C:03EBH LINE# 4
C:03EBH LINE# 7
C:03ECH LINE# 8
C:03EDH LINE# 9
C:03EFH LINE# 10
C:03F1H LINE# 12
C:03F1H LINE# 13
C:03F3H LINE# 14
C:03F5H LINE# 15
C:12F2H LINE# 3
C:12F2H LINE# 4
C:12F2H LINE# 7
C:12F3H LINE# 8
C:12F4H LINE# 9
C:12F6H LINE# 10
C:12F8H LINE# 12
C:12F8H LINE# 13
C:12FAH LINE# 14
C:12FCH LINE# 15
------- ENDPROC DELAY100US
------- PROC _DELAY
D:0006H SYMBOL n
@ -144,253 +178,573 @@ SYMBOL TABLE OF MODULE: .\Objects\MCU_1 (MAIN)
D:0006H SYMBOL i
D:0004H SYMBOL j
------- ENDDO
C:038BH LINE# 24
C:038BH LINE# 26
C:038BH LINE# 27
C:0396H LINE# 28
C:03AAH LINE# 29
C:1280H LINE# 24
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 4
C:1280H LINE# 26
C:1280H LINE# 27
C:128BH LINE# 28
C:129FH LINE# 29
------- ENDPROC _DELAY
------- ENDMOD DELAY
------- MODULE DISPLAY
C:0000H SYMBOL _ICE_DUMMY_
D:0090H PUBLIC P1
C:12FDH PUBLIC cacheLock
D:00B0H PUBLIC P3
C:00F0H PUBLIC clear
C:0D49H PUBLIC clear
C:132DH PUBLIC checkLock
D:00A8H PUBLIC IE
C:03FDH PUBLIC _setCommand
C:130BH PUBLIC _setCommand
D:00B8H PUBLIC IP
B:00B0H.0 PUBLIC RS
C:0412H PUBLIC _setY
X:0000H SYMBOL sDisplayCache
C:1320H PUBLIC _setY
C:1180H PUBLIC _sAddDot
B:00B0H.1 PUBLIC RW
C:03F6H PUBLIC _writeData
C:03D0H PUBLIC write
C:0003H PUBLIC draw
X:0000H PUBLIC sine
C:1304H PUBLIC _writeData
X:0200H SYMBOL lock
C:12C5H PUBLIC write
C:0A75H PUBLIC draw
D:0098H PUBLIC SCON
D:0088H PUBLIC TCON
C:03ABH PUBLIC init
C:01B5H PUBLIC test
C:12A0H PUBLIC init
C:0E0EH PUBLIC test
B:00B0H.2 PUBLIC E
C:0404H PUBLIC _setPage
C:1312H PUBLIC _setPage
X:0201H SYMBOL displayCache
C:1125H PUBLIC _addDot
B:00B0H.4 PUBLIC CSA
C:1319H PUBLIC _setLine
B:00B0H.5 PUBLIC CSB
C:040BH PUBLIC _setLine
C:1327H PUBLIC cacheUnlock
D:00C8H PUBLIC T2CON
D:00D0H PUBLIC PSW
C:03C7H SYMBOL L?0056
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 4
------- PROC L?0078
------- ENDPROC L?0078
------- PROC _ADDDOT
X:0710H SYMBOL x
D:0005H SYMBOL y
C:1125H LINE# 20
C:112AH LINE# 21
C:112AH LINE# 22
C:1130H LINE# 24
C:117FH LINE# 25
------- ENDPROC _ADDDOT
------- PROC _SADDDOT
D:0002H SYMBOL x
D:0003H SYMBOL y
C:1180H LINE# 27
C:1184H LINE# 28
C:1184H LINE# 29
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 5
C:03CCH SYMBOL L?0057
------- PROC L?0055
------- ENDPROC L?0055
C:03C7H SYMBOL L?0056
C:03CCH SYMBOL L?0057
C:11AEH LINE# 31
C:11B9H LINE# 32
C:11BFH LINE# 33
C:11CBH LINE# 34
C:11D2H LINE# 35
------- ENDPROC _SADDDOT
------- PROC CACHELOCK
C:12FDH LINE# 36
C:12FDH LINE# 37
C:12FDH LINE# 38
C:1303H LINE# 39
------- ENDPROC CACHELOCK
------- PROC CACHEUNLOCK
C:1327H LINE# 41
C:1327H LINE# 42
C:1327H LINE# 43
C:132CH LINE# 44
------- ENDPROC CACHEUNLOCK
------- PROC CHECKLOCK
C:132DH LINE# 46
C:132DH LINE# 47
C:132DH LINE# 48
C:1332H LINE# 49
------- ENDPROC CHECKLOCK
C:12BCH SYMBOL L?0077
------- PROC L?0076
------- ENDPROC L?0076
C:12BCH SYMBOL L?0077
------- PROC WRITE
C:03D0H LINE# 18
C:03D0H LINE# 19
C:03D0H LINE# 20
C:03D2H LINE# 21
C:03D4H LINE# 22
C:03D6H LINE# 23
C:03DDH LINE# 24
C:03DFH LINE# 25
C:12C5H LINE# 51
C:12C5H LINE# 52
C:12C5H LINE# 53
C:12C7H LINE# 54
C:12C9H LINE# 55
C:12CBH LINE# 56
C:12D2H LINE# 57
C:12D4H LINE# 58
------- ENDPROC WRITE
------- PROC DRAW
------- DO
X:0088H SYMBOL j
X:0701H SYMBOL i
X:0703H SYMBOL j
------- ENDDO
C:0003H LINE# 27
C:0003H LINE# 28
C:0003H LINE# 30
C:0005H LINE# 31
C:0007H LINE# 33
C:001EH LINE# 34
C:001EH LINE# 36
C:0020H LINE# 37
C:0022H LINE# 38
C:0033H LINE# 39
C:0036H LINE# 40
C:003FH LINE# 41
C:0042H LINE# 42
C:0044H LINE# 43
C:0046H LINE# 44
C:0066H LINE# 45
C:0069H LINE# 46
C:0079H LINE# 48
C:007BH LINE# 49
C:007DH LINE# 50
C:0094H LINE# 51
C:0094H LINE# 53
C:0096H LINE# 54
C:0098H LINE# 55
C:00A9H LINE# 56
C:00ACH LINE# 57
C:00B5H LINE# 58
C:00B8H LINE# 61
C:00BAH LINE# 62
C:00BCH LINE# 63
C:00DCH LINE# 64
C:00DFH LINE# 65
C:00EFH LINE# 66
C:0A75H LINE# 60
C:0A75H LINE# 61
C:0A75H LINE# 64
C:0A7EH LINE# 67
C:0A80H LINE# 69
C:0A82H LINE# 70
C:0A84H LINE# 71
C:0A9AH LINE# 72
C:0A9AH LINE# 73
C:0A9AH LINE# 74
C:0A9AH LINE# 75
C:0A9AH LINE# 76
C:0A9DH LINE# 77
C:0AA0H LINE# 78
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 6
C:0AA3H LINE# 80
C:0ABAH LINE# 81
C:0ABAH LINE# 82
C:0ABCH LINE# 83
C:0ABEH LINE# 84
C:0AE4H LINE# 85
C:0AE7H LINE# 86
C:0AF7H LINE# 87
C:0B08H LINE# 88
C:0B0AH LINE# 89
C:0B0CH LINE# 90
C:0B23H LINE# 91
C:0B23H LINE# 92
C:0B23H LINE# 93
C:0B23H LINE# 94
C:0B23H LINE# 95
C:0B26H LINE# 96
C:0B29H LINE# 97
C:0B2CH LINE# 99
C:0B43H LINE# 100
C:0B43H LINE# 101
C:0B45H LINE# 102
C:0B47H LINE# 103
C:0B6DH LINE# 104
C:0B70H LINE# 105
C:0B80H LINE# 106
C:0B91H LINE# 107
------- ENDPROC DRAW
------- PROC CLEAR
------- DO
X:0088H SYMBOL i
X:008AH SYMBOL j
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 5
X:0701H SYMBOL i
X:0703H SYMBOL j
------- ENDDO
C:00F0H LINE# 69
C:00F0H LINE# 70
C:00F0H LINE# 72
C:00F2H LINE# 73
C:00F4H LINE# 74
C:010BH LINE# 75
C:010BH LINE# 76
C:010BH LINE# 77
C:010BH LINE# 78
C:010BH LINE# 79
C:010EH LINE# 80
C:0111H LINE# 81
C:0114H LINE# 83
C:011BH LINE# 84
C:011BH LINE# 85
C:011DH LINE# 86
C:011FH LINE# 87
C:0122H LINE# 88
C:0125H LINE# 89
C:0142H LINE# 90
C:0152H LINE# 91
C:0154H LINE# 92
C:0156H LINE# 93
C:016DH LINE# 94
C:016DH LINE# 95
C:016DH LINE# 96
C:016DH LINE# 97
C:016DH LINE# 98
C:0170H LINE# 99
C:0173H LINE# 100
C:0176H LINE# 102
C:017DH LINE# 103
C:017DH LINE# 104
C:017FH LINE# 105
C:0181H LINE# 106
C:0184H LINE# 107
C:0187H LINE# 108
C:01A4H LINE# 109
C:01B4H LINE# 110
C:0D49H LINE# 111
C:0D49H LINE# 112
C:0D49H LINE# 114
C:0D4BH LINE# 115
C:0D4DH LINE# 116
C:0D64H LINE# 117
C:0D64H LINE# 118
C:0D64H LINE# 119
C:0D64H LINE# 120
C:0D64H LINE# 121
C:0D67H LINE# 122
C:0D6AH LINE# 123
C:0D6DH LINE# 125
C:0D74H LINE# 126
C:0D74H LINE# 127
C:0D76H LINE# 128
C:0D78H LINE# 129
C:0D7BH LINE# 130
C:0D7EH LINE# 131
C:0D9BH LINE# 132
C:0DABH LINE# 133
C:0DADH LINE# 134
C:0DAFH LINE# 135
C:0DC6H LINE# 136
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 7
C:0DC6H LINE# 137
C:0DC6H LINE# 138
C:0DC6H LINE# 139
C:0DC6H LINE# 140
C:0DC9H LINE# 141
C:0DCCH LINE# 142
C:0DCFH LINE# 144
C:0DD6H LINE# 145
C:0DD6H LINE# 146
C:0DD8H LINE# 147
C:0DDAH LINE# 148
C:0DDDH LINE# 149
C:0DE0H LINE# 150
C:0DFDH LINE# 151
C:0E0DH LINE# 152
------- ENDPROC CLEAR
------- PROC INIT
C:03ABH LINE# 111
C:03ABH LINE# 112
C:03ABH LINE# 113
C:03ADH LINE# 114
C:03AFH LINE# 115
C:03B1H LINE# 116
C:03B3H LINE# 117
C:03B5H LINE# 118
C:03B8H LINE# 119
C:03BBH LINE# 121
C:03BDH LINE# 122
C:03BFH LINE# 123
C:03C1H LINE# 124
C:03C4H LINE# 125
C:12A0H LINE# 154
C:12A0H LINE# 155
C:12A0H LINE# 156
C:12A2H LINE# 157
C:12A4H LINE# 158
C:12A6H LINE# 159
C:12A8H LINE# 160
C:12AAH LINE# 161
C:12ADH LINE# 162
C:12B0H LINE# 164
C:12B2H LINE# 165
C:12B4H LINE# 166
C:12B6H LINE# 167
C:12B9H LINE# 168
------- ENDPROC INIT
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 6
------- PROC TEST
------- DO
X:0084H SYMBOL i
X:0086H SYMBOL j
X:06F5H SYMBOL i
X:06F7H SYMBOL j
------- ENDDO
C:01B5H LINE# 128
C:01B5H LINE# 129
C:01B5H LINE# 131
C:01B7H LINE# 132
C:01B9H LINE# 133
C:01D0H LINE# 134
C:01D0H LINE# 135
C:01D0H LINE# 136
C:01D0H LINE# 137
C:01D0H LINE# 138
C:01D3H LINE# 139
C:01D6H LINE# 140
C:01D9H LINE# 142
C:01E0H LINE# 143
C:01E0H LINE# 144
C:01E2H LINE# 145
C:01E4H LINE# 146
C:01E7H LINE# 147
C:01EAH LINE# 148
C:0207H LINE# 149
C:0217H LINE# 150
C:0219H LINE# 151
C:021BH LINE# 152
C:0232H LINE# 153
C:0232H LINE# 154
C:0232H LINE# 155
C:0232H LINE# 156
C:0232H LINE# 157
C:0235H LINE# 158
C:0238H LINE# 159
C:023BH LINE# 161
C:0242H LINE# 162
C:0242H LINE# 163
C:0244H LINE# 164
C:0246H LINE# 165
C:0249H LINE# 166
C:024CH LINE# 167
C:0269H LINE# 168
C:0279H LINE# 169
C:0E0EH LINE# 172
C:0E0EH LINE# 173
C:0E0EH LINE# 175
C:0E10H LINE# 176
C:0E12H LINE# 177
C:0E29H LINE# 178
C:0E29H LINE# 179
C:0E29H LINE# 180
C:0E29H LINE# 181
C:0E29H LINE# 182
C:0E2CH LINE# 183
C:0E2FH LINE# 184
C:0E32H LINE# 186
C:0E39H LINE# 187
C:0E39H LINE# 188
C:0E3BH LINE# 189
C:0E3DH LINE# 190
C:0E40H LINE# 191
C:0E43H LINE# 192
C:0E60H LINE# 193
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 8
C:0E70H LINE# 194
C:0E72H LINE# 195
C:0E74H LINE# 196
C:0E8BH LINE# 197
C:0E8BH LINE# 198
C:0E8BH LINE# 199
C:0E8BH LINE# 200
C:0E8BH LINE# 201
C:0E8EH LINE# 202
C:0E91H LINE# 203
C:0E94H LINE# 205
C:0E9BH LINE# 206
C:0E9BH LINE# 207
C:0E9DH LINE# 208
C:0E9FH LINE# 209
C:0EA2H LINE# 210
C:0EA5H LINE# 211
C:0EC2H LINE# 212
C:0ED2H LINE# 213
------- ENDPROC TEST
------- PROC _WRITEDATA
D:0007H SYMBOL d
C:03F6H LINE# 172
C:03F6H LINE# 173
C:03F6H LINE# 174
C:03F8H LINE# 175
C:03FAH LINE# 176
C:03FCH LINE# 177
C:1304H LINE# 216
C:1304H LINE# 217
C:1304H LINE# 218
C:1306H LINE# 219
C:1308H LINE# 220
C:130AH LINE# 221
------- ENDPROC _WRITEDATA
------- PROC _SETCOMMAND
D:0007H SYMBOL d
C:03FDH LINE# 179
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/05/2022 20:42:31 PAGE 7
C:03FDH LINE# 180
C:03FDH LINE# 181
C:03FFH LINE# 182
C:0401H LINE# 183
C:0403H LINE# 184
C:130BH LINE# 223
C:130BH LINE# 224
C:130BH LINE# 225
C:130DH LINE# 226
C:130FH LINE# 227
C:1311H LINE# 228
------- ENDPROC _SETCOMMAND
------- PROC _SETPAGE
D:0007H SYMBOL p
C:0404H LINE# 187
C:0404H LINE# 188
C:0404H LINE# 189
C:1312H LINE# 231
C:1312H LINE# 232
C:1312H LINE# 233
------- ENDPROC _SETPAGE
------- PROC _SETLINE
D:0007H SYMBOL p
C:040BH LINE# 192
C:040BH LINE# 193
C:040BH LINE# 194
C:1319H LINE# 236
C:1319H LINE# 237
C:1319H LINE# 238
------- ENDPROC _SETLINE
------- PROC _SETY
D:0007H SYMBOL p
C:0412H LINE# 197
C:0412H LINE# 198
C:0412H LINE# 199
C:1320H LINE# 241
C:1320H LINE# 242
C:1320H LINE# 243
------- ENDPROC _SETY
------- ENDMOD DISPLAY
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 9
------- MODULE SNAKE
C:0000H SYMBOL _ICE_DUMMY_
D:0090H PUBLIC P1
D:00B0H PUBLIC P3
D:00A8H PUBLIC IE
X:067CH PUBLIC snake
D:00B8H PUBLIC IP
C:0F7EH PUBLIC snake_draw
C:1220H PUBLIC snake_init
C:0ED3H PUBLIC snake_move
D:0098H PUBLIC SCON
D:0088H PUBLIC TCON
C:12D5H PUBLIC snake_test
C:0C71H PUBLIC body_add
X:06F4H PUBLIC len
C:1257H PUBLIC body_move
D:00C8H PUBLIC T2CON
D:00D0H PUBLIC PSW
------- PROC SNAKE_INIT
C:1220H LINE# 8
C:1220H LINE# 9
C:1220H LINE# 11
C:1235H LINE# 12
C:1246H LINE# 13
C:1256H LINE# 15
------- ENDPROC SNAKE_INIT
------- PROC BODY_MOVE
X:0705H SYMBOL b
C:1257H LINE# 17
C:1257H LINE# 18
C:1257H LINE# 19
C:1268H LINE# 20
C:1268H LINE# 21
C:1268H LINE# 22
C:126BH LINE# 23
C:126DH LINE# 25
C:126DH LINE# 26
C:1270H LINE# 27
C:1272H LINE# 29
C:1272H LINE# 30
C:1278H LINE# 31
C:1279H LINE# 33
C:1279H LINE# 34
C:127FH LINE# 35
C:127FH LINE# 36
C:127FH LINE# 37
------- ENDPROC BODY_MOVE
------- PROC SNAKE_MOVE
------- DO
X:0708H SYMBOL i
------- ENDDO
C:0ED3H LINE# 39
C:0ED3H LINE# 40
C:0ED3H LINE# 41
C:0EDAH LINE# 42
C:0EF2H LINE# 43
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 10
C:0EF2H LINE# 45
C:0F13H LINE# 46
C:0F23H LINE# 47
C:0F43H LINE# 48
C:0F43H LINE# 50
C:0F6DH LINE# 51
C:0F7DH LINE# 52
------- ENDPROC SNAKE_MOVE
------- PROC BODY_ADD
C:0C71H LINE# 54
C:0C71H LINE# 55
C:0C71H LINE# 57
C:0C77H LINE# 58
C:0C98H LINE# 59
C:0CBCH LINE# 60
C:0CE0H LINE# 63
C:0D00H LINE# 64
C:0D00H LINE# 65
C:0D00H LINE# 66
C:0D0CH LINE# 67
C:0D0EH LINE# 69
C:0D0EH LINE# 70
C:0D1DH LINE# 71
C:0D1FH LINE# 73
C:0D1FH LINE# 74
C:0D33H LINE# 75
C:0D34H LINE# 77
C:0D34H LINE# 78
C:0D48H LINE# 79
C:0D48H LINE# 80
C:0D48H LINE# 81
------- ENDPROC BODY_ADD
------- PROC SNAKE_DRAW
------- DO
X:070AH SYMBOL i
------- ENDDO
C:0F7EH LINE# 83
C:0F7EH LINE# 84
C:0F7EH LINE# 85
C:0F86H LINE# 86
C:0F91H LINE# 87
C:0F9DH LINE# 88
C:0FA9H LINE# 89
C:0FB5H LINE# 90
C:0FC1H LINE# 92
C:0FD9H LINE# 93
C:0FD9H LINE# 94
C:1006H LINE# 95
C:1016H LINE# 96
------- ENDPROC SNAKE_DRAW
------- PROC SNAKE_TEST
------- DO
D:0004H SYMBOL i
------- ENDDO
C:12D5H LINE# 98
C:12D5H LINE# 99
C:12D5H LINE# 101
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 11
C:12D8H LINE# 102
C:12D8H LINE# 103
C:12E6H LINE# 104
------- ENDPROC SNAKE_TEST
------- ENDMOD SNAKE
------- MODULE FOOD
C:0000H SYMBOL _ICE_DUMMY_
D:0090H PUBLIC P1
D:00B0H PUBLIC P3
C:08CFH PUBLIC logicJudge
D:00A8H PUBLIC IE
X:0601H PUBLIC isVICTROY
D:00B8H PUBLIC IP
X:0602H PUBLIC food
D:0098H PUBLIC SCON
C:0B92H PUBLIC food_add
D:0088H PUBLIC TCON
X:067AH PUBLIC isGAMEOVER
C:10A3H PUBLIC food_draw
D:00C8H PUBLIC T2CON
X:067BH PUBLIC fCount
D:00D0H PUBLIC PSW
------- PROC FOOD_ADD
------- DO
X:070CH SYMBOL i
C:0BB0H SYMBOL Re
------- ENDDO
C:0B92H LINE# 11
C:0B92H LINE# 12
C:0B92H LINE# 13
C:0B99H LINE# 14
C:0B9FH LINE# 15
C:0BB0H LINE# 17
C:0BB0H LINE# 18
C:0BCDH LINE# 19
C:0BEAH LINE# 22
C:0C02H LINE# 23
C:0C5FH LINE# 24
C:0C70H LINE# 26
------- ENDPROC FOOD_ADD
------- PROC FOOD_DRAW
------- DO
X:070EH SYMBOL i
------- ENDDO
C:10A3H LINE# 28
C:10A3H LINE# 29
C:10A3H LINE# 30
C:10AAH LINE# 31
C:10C2H LINE# 32
C:10C2H LINE# 33
C:10E1H LINE# 34
C:10E1H LINE# 35
C:110EH LINE# 36
C:111EH LINE# 37
------- ENDPROC FOOD_DRAW
------- PROC LOGICJUDGE
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 12
------- DO
X:06F9H SYMBOL i
X:06FBH SYMBOL j
------- ENDDO
C:08CFH LINE# 39
C:08CFH LINE# 40
C:08CFH LINE# 42
C:08E7H LINE# 43
C:08E7H LINE# 44
C:0906H LINE# 45
C:0906H LINE# 46
C:093EH LINE# 47
C:0941H LINE# 48
C:0952H LINE# 50
C:0974H LINE# 51
C:0974H LINE# 52
C:09AAH LINE# 53
C:09AAH LINE# 54
C:09ADH LINE# 56
C:09ADH LINE# 57
C:09CFH LINE# 58
C:0A3AH LINE# 61
C:0A3AH LINE# 62
C:0A41H LINE# 64
C:0A52H LINE# 65
C:0A63H LINE# 66
C:0A6BH LINE# 67
C:0A6BH LINE# 68
C:0A71H LINE# 70
C:0A71H LINE# 71
C:0A74H LINE# 72
------- ENDPROC LOGICJUDGE
------- ENDMOD FOOD
------- MODULE ?C?COPY
C:07E8H PUBLIC ?C?COPY
------- ENDMOD ?C?COPY
------- MODULE ?C?IMUL
C:080EH PUBLIC ?C?IMUL
------- ENDMOD ?C?IMUL
------- MODULE ?C?SIDIV
C:0820H PUBLIC ?C?SIDIV
------- ENDMOD ?C?SIDIV
------- MODULE ?C?OFFXADD
C:0856H PUBLIC ?C?OFFXADD
------- ENDMOD ?C?OFFXADD
------- MODULE RAND
X:06FDH PUBLIC ?SRAND?BYTE
C:11D3H PUBLIC RAND
C:1211H PUBLIC _SRAND
------- ENDMOD RAND
------- MODULE ?C?UIDIV
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 13
C:0862H PUBLIC ?C?UIDIV
------- ENDMOD ?C?UIDIV
------- MODULE ?C?LLDXDATA
C:08B7H PUBLIC ?C?LLDXDATA
------- ENDMOD ?C?LLDXDATA
------- MODULE ?C?LSTXDATA
C:08C3H PUBLIC ?C?LSTXDATA
------- ENDMOD ?C?LSTXDATA
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?DELAY100US?DELAY
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?CACHELOCK?DISPLAY
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?CACHEUNLOCK?DISPLAY
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?CHECKLOCK?DISPLAY
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?TEST?DISPLAY
@ -406,5 +760,26 @@ SYMBOL TABLE OF MODULE: .\Objects\MCU_1 (MAIN)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_SETY?DISPLAY
Program Size: data=9.0 xdata=140 code=1049
LINK/LOCATE RUN COMPLETE. 6 WARNING(S), 0 ERROR(S)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?SNAKE_INIT?SNAKE
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?SNAKE_DRAW?SNAKE
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?SNAKE_TEST?SNAKE
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?FOOD_ADD?FOOD
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?FOOD_DRAW?FOOD
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?LOGICJUDGE?FOOD
Program Size: data=9.0 xdata=1809 code=4915
BL51 BANKED LINKER/LOCATER V6.22.2.0 05/07/2022 19:38:26 PAGE 14
LINK/LOCATE RUN COMPLETE. 15 WARNING(S), 0 ERROR(S)

View file

@ -240,6 +240,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\food.c</PathWithFileName>
<FilenameWithoutPath>food.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -250,7 +262,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileNumber>6</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -262,7 +274,7 @@
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileNumber>7</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -274,7 +286,7 @@
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>7</FileNumber>
<FileNumber>8</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -284,6 +296,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\food.h</PathWithFileName>
<FilenameWithoutPath>food.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>

View file

@ -396,6 +396,11 @@
<FileType>1</FileType>
<FilePath>.\snake.c</FilePath>
</File>
<File>
<FileName>food.c</FileName>
<FileType>1</FileType>
<FilePath>.\food.c</FilePath>
</File>
</Files>
</Group>
<Group>
@ -416,6 +421,11 @@
<FileType>5</FileType>
<FilePath>.\snake.h</FilePath>
</File>
<File>
<FileName>food.h</FileName>
<FileType>5</FileType>
<FilePath>.\food.h</FilePath>
</File>
</Files>
</Group>
</Groups>

View file

@ -12,15 +12,42 @@ sbit E = P3 ^ 2;
sbit CSA = P3 ^ 4;
sbit CSB = P3 ^ 5;
static unsigned char displayCache[2][8][64];
// 2 Screen 8 Page 64 Line
static unsigned char displayCache[2][8][64]={0};
static unsigned char sDisplayCache[32][16]={0};
static unsigned char lock=0;
void addDot(unsigned char x, unsigned char y);
void addDot(unsigned char x, unsigned char y)
{
if(lock)
return;
displayCache[x / 64][y / 8][x % 64] += 1 << (y % 8);
}
void sAddDot(unsigned char x, unsigned char y)
{
if(x>31|y>15|lock)
return;
addDot(2*x,2*y);
addDot(2*x,2*y+1);
addDot(2*x+1,2*y);
addDot(2*x+1,2*y+1);
}
void cacheLock()
{
lock=1;
}
void cacheUnlock()
{
lock=0;
}
unsigned char checkLock()
{
return lock;
}
void write()
{
RW = 0;
@ -32,7 +59,13 @@ void write()
void draw()
{
unsigned int i, j;
unsigned int i, j;
if(!lock)
return;
else
lock=0;
CSA = 1;
CSB = 0;
for(i = 0; i < 8; i++)
@ -74,6 +107,7 @@ void draw()
}
void clear()
{
unsigned int i, j;

View file

@ -1,18 +1,15 @@
#ifndef _DISPLAY_H_
#define _DISPLAY_H_
void setData(unsigned char d);
void setCommand(unsigned char d);
void lcdInit();
void setPage(unsigned char p);
void setPage(unsigned char p);
void setLine(unsigned char p);
void setY(unsigned char p);
void test();
void init();
void clear();
void name(unsigned int i);
void write();
void draw();
void addDot(unsigned char x, unsigned char y);
void sAddDot(unsigned char x, unsigned char y);
void cacheLock();
void cacheUnlock();
unsigned char checkLock();
#endif

72
MCU/Final_Design/food.c Normal file
View file

@ -0,0 +1,72 @@
#include "food.h"
#include "display.h"
extern unsigned char len;
extern Body snake[];
unsigned char isGAMEOVER = 0;
unsigned char isVICTROY = 0;
unsigned char fCount = 0;
Food food[40] = {{0, 0}, 0};
void food_add()
{
int i = 0;
fCount++;
food[fCount - 1].isEnable = 1;
Re:
food[fCount - 1].d.x = rand() % XXX;
food[fCount - 1].d.y = rand() % YYY;
for(; i <= len; i++)
if(snake[i].d.x == food[fCount - 1].d.x && snake[i].d.y == food[fCount - 1].d.y)
goto Re;
}
void food_draw()
{
int i = 0;
for(; i < fCount; i++)
{
if(!food[i].isEnable == 0)
continue;
sAddDot(food[i].d.x, food[i].d.y);
}
}
void logicJudge()
{
int i, j;
for(; i < fCount; i++)
{
if(!food[i].isEnable == 0)
continue;
if(snake[0].d.x == food[i].d.x && snake[0].d.y == food[i].d.y)
body_add();
}
for(i = 0; i < len; i++)
{
if(snake[i].d.x==0 || snake[i].d.y ==0 || snake[i].d.y == YYY || snake[i].d.x == XXX)
{
isGAMEOVER=1;
return;
}
for(i = 0; i < len; i++)
if(snake[i].d.x == food[j].d.x &&
snake[i].d.y == food[j].d.y &&
i != j)
{
isGAMEOVER=1;
return;
}
}
if(fCount == 30)
{
isVICTROY = 1;
return;
}
snake_move();
}

18
MCU/Final_Design/food.h Normal file
View file

@ -0,0 +1,18 @@
#ifndef _FOOD_H_
#define _FOOD_H_
#include "snake.h"
#include "display.h"
#include <stdlib.h>
struct FOOD
{
Dot d;
unsigned char isEnable;
} ;
typedef struct FOOD Food;
void food_add();
void food_draw();
void logicJudge();
#endif

View file

@ -3,8 +3,8 @@
#include "display.h"
unsigned int i;
unsigned int j;
extern unsigned char isGAMEOVER;
extern unsigned char isVICTROY;
int main()
{
@ -13,7 +13,8 @@ int main()
while(1)
{
if(!isGAMEOVER && !isVICTROY);
draw();
}
}

View file

@ -1,16 +1,17 @@
#include "snake.h"
#include "display.h"
static Body snake[40] = {{0, 0}, 0};
static unsigned char len = 0;
unsigned char len = 0;
Body snake[40] = {{0, 0}, 0};
void snake_init()
{
// Initialize snake
snake[len].d.x = 63;
snake[len].d.y = 31;
snake[len].d.x = XXX/2;
snake[len].d.y = YYY/2;
snake[len].m = R;
len++;
}
void body_move(Body b)
@ -53,7 +54,7 @@ void snake_move()
void body_add()
{
// Copy last body part to new body part
len++
len++;
snake[len].m = snake[len - 1].m;
snake[len].d.x = snake[len - 1].d.x;
snake[len].d.y = snake[len - 1].d.y;
@ -82,22 +83,22 @@ void body_add()
void snake_draw()
{
int i=1;
addDot(nake[0].d.x,nake[0].d.y);
addDot(nake[0].d.x+1,nake[0].d.y);
addDot(nake[0].d.x,nake[0].d.y+1);
addDot(nake[0].d.x-1,nake[0].d.y);
addDot(nake[0].d.x,nake[0].d.y-1);
sAddDot(snake[0].d.x,snake[0].d.y);
sAddDot(snake[0].d.x+1,snake[0].d.y);
sAddDot(snake[0].d.x,snake[0].d.y+1);
sAddDot(snake[0].d.x-1,snake[0].d.y);
sAddDot(snake[0].d.x,snake[0].d.y-1);
for(;i<=len;i++)
{
addDot(nake[i].d.x,nake[i].d.y);
sAddDot(snake[i].d.x,snake[i].d.y);
}
}
void snake_test()
{
//Add 14 Body to test
//Add Body to test
int i = 0;
for(; i < 15; i++)
for(; i < 2; i++)
body_add();
}

View file

@ -3,8 +3,11 @@
#include <reg52.h>
#include <stdio.h>
#define bool char
#define XXX 31
#define YYY 15
#define bool char
#define MOVE_STATE char
#define R 0
#define U 1
@ -28,4 +31,11 @@ struct BODY
typedef struct BODY Body;
void snake_init();
void body_move(Body b);
void snake_move();
void body_add();
void snake_draw();
void snake_test();
#endif