MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;RPS-1.asm 00002 ;Project: "Rock, Paper, Scissors" Game 00003 ;List P = 16F84 00004 ;#include 00005 ;__CONFIG 1Bh    ;_CP_OFF & _PWRTE_ON & _WDT_OFF & _RC_OSC 00006 00007 0000 00008 ORG 0 ;Start of memory for the program. 0000 1683 00009 SETUP BSF 03,5 ;Go to Bank 1 0001 3003 00010 MOVLW 03 ;Load W with 0000 0011 0002 0085 00011 MOVWF 05 ;Make RA0, RA1 input 0003 0186 00012 CLRF 06 ;Make all port B output 0004 1283 00013 BCF 03,5 ;Go to Bank 0 - the program memory area. 0005 019C 00014 CLRF 1C ;Clear the jump counter 0006 019D 00015 CLRF 1D ;Clear the jump counter 0007 019F 00016 CLRF 1F ;Clear the button-press file 0008 28A8 00017 GOTO MAIN 00018 0009 0782 00019 TABLE ADDWF 02H,1 ;Add W to Program Counter to create a jump. 000A 3404 00020 RETLW 04H ;4    000B 3401 00021 RETLW 01H ;1     000C 3402 00022 RETLW 02H ;2 000D 3402 00023 RETLW 02H ;2 000E 3404 00024 RETLW 04H ;4 000F 3404 00025 RETLW 04H ;1 0010 3402 00026 RETLW 02H ;2 0011 3401 00027 RETLW 01H ;1 0012 3402 00028 RETLW 02H ;2 0013 3401 00029 RETLW 01H ;1 0014 3404 00030 RETLW 04H ;4 0015 3402 00031 RETLW 02H ;2 0016 3404 00032 RETLW 04H ;4 0017 3402 00033 RETLW 02H ;2 0018 3401 00034 RETLW 01H ;1 0019 3404 00035 RETLW 04H ;4 001A 3404 00036 RETLW 04H ;4 001B 3401 00037 RETLW 01H ;1 001C 3401 00038 RETLW 01H ;1 001D 3404 00039 RETLW 04H ;4 001E 3402 00040 RETLW 02H ;2 001F 3401 00041 RETLW 01H ;1 0020 3402 00042 RETLW 02H ;2 0021 3401 00043 RETLW 01H ;1 0022 3404 00044 RETLW 04H ;4 0023 3402 00045 RETLW 02H ;2 0024 3404 00046 RETLW 04H ;4 0025 3402 00047 RETLW 02H ;2 0026 3402 00048 RETLW 02H ;2 0027 3401 00049 RETLW 01H ;1 0028 3404 00050 RETLW 04H ;4 0029 3402 00051 RETLW 02H ;2 002A 3404 00052 RETLW 04H ;4 002B 3402 00053 RETLW 02H ;2 MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002C 3401 00054 RETLW 01H ;1 002D 3404 00055 RETLW 04H ;4 002E 3404 00056 RETLW 04H ;4 002F 3401 00057 RETLW 01H ;1 0030 3401 00058 RETLW 01H ;1 0031 3404 00059 RETLW 04H ;4 0032 3402 00060 RETLW 02H ;2 0033 3401 00061 RETLW 01H ;1 0034 34FF 00062 RETLW 0FFH ;End of table 0035 34FF 00063 RETLW 0FFH ;End of table 00064 00065 00066 ;"Attract" Attract removes the LEDs from the middle of the display and 00067 ;continues until all LEDs are removed, then reverses 00068 0036 0186 00069 ATTRACT CLRF 06 0037 0386 00070 DECF 06,1 ;Illuminate all LEDs 0038 205E 00071 CALL DEL100 0039 30E7 00072 MOVLW 0E7H 003A 0086 00073 MOVWF 06 003B 205E 00074 CALL DEL100 003C 30C3 00075 MOVLW 0C3H 003D 0086 00076 MOVWF 06 003E 205E 00077 CALL DEL100 003F 3081 00078 MOVLW 81H 0040 0086 00079 MOVWF 06 0041 205E 00080 CALL DEL100 0042 0186 00081 CLRF 06 0043 205E 00082 CALL DEL100 0044 3081 00083 MOVLW 81 0045 0086 00084 MOVWF 06 0046 205E 00085 CALL DEL100 0047 30C3 00086 MOVLW 0C3H 0048 0086 00087 MOVWF 06 0049 205E 00088 CALL DEL100 004A 30E7 00089 MOVLW 0E7H 004B 0086 00090 MOVWF 06 004C 205E 00091 CALL DEL100 004D 0186 00092 CLRF 06 004E 0386 00093 DECF 06,1 ;Illuminate all LEDs 004F 205E 00094 CALL DEL100 0050 0186 00095 CLRF 06 0051 0008 00096 RETURN 00097 00098 0052 300A 00099 DELAY1 MOVLW 0A 0053 0090 00100 MOVWF 10H 0054 205E 00101 DELA CALL DEL100 0055 0B90 00102 DECFSZ 10H,1 0056 2854 00103 GOTO DELA 0057 0008 00104 RETURN 00105 00106 MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0058 3003 00107 DEL300 MOVLW 03 0059 0090 00108 MOVWF 10H 005A 205E 00109 DELB CALL DEL100 005B 0B90 00110 DECFSZ 10H,1 005C 285A 00111 GOTO DELB 005D 0008 00112 RETURN 00113 00114 005E 3064 00115 DEL100 MOVLW 64H ;100 loops = 100mS 005F 009B 00116 MOVWF 1B 0060 0000 00117 DEL101 NOP 0061 0B9A 00118 DECFSZ 1A,1 0062 2860 00119 GOTO DEL101 0063 1805 00120 BTFSC 05,0 0064 141F 00121 BSF 1F,0 0065 0B9B 00122 DECFSZ 1B,1 0066 2860 00123 GOTO DEL101 0067 0008 00124 RETURN 00125 00126 0068 080E 00127 DISPLAY MOVF 0EH,0 0069 0086 00128 MOVWF 06 006A 205E 00129 CALL DEL100 006B 0186 00130 CLRF 06 006C 205E 00131 CALL DEL100 006D 080E 00132 MOVF 0EH,0 006E 0086 00133 MOVWF 06 006F 2058 00134 CALL DEL300 0070 0186 00135 CLRF 06 0071 2058 00136 CALL DEL300 0072 080E 00137 MOVF 0EH,0 0073 0086 00138 MOVWF 06 0074 2052 00139 CALL DELAY1 0075 2052 00140 CALL DELAY1 0076 2052 00141 CALL DELAY1 0077 2052 00142 CALL DELAY1 0078 0186 00143 CLRF 06 0079 2052 00144 CALL DELAY1 007A 0A9C 00145 INCF 1C,1 007B 0A9D 00146 INCF 1D,1 007C 0A9D 00147 INCF 1D,1 007D 0008 00148 RETURN 00149 00150 00151 ;"Flash" Flashes all 8 LEDs on the display 4 times. 00152 ;then RETURNs to Main 00153 007E 3004 00154 FLASH MOVLW 04 007F 009E 00155 MOVWF 1E 0080 0186 00156 FLASH1 CLRF 06 ;Zero file 6 0081 205E 00157 CALL DEL100 0082 205E 00158 CALL DEL100 0083 0386 00159 DECF 06,1 ;Make file 06 = FF Turn on all LEDs MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0084 205E 00160 CALL DEL100 0085 205E 00161 CALL DEL100 0086 0B9E 00162 DECFSZ 1E,1 0087 2880 00163 GOTO FLASH1 0088 0186 00164 CLRF 06 0089 0008 00165 RETURN 00166 00167 00168 ;"Run" produces a Running LEDs effect across the display. 00169 ;The Running bit is stored in file 0D. It moves across and back 4 times 00170 ;then RETURNs to Main 00171 008A 3004 00172 RUN MOVLW 04 008B 009E 00173 MOVWF 1E 008C 0186 00174 RUNA CLRF 06 008D 0A86 00175 INCF 06,1 ;Create "bit" 008E 0D86 00176 RUN1 RLF 06,1 008F 1803 00177 BTFSC 03,0 ;Test the carry bit 0090 2893 00178 GOTO RUN2 0091 205E 00179 CALL DEL100 ;100mS delay 0092 288E 00180 GOTO RUN1 0093 0C86 00181 RUN2 RRF 06,1 ;Move the bit back onto the display 0094 205E 00182 RUN3 CALL DEL100 ;100mS delay 0095 0C86 00183 RRF 06,1 0096 1C03 00184 BTFSS 03,0 ;Test the carry bit 0097 2894 00185 GOTO RUN3 0098 0B9E 00186 DECFSZ 1E,1 0099 288C 00187 GOTO RUNA 009A 0186 00188 CLRF 06 009B 0008 00189 RETURN 00190 00191 00192 ;"Toggle" Flashes the top 4 LEDs then the bottom 4 LEDs. 00193 ;This is repeated 4 times 00194 009C 3004 00195 TOGGLE MOVLW 04 009D 009E 00196 MOVWF 1E 009E 30F0 00197 TOGGLE1 MOVLW 0F0H 009F 0086 00198 MOVWF 06 ;Turn on 4 top LEDs 00A0 2058 00199 CALL DEL300 00A1 300F 00200 MOVLW 0FH 00A2 0086 00201 MOVWF 06 ;Turn on 4 bottom LEDs 00A3 2058 00202 CALL DEL300 00A4 0B9E 00203 DECFSZ 1E,1 00A5 289E 00204 GOTO TOGGLE1 00A6 0186 00205 CLRF 06 00A7 0008 00206 RETURN 00207 00208 00209 ;File 1C = jump value for attract sub-routine before displaying RPS 00210 ;File 1D = jump value for RPS value 00211 00A8 2036 00212 MAIN CALL ATTRACT MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00A9 1C1F 00213 BTFSS 1F,0 00AA 28A8 00214 GOTO MAIN 00AB 081C 00215 MAINA MOVF 1C,0 ;Copy 1C to W 00AC 2009 00216 CALL TABLE 00AD 0091 00217 MOVWF 11H ;File 11h holds 1, 2, 4 or FF 00AE 1F91 00218 BTFSS 11H,7 ;Test for End of Table 00AF 28B2 00219 GOTO MAINB 00B0 019C 00220 CLRF 1CH 00B1 28AB 00221 GOTO MAINA 00B2 1C11 00222 MAINB BTFSS 11H,0 00B3 28B6 00223 GOTO MAIN2 00B4 207E 00224 CALL FLASH 00B5 28BB 00225 GOTO MAIN4 00B6 1C91 00226 MAIN2 BTFSS 11H,1 00B7 28BA 00227 GOTO MAIN3 00B8 208A 00228 CALL RUN 00B9 28BB 00229 GOTO MAIN4 00BA 209C 00230 MAIN3 CALL TOGGLE 00BB 2052 00231 MAIN4 CALL DELAY1 ;Call 1 second delay 00BC 081D 00232 MOVF 1D,0 ;Copy 1D to W 00BD 2009 00233 CALL TABLE 00BE 0092 00234 MAINC MOVWF 12H ;File 12h holds 1, 2 or 4 00BF 1F92 00235 BTFSS 12H,7 ;Test for End of Table 00C0 28C3 00236 GOTO MAIND 00C1 019D 00237 CLRF 1D 00C2 28BB 00238 GOTO MAIN4 00C3 1C12 00239 MAIND BTFSS 12H,0 00C4 28C9 00240 GOTO MAIN5 00C5 3033 00241 MOVLW 33H ;Produce "R" 00C6 008E 00242 MOVWF 0E ;Put display value into file 0E 00C7 2068 00243 CALL DISPLAY 00C8 28AB 00244 GOTO MAINA 00C9 1C92 00245 MAIN5 BTFSS 12H,1 00CA 28CF 00246 GOTO MAIN6 00CB 3073 00247 MOVLW 73H ;Produce "P" 00CC 008E 00248 MOVWF 0E ;Put display value into file 0E 00CD 2068 00249 CALL DISPLAY 00CE 28AB 00250 GOTO MAINA 00CF 306D 00251 MAIN6 MOVLW 6DH ;Produce "S" 00D0 008E 00252 MOVWF 0E ;Put display value into file 0E 00D1 2068 00253 CALL DISPLAY 00D2 28AB 00254 GOTO MAINA 00255 00256 END ;Tells assembler end of program MPASM 02.70 Released RPS-1.ASM 4-28-2002 21:06:14 PAGE 6 SYMBOL TABLE LABEL VALUE ATTRACT 00000036 DEL100 0000005E DEL101 00000060 DEL300 00000058 DELA 00000054 DELAY1 00000052 DELB 0000005A DISPLAY 00000068 FLASH 0000007E FLASH1 00000080 MAIN 000000A8 MAIN2 000000B6 MAIN3 000000BA MAIN4 000000BB MAIN5 000000C9 MAIN6 000000CF MAINA 000000AB MAINB 000000B2 MAINC 000000BE MAIND 000000C3 RUN 0000008A RUN1 0000008E RUN2 00000093 RUN3 00000094 RUNA 0000008C SETUP 00000000 TABLE 00000009 TOGGLE 0000009C TOGGLE1 0000009E __16F84 00000001 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXX------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 211 Program Memory Words Free: 813 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 0 suppressed