Introduction:
While BASIC-52 allows you to access Port 1 bits directly through BASIC, it does not allow direct access of the Port 3 bits available on many of the boards and modules
Background: Port 3 is an 8 bit bi-directional I/O port with internal pullups.
- Port Pin Alternaye Function
- P3.0 RXD (serial input port)
- P3.1 TXD (serial output port)
- P3.2 *INT0 (external interrupt 0)
- P3.3 *INT1 (external interrupt 1)
- P3.4 T0 (timer 0 external input)
- P3.5 T1 (timer 1 external input)
- P3.6 *WR (external Data Memory write strobe)
- P3.7 RD (external Data Memory read strobe)
Program Listing:
Example 1: Waiting for a bit to be set or cleared
BASIC-52 program . . . CALL xxxxh
Assembly routine
xxxxh Label1: JB P3.x, Label1 ;Loop until bit is set RET ;Return to BASIC program
or
xxxxh Label1: JNB P3.x,Label1 ;Loop until bit is cleared RET ;Return to BASIC program
Example 2: Return the state of a bit to BASIC-52
BASIC-52 program . . . CALL xxxxh
Assembly routine
Xxxxh Label1: JB P3.x, B_SET ;Test the bit, jump if set B_CLR: MOV 20h, #0 ;Store 0 if cleared RET
B_SET: MOV 20h, #1 ;Store 1 if set RET
Once you are back in the BASIC program use the following line to read what was stored:
IF DBY(20h)=0 THEN PRINT "P3.x = Low" ELSE PRINT "P3.x = High"
This page is based on Micromint inc's AN101 Dated: 7/28/99
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.