Hello!
Im using PK51 v9.05 for simulation poresess of external signal input. Wrote script where time depended signal function change PORT3 pin state:
... swatch (0.0250); PORT3 ^= (1<<2); swatch (0.0015);} PORT3 |= (1<<2); ...
In analyzer window - I can see that correct signal, as PORT3 value, but in program, when virtual PORT3, for ex. shows 0xFB value, the real P3 always gives 0xFF .. Why, what did I wrong ?
PS: Strange, but some raroe time P3=PORT3 finally, not all time.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PPS: Beside, I marked, when Logic Analyzer is active and collect plenty of trace data, pressing of "Reset CPU" button totally crash Keil (v4.22) IDE. Annoying bug really
Hi Alex,
please note that the virtual register PORTx and the SFR Px is not the same. The virtual register specifies the logic level at the pin and the SFR Px is the register that is read and written by the CPU. Since 8051 devices usually do not have a port direction register, the SFR Px defines the direction and the output value. Px.y = 0 -> active low output Px.y = 1 -> input or weak active high output Please see the users manual of your device for more details.
If you write Px in your application, you write a new value into the Px register. If you read Px in your application, you read back the input values of the port, which is PORTx in the simulator. The Px value which you see in the peripherals dialogs is the value you have written into this register. Again, please see the users manual of your device for more details.
So it is not unusual to see a P3 value of 0xff in the Port3 dialog when PORT3 is 0xFB. This means that all pins are inputs (P3 = 0xff) and the input value is 0xFB). If you read P3 in your application, you must see the value 0xFB.
I cannot duplicate the uVision crash. I tried with our Measure example (C:\Keil\C51\Examples\Measure). Could you please send an example project which shows this issue to support.intl@keil.com? Then we will ananlyze and fix it.
Regards,
Hans
Since 8051 devices usually do not have a port direction register, Some do. See the Infineon XC800 family and I think there are others as well...
there is NO "direction definition" in the classic '51 port I agree, not explicitely but a 0 in the SFR bit means an active low output which is a kind of direction.
/Hans
Since 8051 devices usually do not have a port direction register name one that does.
mandatory reading for all '51 beginners: www.8052.com/.../121619
Erik
Since 8051 devices usually do not have a port direction register, they do not the SFR Px defines the direction NO, confound it, it does not, there is NO "direction definition" in the classic '51 port.
kind of direction. if 'kind of' is your means of design I guess your code is kind of working.
there, probably, is no '51 feature that has caused more confoosion than the exptression "port direction" since it is used by many - naah I will not use that word - to erroneously describe "output 1" as input which it can be, but not necessarily is. THERE IS NO DIRECTION IN A QUASI-BIDIRECTIONAL PORT
Ok folks, am not a begginer and I good knowledge of architecture the c51/52.
If support would be interesting I could send them demo project, that illustrate both of that bugs. But smth tells me, that they have been reported or just know about that problem.
Regars.
Alex; Have you sent you code to Hans? Did you notice that Hans IS with Keil Support? You are lucky. Keil support does not often monitor this forum. It's primarily end users like your self that answers questions here.
Bradford