4-10
To
set
a single bit in a port, OR the current value of the port with the value b, where b = 2
bit
.
Example:
Set bit 3 in a port. Read in the current value of the port, OR it with 8 (8 = 2
3
), and
then write the resulting value to the port. In Pascal, this is programmed as:
V_Save
=
V_Save
OR
8;
Port[PortAddress] := V_Save;
Setting or clearing more than one bit at a time is accomplished just as easily. To
clear
multiple bits in a port,
AND the current value of the port with the value b, where b = 255 - (the sum of the values of the bits to be cleared).
Note that the bits do not have to be consecutive.
Example:
Clear bits 2, 4, and 6 in a port. Read in the current value of the port, AND it with 171
(171 = 255 - 2
2
- 2
4
- 2
6
), and then write the resulting value to the port. In C, this is programmed
as:
v_save = v_save & 171;
outportb(port_address, v_save);
To
set
multiple bits in a port, OR the current value of the port with the value b, where b = the sum of the
individual bits to be set. Note that the bits to be set do not have to be consecutive.
Example:
Set bits 3, 5, and 7 in a port. Read in the current value of the port, OR it with 168
(168 = 2
3
+ 2
5
+ 2
7
), and then write the resulting value back to the port. In assembly language, this
is programmed as:
mov al, v_save
or al, 168
mov dx, PortAddress
out dx, al
Often, assigning a range of bits is a mixture of setting and clearing operations. You can set or clear each bit
individually or use a faster method of first clearing all the bits in the range then setting only those bits that must be
set using the method shown above for setting multiple bits in a port. The following example shows how this two-
step operation is done.
Example:
Assign bits 3, 4, and 5 in a port to 101 (bits 3 and 5 set, bit 4 cleared). First, read in the
port and clear bits 3, 4, and 5 by ANDing them with 199. Then set bits 3 and 5 by ORing them
with 40, and finally write the resulting value back to the port. In C, this is programmed as:
v_save = v_save & 199;
v_save = v_save | 40;
outportb(port_address, v_save);
A final note:
Dont be intimidated by the binary operators AND and OR and try to use operators for which you
have a better intuition. For instance, if you are tempted to use addition and subtraction to set and clear bits in place
of the methods shown above, DONT! Addition and subtraction may seem logical, but they
will not work
if you try
to clear a bit that is already clear or set a bit that is already set. For example, you might think that to set bit 5 of a
port, you simply need to read in the port, add 32 (2
5
) to that value, and then write the resulting value back to the port.
This works fine if bit 5 is not already set. But, what happens when bit 5
is
already set? Bits 0 to 4 will be unaffected
and we cant say for sure what happens to bits 6 and 7, but we can say for sure that bit 5 ends up cleared instead of
being set. A similar problem happens when you use subtraction to clear a bit in place of the method shown above.
Содержание DM6210
Страница 2: ......
Страница 9: ...i 1 INTRODUCTION...
Страница 10: ...i 2...
Страница 14: ...1 2...
Страница 22: ...1 10...
Страница 24: ...2 2...
Страница 28: ...2 6...
Страница 30: ...3 2...
Страница 34: ...4 2...
Страница 44: ...5 2...
Страница 48: ...5 6...
Страница 50: ...6 2...
Страница 56: ...6 8...
Страница 57: ...7 1 CHAPTER 7 TIMER COUNTERS This chapter explains the 8254 timer counter circuits on the DM6210...
Страница 58: ...7 2...
Страница 61: ...8 1 CHAPTER 8 DIGITAL I O This chapter explains the digital I O circuitry on the DM6210...
Страница 62: ...8 2...
Страница 65: ...9 1 CHAPTER 9 EXAMPLE PROGRAMS This chapter discusses the example programs included with the DM6210...
Страница 66: ...9 2...
Страница 68: ...9 4...
Страница 70: ...10 2...
Страница 74: ...10 6...
Страница 75: ...A 1 APPENDIX A DM6210 SPECIFICATIONS...
Страница 76: ...A 2...
Страница 78: ...A 4...
Страница 79: ...B 1 APPENDIX B CN3 CONNECTOR PIN ASSIGNMENTS...
Страница 80: ...B 2...
Страница 82: ...B 4...
Страница 83: ...APPENDIX C COMPONENT DATA SHEETS C 1...
Страница 84: ......
Страница 85: ...Intel 82C54 Programmable Interval Timer Data Sheet Reprint...
Страница 86: ......
Страница 88: ...D 2...
Страница 90: ...D 4 RTD Embedded Technologies Inc 103InnovationBlvd StateCollegePA16803 0906 USA Ourwebsite www rtd com...
Страница 91: ...DM6210 User Settings Base I O Address hex decimal IRQ Channel...