Maker Pro
Maker Pro

LED moving message display - interfacing problems! RS232

F

Franc Zabkar

I'm going to hookup a null modem cable between 2 PC's and use something like
HYPER TERMINAL to see exactly what the software is outputting over the
serial port so that I can look for that in the EPROM code.

Try Portmon from Sysinternals:
http://www.microsoft.com/technet/sysinternals/utilities/portmon.mspx

"Portmon is a utility that monitors and displays all serial and
parallel port activity on a system."

"Portmon works on NT 4.0, Win2K, XP and Server 2003, Windows 95 and
Windows 98."

- Franc Zabkar
 
P

petrus bitbyter

princo coasters said:
G'day!

Well, got the contents of one of the EPROMs dumped....and have run it
through a disassembler called "MCS51" - selecting the 8031 as the
processor.

All dumps are the same except for the serial number of the sign which is
coded in line #103h and #104h

I have left out the code from #09BA - #1FFF as it is all blank/unused.

Is anyone able to suggest where I might find the serial port communication
protocol? I have programmed the 6809 a long time ago, and a bit of 8051 -
but VERY rusty.

Thanks in advance for any help!

#cpu = 8031
0000 02 08 00 ljmp 0800h
0003 00 nop
0004 00 nop
0021 00 nop
0022 00 nop
0023 C0 D0 push PSW
0025 43 D0 18 orl PSW, #18h ; 24d
0028 AC 82 mov r4, DPL
002A AE 83 mov r6, DPH
002C FF mov r7, a
002D 10 98 0B jbc RI, 003Bh
0030 85 2F A0 mov P2, 2Fh
0033 EF mov a, r7
0034 8E 83 mov DPH, r6
0036 8C 82 mov DPL, r4
0038 D0 D0 pop PSW
003A 32 reti
003B E5 99 mov a, SBUF
003D FD mov r5, a
003E 64 1B xrl a, #1Bh ; 27d
0040 60 60 jz 00A2h
0042 EA mov a, r2
0043 20 E7 EA jb ACC.7, 0030h
0046 60 0B jz 0053h
0048 14 dec a
0049 60 10 jz 005Bh
004B 14 dec a
004C 60 2D jz 007Bh
004E 14 dec a
004F 60 76 jz 00C7h
0051 80 4D sjmp 00A0h
0053 74 40 mov a, #40h ; 64d = '@'
0055 6D xrl a, r5
0056 70 48 jnz 00A0h
0058 0A inc r2
0059 80 48 sjmp 00A3h
005B 0A inc r2
005C 7B FF mov r3, #FFh ; 255d = 'ÿ'
005E 74 46 mov a, #46h ; 70d = 'F'
0060 6D xrl a, r5
0061 60 40 jz 00A3h
0063 78 00 mov r0, #00h ; 0d
0065 74 41 mov a, #41h ; 65d = 'A'
0067 0B inc r3
0068 6D xrl a, r5
0069 60 38 jz 00A3h
006B 74 44 mov a, #44h ; 68d = 'D'
006D 0B inc r3
006E 78 80 mov r0, #80h ; 128d = '€'
0070 6D xrl a, r5
0071 60 30 jz 00A3h
0073 74 54 mov a, #54h ; 84d = 'T'
0075 6D xrl a, r5
0076 70 28 jnz 00A0h
0078 02 09 4C ljmp 094Ch
007B EB mov a, r3
007C 60 27 jz 00A5h
007E E5 2D mov a, 2Dh
0080 6D xrl a, r5
0081 70 1D jnz 00A0h
0083 EB mov a, r3
0084 14 dec a
0085 60 14 jz 009Bh
0087 04 inc a
0088 04 inc a
0089 70 15 jnz 00A0h
008B D2 01 setb 20h.1
008D 75 A0 00 mov P2, #00h ; 0d
0090 E8 mov a, r0
0091 64 9A xrl a, #9Ah ; 154d = 'Å¡'
0093 60 0B jz 00A0h
0095 74 20 mov a, #20h ; 32d
0097 F2 movx @r0, a
0098 08 inc r0
0099 80 F5 sjmp 0090h
009B 0A inc r2
009C C2 01 clr 20h.1
009E 80 03 sjmp 00A3h
00A0 74 80 mov a, #80h ; 128d = '€'
00A2 FA mov r2, a
00A3 80 8B sjmp 0030h
00A5 E8 mov a, r0
00A6 64 06 xrl a, #06h ; 6d
00A8 70 12 jnz 00BCh
00AA 8D 2D mov 2Dh, r5
00AC 90 00 80 mov dptr, #0080h
00AF 74 20 mov a, #20h ; 32d
00B1 78 1B mov r0, #1Bh ; 27d
00B3 F0 movx @dptr, a
00B4 05 82 inc DPL
00B6 D8 FB djnz r0, 00B3h
00B8 D2 01 setb 20h.1
00BA 80 E4 sjmp 00A0h
00BC 90 01 00 mov dptr, #0100h
00BF E8 mov a, r0
00C0 93 movc a, @a+dptr
00C1 6D xrl a, r5
00C2 70 DC jnz 00A0h
00C4 08 inc r0
00C5 80 DC sjmp 00A3h
00C7 E8 mov a, r0
00C8 64 9A xrl a, #9Ah ; 154d = 'Å¡'
00CA 60 D4 jz 00A0h
00CC 75 A0 00 mov P2, #00h ; 0d
00CF ED mov a, r5
00D0 F2 movx @r0, a
00D1 08 inc r0
00D2 80 CF sjmp 00A3h
00D4 00 nop
00D5 00 nop
00FC 00 nop
00FD 00 nop
00FE 00 nop
00FF 00 nop
0100 30 30 30 jnb 26h.0, 0133h
0103 36 addc a, @r0
0104 31 38 acall 138h
0106 20 20 20 jb 24h.0, 0129h
0109 20 20 20 jb 24h.0, 012Ch
010C 20 20 20 jb 24h.0, 012Fh
010F 20 20 20 jb 24h.0, 0132h
0112 20 20 20 jb 24h.0, 0135h
0115 20 20 20 jb 24h.0, 0138h
0118 20 20 20 jb 24h.0, 013Bh
011B 20 20 20 jb 24h.0, 013Eh
011E 20 20 00 jb 24h.0, 0121h
0121 04 inc a
0122 05 00 inc 00h
0124 04 inc a
0125 03 rr a
0126 02 06 08 ljmp 0608h
0129 02 00 00 ljmp 0000h
012C 00 nop
012D 00 nop
012E 00 nop
012F 00 nop
0130 0E inc r6
0131 04 inc a
0132 0E inc r6
0133 1F dec r7
0134 08 inc r0
0135 1F dec r7
0136 0C inc r4
0137 1F dec r7
0138 0E inc r6
0139 0E inc r6
013A 00 nop
013B 00 nop
013C 08 inc r0
013D 00 nop
013E 02 0E 0E ljmp 0E0Eh
0141 04 inc a
0142 0F inc r7
0143 0E inc r6
0144 0F inc r7
0145 1F dec r7
0146 1F dec r7
0147 0E inc r6
0148 11 0E acall Eh
014A 0E inc r6
014B 11 01 acall 1h
014D 11 11 acall 11h
014F 0E inc r6
0150 0F inc r7
0151 0E inc r6
0152 0F inc r7
0153 0E inc r6
0154 1F dec r7
0155 11 11 acall 11h
0157 11 11 acall 11h
0159 11 1F acall 1Fh
015B 0E inc r6
015C 00 nop
015D 0E inc r6
015E 04 inc a
015F 00 nop
0160 02 00 01 ljmp 0001h
0163 00 nop
0164 10 00 0C jbc 20h.0, 0173h
0167 00 nop
0168 01 04 ajmp 4h
016A 08 inc r0
016B 01 06 ajmp 6h
016D 00 nop
016E 00 nop
016F 00 nop
0170 00 nop
0171 00 nop
0172 00 nop
0173 00 nop
0174 02 00 00 ljmp 0000h
0177 00 nop
0178 00 nop
0179 00 nop
017A 00 nop
017B 10 04 01 jbc 20h.4, 017Fh
017E 1F dec r7
017F 00 nop
0180 00 nop
0220 00 nop
0221 04 inc a
0222 05 0A inc 0Ah
0224 1E dec r6
0225 13 rrc a
0226 05 04 inc 04h
0228 04 inc a
0229 04 inc a
022A 15 04 dec 04h
022C 00 nop
022D 00 nop
022E 00 nop
022F 10 11 06 jbc 22h.1, 0238h
0232 11 08 acall 8h
0234 0C inc r4
0235 01 02 ajmp 2h
0237 10 11 11 jbc 22h.1, 024Bh
023A 06 inc @r0
023B 06 inc @r0
023C 04 inc a
023D 00 nop
023E 04 inc a
023F 11 11 acall 11h
0241 0A inc r2
0242 12 11 12 lcall 1112h
0245 01 01 ajmp 1h
0247 11 11 acall 11h
0249 04 inc a
024A 04 inc a
024B 09 inc r1
024C 01 1B ajmp 1Bh
024E 11 11 acall 11h
0250 11 11 acall 11h
0252 11 11 acall 11h
0254 04 inc a
0255 11 11 acall 11h
0257 11 11 acall 11h
0259 11 10 acall 10h
025B 02 07 08 ljmp 0708h
025E 0E inc r6
025F 0E inc r6
0260 04 inc a
0261 00 nop
0262 01 00 ajmp 0h
0264 10 00 12 jbc 20h.0, 0279h
0267 1E dec r6
0268 01 00 ajmp 0h
026A 00 nop
026B 01 04 ajmp 4h
026D 00 nop
026E 00 nop
026F 00 nop
0270 00 nop
0271 00 nop
0272 00 nop
0273 00 nop
0274 02 00 00 ljmp 0000h
0277 00 nop
0278 00 nop
0279 00 nop
027A 00 nop
027B 08 inc r0
027C 04 inc a
027D 02 1F 10 ljmp 1F10h
0280 00 nop
0281 00 nop
0282 00 nop
0283 00 nop
031E 00 nop
031F 00 nop
0320 00 nop
0321 04 inc a
0322 05 1F inc 1Fh
0324 05 08 inc 08h
0326 05 02 inc 02h
0328 02 08 0E ljmp 080Eh
032B 04 inc a
032C 00 nop
032D 00 nop
032E 00 nop
032F 08 inc r0
0330 19 dec r1
0331 04 inc a
0332 10 04 0A jbc 20h.4, 033Fh
0335 0F inc r7
0336 01 08 ajmp 8h
0338 11 11 acall 11h
033A 06 inc @r0
033B 06 inc @r0
033C 02 1F 08 ljmp 1F08h
033F 08 inc r0
0340 15 11 dec 11h
0342 12 01 12 lcall 0112h
0345 01 01 ajmp 1h
0347 01 11 ajmp 11h
0349 04 inc a
034A 04 inc a
034B 05 01 inc 01h
034D 15 13 dec 13h
034F 11 11 acall 11h
0351 11 11 acall 11h
0353 01 04 ajmp 4h
0355 11 11 acall 11h
0357 11 0A acall Ah
0359 0A inc r2
035A 08 inc r0
035B 02 03 08 ljmp 0308h
035E 15 11 dec 11h
0360 08 inc r0
0361 0E inc r6
0362 0D inc r5
0363 0E inc r6
0364 16 dec @r0
0365 0E inc r6
0366 02 11 0D ljmp 110Dh
0369 06 inc @r0
036A 0C inc r4
036B 09 inc r1
036C 04 inc a
036D 0B inc r3
036E 0D inc r5
036F 0E inc r6
0370 0F inc r7
0371 16 dec @r0
0372 0D inc r5
0373 0E inc r6
0374 07 inc @r1
0375 11 11 acall 11h
0377 11 11 acall 11h
0379 11 1F acall 1Fh
037B 08 inc r0
037C 04 inc a
037D 02 1F 09 ljmp 1F09h
0380 00 nop
0381 00 nop
041F 00 nop
0420 00 nop
0421 04 inc a
0422 00 nop
0423 0A inc r2
0424 0E inc r6
0425 04 inc a
0426 02 00 02 ljmp 0002h
0429 08 inc r0
042A 04 inc a
042B 1F dec r7
042C 00 nop
042D 1F dec r7
042E 00 nop
042F 04 inc a
0430 15 04 dec 04h
0432 08 inc r0
0433 08 inc r0
0434 09 inc r1
0435 10 0F 04 jbc 21h.7, 043Ch
0438 0E inc r6
0439 1E dec r6
043A 00 nop
043B 00 nop
043C 01 00 ajmp 0h
043E 10 04 15 jbc 20h.4, 0456h
0441 11 0E acall Eh
0443 01 12 ajmp 12h
0445 0F inc r7
0446 0F inc r7
0447 01 1F ajmp 1Fh
0449 04 inc a
044A 04 inc a
044B 03 rr a
044C 01 11 ajmp 11h
044E 15 11 dec 11h
0450 0F inc r7
0451 11 0F acall Fh
0453 0E inc r6
0454 04 inc a
0455 11 11 acall 11h
0457 15 04 dec 04h
0459 04 inc a
045A 04 inc a
045B 02 05 08 ljmp 0508h
045E 04 inc a
045F 1F dec r7
0460 00 nop
0461 10 13 01 jbc 22h.3, 0465h
0464 19 dec r1
0465 11 0F acall Fh
0467 11 13 acall 13h
0469 04 inc a
046A 08 inc r0
046B 05 04 inc 04h
046D 15 13 dec 13h
046F 11 11 acall 11h
0471 19 dec r1
0472 13 rrc a
0473 01 02 ajmp 2h
0475 11 11 acall 11h
0477 11 0A acall Ah
0479 11 08 acall 8h
047B 04 inc a
047C 04 inc a
047D 04 inc a
047E 1F dec r7
047F 05 00 inc 00h
0481 00 nop
0482 00 nop
051F 00 nop
0520 00 nop
0521 00 nop
0522 00 nop
0523 1F dec r7
0524 14 dec a
0525 02 15 00 ljmp 1500h
0528 02 08 0E ljmp 080Eh
052B 04 inc a
052C 06 inc @r0
052D 00 nop
052E 00 nop
052F 02 13 04 ljmp 1304h
0532 04 inc a
0533 10 1F 10 jbc 23h.7, 0546h
0536 11 04 acall 4h
0538 11 10 acall 10h
053A 06 inc @r0
053B 06 inc @r0
053C 02 1F 08 ljmp 1F08h
053F 04 inc a
0540 0D inc r5
0541 1F dec r7
0542 12 01 12 lcall 0112h
0545 01 01 ajmp 1h
0547 19 dec r1
0548 11 04 acall 4h
054A 04 inc a
054B 05 01 inc 01h
054D 11 19 acall 19h
054F 11 01 acall 1h
0551 15 05 dec 05h
0553 10 04 11 jbc 20h.4, 0567h
0556 11 15 acall 15h
0558 0A inc r2
0559 04 inc a
055A 02 02 08 ljmp 0208h
055D 08 inc r0
055E 04 inc a
055F 11 00 acall 0h
0561 1E dec r6
0562 11 01 acall 1h
0564 11 1F acall 1Fh
0566 02 1E 11 ljmp 1E11h
0569 04 inc a
056A 08 inc r0
056B 03 rr a
056C 04 inc a
056D 15 11 dec 11h
056F 11 0F acall Fh
0571 1E dec r6
0572 01 0E ajmp Eh
0574 02 11 11 ljmp 1111h
0577 15 04 dec 04h
0579 1E dec r6
057A 04 inc a
057B 08 inc r0
057C 15 02 dec 02h
057E 1F dec r7
057F 03 rr a
0580 00 nop
0581 00 nop
061D 00 nop
061E 00 nop
061F 00 nop
0620 00 nop
0621 04 inc a
0622 00 nop
0623 0A inc r2
0624 0F inc r7
0625 19 dec r1
0626 09 inc r1
0627 00 nop
0628 04 inc a
0629 04 inc a
062A 15 04 dec 04h
062C 06 inc @r0
062D 00 nop
062E 06 inc @r0
062F 01 11 ajmp 11h
0631 04 inc a
0632 02 11 08 ljmp 1108h
0635 11 11 acall 11h
0637 04 inc a
0638 11 08 acall 8h
063A 06 inc @r0
063B 06 inc @r0
063C 04 inc a
063D 00 nop
063E 04 inc a
063F 00 nop
0640 01 11 ajmp 11h
0642 12 11 12 lcall 1112h
0645 01 01 ajmp 1h
0647 11 11 acall 11h
0649 04 inc a
064A 05 09 inc 09h
064C 01 11 ajmp 11h
064E 11 11 acall 11h
0650 01 09 ajmp 9h
0652 09 inc r1
0653 11 04 acall 4h
0655 11 0A acall Ah
0657 15 11 dec 11h
0659 04 inc a
065A 01 02 ajmp 2h
065C 10 08 04 jbc 21h.0, 0663h
065F 0E inc r6
0660 00 nop
0661 11 11 acall 11h
0663 11 11 acall 11h
0665 01 02 ajmp 2h
0667 10 11 04 jbc 22h.1, 066Eh
066A 09 inc r1
066B 05 04 inc 04h
066D 15 11 dec 11h
066F 11 01 acall 1h
0671 10 01 10 jbc 20h.1, 0684h
0674 12 19 0A lcall 190Ah
0677 15 0A dec 0Ah
0679 10 02 08 jbc 20h.2, 0684h
067C 0E inc r6
067D 02 1F 0F ljmp 1F0Fh
0680 00 nop
0681 00 nop
071E 00 nop
071F 00 nop
0720 00 nop
0721 04 inc a
0722 00 nop
0723 00 nop
0724 04 inc a
0725 18 dec r0
0726 16 dec @r0
0727 00 nop
0728 08 inc r0
0729 02 00 00 ljmp 0000h
072C 01 00 ajmp 0h
072E 06 inc @r0
072F 00 nop
0730 0E inc r6
0731 0E inc r6
0732 1F dec r7
0733 0E inc r6
0734 08 inc r0
0735 0E inc r6
0736 0E inc r6
0737 04 inc a
0738 0E inc r6
0739 06 inc @r0
073A 00 nop
073B 01 08 ajmp 8h
073D 00 nop
073E 02 04 1E ljmp 041Eh
0741 11 0F acall Fh
0743 0E inc r6
0744 0F inc r7
0745 1F dec r7
0746 01 0E ajmp Eh
0748 11 0E acall Eh
074A 02 11 1F ljmp 111Fh
074D 11 11 acall 11h
074F 0E inc r6
0750 01 16 ajmp 16h
0752 11 0E acall Eh
0754 04 inc a
0755 0E inc r6
0756 04 inc a
0757 0A inc r2
0758 11 04 acall 4h
075A 1F dec r7
075B 0E inc r6
075C 00 nop
075D 0E inc r6
075E 04 inc a
075F 00 nop
0760 00 nop
0761 1E dec r6
0762 0F inc r7
0763 0E inc r6
0764 1E dec r6
0765 0E inc r6
0766 02 0E 11 ljmp 0E11h
0769 0E inc r6
076A 06 inc @r0
076B 09 inc r1
076C 0E inc r6
076D 15 11 dec 11h
076F 0E inc r6
0770 01 10 ajmp 10h
0772 01 0F ajmp Fh
0774 0C inc r4
0775 16 dec @r0
0776 04 inc a
0777 0A inc r2
0778 11 0E acall Eh
077A 1F dec r7
077B 10 04 01 jbc 20h.4, 077Fh
077E 1F dec r7
077F 00 nop
0780 00 nop
0781 00 nop
0782 00 nop
07FD 00 nop
07FE 00 nop
07FF 00 nop
0800 75 19 00 mov 19h, #00h ; 0d
0803 75 1A 80 mov 1Ah, #80h ; 128d = '€'
0806 75 89 22 mov TMOD, #22h ; 34d = '"'
0809 75 8C 00 mov TH0, #00h ; 0d
080C 75 8D F4 mov TH1, #F4h ; 244d = 'ô'
080F 75 88 50 mov TCON, #50h ; 80d = 'P'
0812 75 98 70 mov SCON, #70h ; 112d = 'p'
0815 75 A8 90 mov IE, #90h ; 144d = 'Â'
0818 D2 BC setb PS
081A 75 90 00 mov P1, #00h ; 0d
081D 75 20 50 mov 20h, #50h ; 80d = 'P'
0820 7A 00 mov r2, #00h ; 0d
0822 11 FA acall 8FAh
0824 7A FF mov r2, #FFh ; 255d = 'ÿ'
0826 11 FA acall 8FAh
0828 7A 55 mov r2, #55h ; 85d = 'U'
082A 11 FA acall 8FAh
082C 7A AA mov r2, #AAh ; 170d = 'ª'
082E 11 FA acall 8FAh
0830 90 00 00 mov dptr, #0000h
0833 74 52 mov a, #52h ; 82d = 'R'
0835 F0 movx @dptr, a
0836 05 82 inc DPL
0838 74 54 mov a, #54h ; 84d = 'T'
083A F0 movx @dptr, a
083B 05 82 inc DPL
083D E5 20 mov a, 20h
083F F0 movx @dptr, a
0840 05 82 inc DPL
0842 74 FF mov a, #FFh ; 255d = 'ÿ'
0844 F0 movx @dptr, a
0845 75 20 02 mov 20h, #02h ; 2d
0848 31 0D acall 90Dh
084A 7A 07 mov r2, #07h ; 7d
084C 7B 01 mov r3, #01h ; 1d
084E 30 01 09 jnb 20h.1, 085Ah
0851 11 8C acall 88Ch
0853 0B inc r3
0854 11 6C acall 86Ch
0856 DA F6 djnz r2, 084Eh
0858 7A 07 mov r2, #07h ; 7d
085A 75 90 00 mov P1, #00h ; 0d
085D 11 F5 acall 8F5h
085F 11 6C acall 86Ch
0861 12 08 F5 lcall 08F5h
0864 DA F4 djnz r2, 085Ah
0866 20 01 E1 jb 20h.1, 084Ah
0869 80 ED sjmp 0858h
086B 22 ret
086C 8A 83 mov DPH, r2
086E 78 13 mov r0, #13h ; 19d
0870 75 82 00 mov DPL, #00h ; 0d
0873 74 00 mov a, #00h ; 0d
0875 F5 90 mov P1, a
0877 75 2F 80 mov 2Fh, #80h ; 128d = '€'
087A 43 A0 80 orl P2, #80h ; 128d = '€'
087D E0 movx a, @dptr
087E F2 movx @r0, a
087F 05 82 inc DPL
0881 D8 F4 djnz r0, 0877h
0883 E0 movx a, @dptr
0884 F2 movx @r0, a
0885 E5 83 mov a, DPH
0887 F5 2E mov 2Eh, a
0889 F5 90 mov P1, a
088B 22 ret
088C 8A 2F mov 2Fh, r2
088E 8A A0 mov P2, r2
0890 75 26 80 mov 26h, #80h ; 128d = '€'
0893 75 27 00 mov 27h, #00h ; 0d
0896 78 2A mov r0, #2Ah ; 42d = '*'
0898 79 14 mov r1, #14h ; 20d
089A 11 C1 acall 8C1h
089C C6 xch a, @r0
089D 85 2E 90 mov P1, 2Eh
08A0 11 BA acall 8BAh
08A2 13 rrc a
08A3 92 56 mov 2Ah.6, c
08A5 13 rrc a
08A6 92 57 mov 2Ah.7, c
08A8 54 0F anl a, #0Fh ; 15d
08AA C6 xch a, @r0
08AB 11 BA acall 8BAh
08AD C4 swap a
08AE D6 xchd a, @r0
08AF 75 90 00 mov P1, #00h ; 0d
08B2 11 BA acall 8BAh
08B4 23 rl a
08B5 23 rl a
08B6 46 orl a, @r0
08B7 F6 mov @r0, a
08B8 80 E0 sjmp 089Ah
08BA F3 movx @r1, a
08BB D9 04 djnz r1, 08C1h
08BD E6 mov a, @r0
08BE F3 movx @r1, a
08BF 80 10 sjmp 08D1h
08C1 85 27 83 mov DPH, 27h
08C4 85 26 82 mov DPL, 26h
08C7 E0 movx a, @dptr
08C8 30 E7 0B jnb ACC.7, 08D6h
08CB E6 mov a, @r0
08CC F3 movx @r1, a
08CD E4 clr a
08CE D9 FC djnz r1, 08CCh
08D0 F3 movx @r1, a
08D1 15 81 dec SP
08D3 15 81 dec SP
08D5 22 ret
08D6 F5 82 mov DPL, a
08D8 8B 83 mov DPH, r3
08DA 05 26 inc 26h
08DC E5 26 mov a, 26h
08DE E4 clr a
08DF 93 movc a, @a+dptr
08E0 54 3F anl a, #3Fh ; 63d = '?'
08E2 22 ret
08E3 85 2B 8C mov TH0, 2Bh
08E6 E4 clr a
08E7 7A 07 mov r2, #07h ; 7d
08E9 8A 2F mov 2Fh, r2
08EB 8A A0 mov P2, r2
08ED 79 00 mov r1, #00h ; 0d
08EF F3 movx @r1, a
08F0 D9 FD djnz r1, 08EFh
08F2 DA F5 djnz r2, 08E9h
08F4 22 ret
08F5 7E 00 mov r6, #00h ; 0d
08F7 DE FE djnz r6, 08F7h ; Hier
08F9 22 ret
08FA 90 00 00 mov dptr, #0000h
08FD EA mov a, r2
08FE F0 movx @dptr, a
08FF E0 movx a, @dptr
0900 6A xrl a, r2
0901 60 03 jz 0906h
0903 75 20 46 mov 20h, #46h ; 70d = 'F'
0906 A3 inc dptr
0907 E5 83 mov a, DPH
0909 B4 04 F1 cjne a, #04h, 08FDh ; 4d
090C 22 ret
090D 75 2F 00 mov 2Fh, #00h ; 0d
0910 75 A0 00 mov P2, #00h ; 0d
0913 E4 clr a
0914 F8 mov r0, a
0915 79 10 mov r1, #10h ; 16d
0917 F2 movx @r0, a
0918 14 dec a
0919 54 7F anl a, #7Fh ; 127d = ''
091B 18 dec r0
091C C9 xch a, r1
091D F2 movx @r0, a
091E C9 xch a, r1
091F D8 F6 djnz r0, 0917h
0921 90 0F FF mov dptr, #0FFFh
0924 74 FF mov a, #FFh ; 255d = 'ÿ'
0926 F0 movx @dptr, a
0927 A3 inc dptr
0928 B5 82 FB cjne a, DPL, 0926h
092B 90 00 00 mov dptr, #0000h
092E E4 clr a
092F F0 movx @dptr, a
0930 A3 inc dptr
0931 E5 83 mov a, DPH
0933 30 E3 F8 jnb ACC.3, 092Eh
0936 90 00 80 mov dptr, #0080h
0939 75 A0 00 mov P2, #00h ; 0d
093C 78 80 mov r0, #80h ; 128d = '€'
093E 7A 1A mov r2, #1Ah ; 26d
0940 E8 mov a, r0
0941 93 movc a, @a+dptr
0942 F2 movx @r0, a
0943 08 inc r0
0944 DA FA djnz r2, 0940h
0946 74 FF mov a, #FFh ; 255d = 'ÿ'
0948 F2 movx @r0, a
0949 D2 01 setb 20h.1
094B 22 ret
094C 75 90 00 mov P1, #00h ; 0d
094F 7A 07 mov r2, #07h ; 7d
0951 78 00 mov r0, #00h ; 0d
0953 74 55 mov a, #55h ; 85d = 'U'
0955 12 09 92 lcall 0992h
0958 F4 cpl a
0959 DA FA djnz r2, 0955h
095B 12 09 98 lcall 0998h
095E 75 90 00 mov P1, #00h ; 0d
0961 7A 07 mov r2, #07h ; 7d
0963 74 AA mov a, #AAh ; 170d = 'ª'
0965 12 09 92 lcall 0992h
0968 F4 cpl a
0969 DA FA djnz r2, 0965h
096B 12 09 98 lcall 0998h
096E 75 90 00 mov P1, #00h ; 0d
0971 7A 07 mov r2, #07h ; 7d
0973 74 FF mov a, #FFh ; 255d = 'ÿ'
0975 12 09 92 lcall 0992h
0978 DA FB djnz r2, 0975h
097A 12 09 98 lcall 0998h
097D 7D 20 mov r5, #20h ; 32d
097F 75 90 00 mov P1, #00h ; 0d
0982 7A 00 mov r2, #00h ; 0d
0984 ED mov a, r5
0985 12 09 92 lcall 0992h
0988 12 09 AA lcall 09AAh
098B 0D inc r5
098C ED mov a, r5
098D 30 E7 F5 jnb ACC.7, 0985h
0990 80 BA sjmp 094Ch
0992 8A A0 mov P2, r2
0994 F2 movx @r0, a
0995 D8 FD djnz r0, 0994h
0997 22 ret
0998 7C 00 mov r4, #00h ; 0d
099A 7A 07 mov r2, #07h ; 7d
099C 75 90 00 mov P1, #00h ; 0d
099F 11 F5 acall 8F5h
09A1 11 6C acall 86Ch
09A3 11 F5 acall 8F5h
09A5 DA F5 djnz r2, 099Ch
09A7 DC F1 djnz r4, 099Ah
09A9 22 ret
09AA 7C 80 mov r4, #80h ; 128d = '€'
09AC 7A 07 mov r2, #07h ; 7d
09AE 7B 01 mov r3, #01h ; 1d
09B0 11 8C acall 88Ch
09B2 0B inc r3
09B3 11 6C acall 86Ch
09B5 DA F9 djnz r2, 09B0h
09B7 DC F3 djnz r4, 09ACh
09B9 22 ret
09BA 00
-->
1FFF 00

As I said, you really need the datasheet of the 8051 (8031, 8751).

The first instruction jumps to address 0x800 where a lot of registers are
initialised. Amongst them SCON (Serial Control) which is set to 0x70 so an
8-bit UART is defined. The Baudrate is variable which means it is defined by
a timer and the X-tal frequency.

I checked neither the Baudrate nor interrupt setting but I found the serial
interrupt service routine at address 0x23. It looks like the routine handles
some other interrupt(s) as well but at address 0x2D it checks the receive
interrupt flag (RI) explicitely. If set it jumps to 0x3B and picks the
received byte from SBUF. From that line on you can find out what actions are
taken depending on the contents of SBUF. A 0x1B (ESCAPE) for instance
results in placing a 0 in r2. The routine goes up to 0xD2 but always exits
via 0x3A (the reti instruction). No doubt the actions depend also on the
contents of the registers which in turn may contain values set by earlier
received bytes. I saw at least r0 through r5 used. But you can find out what
characters have some meaning and which ones, if any, are discarded.

petrus bitbyter
 
Hello all!
Ok, I know this is an old Thread but I used some info from this thread to help me, so I figured I'd post my results back here instead of starting another one.

I have a couple of these display units too and wanted to get them going without 're-inventing the wheel' so I thought I'd have a crack at deciphering the comms protocol.
Thanks (in part) to the code listing that princo coasters posted and a freeware simulator, I have been able to get my display working - in fact it's showing "Yippee!" as I type this ;)
(yes I'm celebrating, it's taken 2 years to get this far! - I don't get much time to work on stuff like this.....sigh)

Anyway, onto the info:
From the code posted by princo coasters, my simulator indicates the Baud rate for RS232 comms to be 2400: BUT when I tried this with my display it didn't work - I had compared a small section of the code with that from my EPROM (it was identical), but I didn't check all of the code - so be aware that this rate may not be right for all units. I DID find that 4800 baud worked fine for my display however.
Also, from the serial engine setup in the code, 8 data bits, no parity and 1 stop bit is required to achieve comms. So:
4800,N,8,1 works for me.
---more to come---
 
Protocol continued...

Contrary to an earlier post in this thread, these units DO have ascii coded into the EPROM, 94 of them if I count correctly - basically, most standard symbols, numerals and alpha's (both upper and lower case). These are all shown when the display is placed in self-test mode, along with 2 alternating 'pokerdot' layouts, an 'all on' layout and an 'all off' layout.

These displays ARE very basic though ('89 vintage), so the 'smarts' in the units are not particularly extensive. Basically the displays are meant to display a fixed message only. However, if you were to send multiple messages with appropriate formatting at fast (but regular) times, you could animate the display to get the info to scroll left or right - that's about all though.

---more coming----
 
Last edited:
Protocol continued...

The displays are talked to using the 'escape' ascii code (27 decimal), which I shall write as <esc>

SO, to get self-test mode, the following code needs to be sent:
<esc>@T
make sure the T is uppercase, it'll get rejected otherwise.

To get the unit out of self-test, you have to cycle the power..... why??? Because when the <esc>@T code is received, the software jumps straight out of the interrupt routine! (no restoration of program registers from the stack >:| ) which also means the serial interface engine is disabled (no more RS232!).
----more coming---
 
Protocol continues....

To use the display, it has to be initialised first. This is done by sending the <esc>@ header, then an uppercase A (presumably for Address), then the address (serial number) of the unit - which it shows when you first apply power. In the code listed by Princo Coasters, this is 000618 (you need the leading zeros).
Following this, another character is required. It does not matter what the character is, anything from 00h to FFh can be used - I have been using a space or underscore character myself. This character identifies the display for further communications, so it acts like a short-hand of the serial number (it's convenient when typing the codes manually) - this enables multiple units to be hung off the same RS232 line too.
So to initialise the unit, type or send:
<esc>@A000618_
(with no LF/CR). The display will be wiped (blanked) at this point, ready for data.

---more to come---
 
Last edited:
Protocol continued....

Now you need to send data to the display; the header is:
<esc>@D_
(note the use on the display 'identifier' - an underscore - which I used earlier)
then 26 ascii characters can be sent. Anything over 26 will be discarded, anything under 26 will be padded with spaces by the microcontroller - effectively wiping the rest of the display; remember that if you are attempting any animation of the message.
So to load the message 'Yippee!':
<esc>@D_Yippee!
needs to be sent.

.... more coming ....
 
Last edited:
Now, to get that displayed, you need to send:
<esc>@F_
That should show 'Yippee!' on the display.

So to summarize; for 1st time use send:
<esc>@A000618_<esc>@D_Yippee!<esc>@F_
and afterward, just send:
<esc>@D_ Yippee!<esc>@F_
<esc>@D_ Yippee!<esc>@F_
<esc>@D_ Yippee!<esc>@F_
<esc>@D_ Yippee!<esc>@F_
For easy readability, I have typed these on separate lines, but remember they need to be sent without carriage-return or new-line or line-feed characters. You can see how, by inserting spaces before the text, the message will 'roll' from left to right on the display.

---a little more (unimportant?) info to come---
 
Last edited:
Doh!
Just noticed the leading spaces I typed in the last message were snipped from the post by the software: Here's a repeat, using . instead:
<esc>@D_.Yippee!<esc>@F_
<esc>@D_..Yippee!<esc>@F_
<esc>@D_...Yippee!<esc>@F_
<esc>@D_....Yippee!<esc>@F_
 
Top