' {$STAMP BS2} ' {$PBASIC 2.5} ' {$PORT COM1} '++++++++++pin definitions+++++++++++ txPin PIN 15 'lcd pin (serial connection) LEDr PIN 0 'red LED: High turns it on LEDg PIN 1 'green LED LEDy PIN 2 'yellow LED '+++++++++constants+++++++++++ BM CON $4054 '9600 baud for lcd display lowc CON "A" 'Lowest symbol in the name of God hic CON "M" 'One past the highest symbol 'A thru L gives alphabet of 12 letters '++++++++++variables++++++++++++ name1 VAR Byte 'here are the nine letters name2 VAR Byte 'of the name of god name3 VAR Byte name4 VAR Byte name5 VAR Byte name6 VAR Byte name7 VAR Byte name8 VAR Byte name9 VAR Byte CountB VAR Word 'billions CountM VAR Word 'millions CountT VAR Word 'thousands CountU VAR Word 'units '+++++++++++++++initialize the world+++++++++++++ HIGH txPin PAUSE 1000 SEROUT txPin, BM, [254, 1] 'clear screen PAUSE 100 SEROUT txPin, BM, [254, 12] 'no cursor, no blink PAUSE 100 LOW LEDr LOW LEDg LOW LEDy name1 = lowc 'first trial name is AAAAAAAAA name2 = lowc name3 = lowc name4 = lowc name5 = lowc name6 = lowc name7 = lowc name8 = lowc name9 = lowc CountB = 0 CountM = 0 CountT = 0 countU = 0 'trial name counter '++++++++++++++++++main code+++++++++++++++++++ top: name9 = name9 + 1 'we increment working from right to left IF (name9 <> hic) THEN GOTO t10 'AAAAAAAAA, AAAAAAAAB, AAAAAAAAC...AAAAAAABA name9 = lowc name8 = name8 + 1 IF (name8 <> hic) THEN GOTO t10 name8 = lowc name7 = name7 + 1 IF (name7 <> hic) THEN GOTO t10 name7 = lowc name6 = name6 + 1 IF (name6 <> hic) THEN GOTO t10 name6 = lowc name5 = name5 + 1 IF (name5 <> hic) THEN GOTO t10 name5 = lowc name4 = name4 + 1 IF (name4 <> hic) THEN GOTO t10 name4 = lowc name3 = name3 + 1 IF (name3 <> hic) THEN GOTO t10 name3 = lowc name2 = name2 + 1 IF (name2 <> hic) THEN GOTO t10 name2 = lowc name1 = name1 + 1 IF (name1 <> hic) THEN GOTO t10 done: HIGH LEDg PAUSE 500 LOW LEDg PAUSE 200 GOTO done t10: CountU = CountU + 1 'increment the trial counter IF (CountU <> 1000) THEN GOTO t11 CountU = 0 CountT = CountT + 1 IF (countT <> 1000) THEN GOTO t11 CountT = 0 CountM = CountM + 1 IF (countM <> 1000) THEN GOTO t11 CountM = 0 CountB = CountB + 1 'can count to 999,999,999,999 t11: 'display the trial name counter on row 2 of the LCD SEROUT txPin, BM, [254, 192, DEC3 CountB, ",", DEC3 Countm, ",", DEC3 CountT, ",", DEC3 CountU] HIGH LEDy 'now look for triples 'if we find one, just dont display the name IF ((name7 = name8) AND (name7 = name9)) THEN HIGH LEDr: GOTO top IF ((name6 = name7) AND (name6 = name8)) THEN HIGH LEDr: GOTO top IF ((name5 = name6) AND (name5 = name7)) THEN HIGH LEDr: GOTO top IF ((name4 = name5) AND (name4 = name6)) THEN HIGH LEDr: GOTO top IF ((name3 = name4) AND (name3 = name5)) THEN HIGH LEDr: GOTO top IF ((name2 = name3) AND (name2 = name4)) THEN HIGH LEDr: GOTO top IF ((name1 = name2) AND (name1 = name3)) THEN HIGH LEDr: GOTO top LOW LEDy LOW LEDr 'valid name, display it SEROUT txPin, BM, [254, 128, name1, name2, name3, name4, name5, name6, name7, name8, name9] PAUSE 20 GOTO top