diff --git a/MCU/Final_Design/Listings/MCU_1.m51 b/MCU/Final_Design/Listings/MCU_1.m51
index 201ce5e..5b40452 100644
--- a/MCU/Final_Design/Listings/MCU_1.m51
+++ b/MCU/Final_Design/Listings/MCU_1.m51
@@ -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)
diff --git a/MCU/Final_Design/MCU_1.uvopt b/MCU/Final_Design/MCU_1.uvopt
index 0e777e7..3510f78 100644
--- a/MCU/Final_Design/MCU_1.uvopt
+++ b/MCU/Final_Design/MCU_1.uvopt
@@ -240,6 +240,18 @@
0
0
+
+ 1
+ 5
+ 1
+ 0
+ 0
+ 0
+ .\food.c
+ food.c
+ 0
+ 0
+
@@ -250,7 +262,7 @@
0
2
- 5
+ 6
5
0
0
@@ -262,7 +274,7 @@
2
- 6
+ 7
5
0
0
@@ -274,7 +286,7 @@
2
- 7
+ 8
5
0
0
@@ -284,6 +296,18 @@
0
0
+
+ 2
+ 9
+ 5
+ 0
+ 0
+ 0
+ .\food.h
+ food.h
+ 0
+ 0
+
diff --git a/MCU/Final_Design/MCU_1.uvproj b/MCU/Final_Design/MCU_1.uvproj
index d17cff6..177a9c9 100644
--- a/MCU/Final_Design/MCU_1.uvproj
+++ b/MCU/Final_Design/MCU_1.uvproj
@@ -396,6 +396,11 @@
1
.\snake.c
+
+ food.c
+ 1
+ .\food.c
+
@@ -416,6 +421,11 @@
5
.\snake.h
+
+ food.h
+ 5
+ .\food.h
+
diff --git a/MCU/Final_Design/display.c b/MCU/Final_Design/display.c
index f2ccb82..60c8d80 100644
--- a/MCU/Final_Design/display.c
+++ b/MCU/Final_Design/display.c
@@ -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;
diff --git a/MCU/Final_Design/display.h b/MCU/Final_Design/display.h
index 6fbd584..8ac3dfe 100644
--- a/MCU/Final_Design/display.h
+++ b/MCU/Final_Design/display.h
@@ -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
\ No newline at end of file
diff --git a/MCU/Final_Design/food.c b/MCU/Final_Design/food.c
new file mode 100644
index 0000000..0a13d7b
--- /dev/null
+++ b/MCU/Final_Design/food.c
@@ -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();
+}
\ No newline at end of file
diff --git a/MCU/Final_Design/food.h b/MCU/Final_Design/food.h
new file mode 100644
index 0000000..ed059f6
--- /dev/null
+++ b/MCU/Final_Design/food.h
@@ -0,0 +1,18 @@
+#ifndef _FOOD_H_
+#define _FOOD_H_
+
+#include "snake.h"
+#include "display.h"
+#include
+struct FOOD
+{
+ Dot d;
+ unsigned char isEnable;
+} ;
+typedef struct FOOD Food;
+
+
+void food_add();
+void food_draw();
+void logicJudge();
+#endif
\ No newline at end of file
diff --git a/MCU/Final_Design/main.c b/MCU/Final_Design/main.c
index bb67f82..99857ae 100644
--- a/MCU/Final_Design/main.c
+++ b/MCU/Final_Design/main.c
@@ -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();
-
+
}
}
\ No newline at end of file
diff --git a/MCU/Final_Design/snake.c b/MCU/Final_Design/snake.c
index 345253a..3cf37f5 100644
--- a/MCU/Final_Design/snake.c
+++ b/MCU/Final_Design/snake.c
@@ -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();
}
\ No newline at end of file
diff --git a/MCU/Final_Design/snake.h b/MCU/Final_Design/snake.h
index 9d12a41..d34bbbe 100644
--- a/MCU/Final_Design/snake.h
+++ b/MCU/Final_Design/snake.h
@@ -3,8 +3,11 @@
#include
#include
-#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
\ No newline at end of file