80c52 ohne clock output an P1.0?

Kann es sein, daß nicht alle 80x52/80x32 den Timer2 Takt an P1.0 ausgeben können? Ich habe hier aus diversen Geräten einige Controller, die zwar Timer2 haben, aber nicht an P1.0 ausgeben können. BTW: Wie teste ich (in einem Monitorprogramm) am einfachsten, ob das Programm auf einem normalen 80x5x oder einer CMOS Version läuft? Reicht es zu testen, ob GF1 und GF2 in PCON änderbar sind?

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer
Loading thread data ...

Varianten des 8051 gibbet wie Sand am Meer.

IIRC gab es Timer 2 erst ab 8052.

Scheint zu reichen um HMOS von CMOS zu unterscheiden, so lese ich jedenfalls meine uralten Datenbücher.

Versuch macht kluch!

Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang

--
Wolfgang Allinger, anerkannter Trollallergiker :) reply Adresse gesetzt! 
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf 
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

snipped-for-privacy@mid.>>Kann es sein, daß nicht alle 80x52/80x32 den Timer2 Takt an P1.0

Genau. Der Timer funktioniert auch, nur der Clock-Output geht nur bei bestimmten Fabrikaten.

Mir ist noch eine zuverlässigere Methode eingefallen. Ich nehme Timer0 oder Timer1 und lasse ihn beim Überlauf einen Interrupt erzeugen. Nun setze ich den Timer auf z.B. 0xFF00 (im 16Bit Modus), starte in und setze PCON.0 auf 1. Danach lese ich das MSB des Timers aus. War es eine CMOS-Variante, so war er im idle-mode und kann den Timer erst nach dem Interrupt auslesen -> MSB==0. War es eine normale CPU, wird PCON.0 ignoriert und MSB=0xff.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

[...]

Da gibbet auch noch an vielen anderen Stellen Besonderheiten. Nicht mal die Taktzyklen sind bei den modernen Ablegern identisch.

Hört sich gut an.

Berichte :)

Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang

--
Wolfgang Allinger, anerkannter Trollallergiker :) reply Adresse gesetzt! 
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf 
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

Gern geschehen!

Programmfragment (Monitorprogramm ist Paulmon 2.1)

mov TMOD,0x21 mov TH0,#0xff setb ET0 setb EA setb TR0 orl PCON,#1 mov a,TH0 lcall pHex lcall newline ..

Auf einem 80c52 wird wie zu erwarten "00" ausgegeben, da der Controller "einschläft" und erst durch den Interrupt beim Übergang von 0xffff->0 wieder erwacht. Wenn die Anweisung "orl PCON,#1" auskommentiert ist, wird "FF" ausgegeben. Die Timer0 ISR besteht nur aus einem "RETI". Ich werde mal eine vollständige Detektionsroutine entwerfen und posten. Vielleicht ist es ja für jemanden nützlich.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Jau, endlich mal wieder ein nützlicher Beitrag nach dem ganzen Troll Geraffel :)

TH0 mit 80h initialisieren sollte weniger Zeit verplempern.

und falls Du statt 00 und 80h als Resultat 00 FFh brauchst:

MOV A,TH0 ; 00h 80h 00h = IDL Mode worked (CHMOS or CMOS) RLC A ; 0 1 => cy SUBB A,A ; 00h FFh

Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang

--
Wolfgang Allinger, anerkannter Trollallergiker :) reply Adresse gesetzt! 
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf 
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

Hier ist, wie angekündigt, eine einfache Detektionsroutine. Sie vermag NMOS von CMOS zu unterscheiden (via GPF0 und GPF1 in PCON) und zwischen 128 Byte und (mindestens) 256 Bytes internem Speicher. Ob es einen Timer2 gibt, erkennt die Routine auch. Bei allen von mir ausprobierten Controllern funktionierte die Unterscheidung NMOS/CMOS zu 100%. Aus dem vorhandenen Speicher lässt sich nicht eindeutig erkennen, ob es ein 80x52 ist, da es auch 80x51er gibt mit

256 Byte. Da diese aber in der Regel auch Timer2 besitzen, kann man solche Varianten auch als 80x52er sehen.

; Einfache Erkennung verschiedener 80x5x Varianten ; In R2 wird 'N' für NMOS und 'C' für CMOS zurückgeliefert ; In R3 steht '1' für 128 Byte und '2' für 256 Byte internem Speicher ; Im Akku wird 0 zurückgegeben, wenn TH2 schreibbar ist, also Timer2 ; vorhanden ist.

cpudetect: mov a,PCON xrl a,#0xc ; Position für GPF0 und GPF1 invertieren xrl PCON,#0xc0 ; Das selbe in PCON mov r2,#'N' cjne a,PCON,noc mov r2,#'C' noc: mov r0,#0x80 mov a,@r0 cpl a mov @r0,a xrl a,@r0 mov r3,#'1' jnz no256 inc r3 no256: clr TR2 ; sicherheitshalber Timer2 anhalten mov a,TH2 cpl a mov TH2,a xrl a,TH2 ret

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

THX

Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang

--
Wolfgang Allinger, anerkannter Trollallergiker :) reply Adresse gesetzt! 
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf 
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.