BusIn HelloWorld

Fork of BusIn_HelloWorld by Mbed


BusIn is an abstraction that takes any pins and makes them appear as though they are linearly memory mapped for ease of use. This abstraction is useful for checking multiple inputs in a single pass. In general this abstraction can be used to make code less cluttered, clearer, and take less time to write.


Please pay attention to the ordering of pins in the initialization. The order pins are initialized in are the reverse order that bits are OR'd together.


API reference.

Import librarymbed

No documentation found.
Mon Jun 26 08:37:59 2017 -0500
"Update mbed-os"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedAustin 3:ac45ca465b45 1 /* mbed Example Program
mbedAustin 3:ac45ca465b45 2 * Copyright (c) 2006-2014 ARM Limited
mbedAustin 3:ac45ca465b45 3 *
mbedAustin 3:ac45ca465b45 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbedAustin 3:ac45ca465b45 5 * you may not use this file except in compliance with the License.
mbedAustin 3:ac45ca465b45 6 * You may obtain a copy of the License at
mbedAustin 3:ac45ca465b45 7 *
mbedAustin 3:ac45ca465b45 8 * http://www.apache.org/licenses/LICENSE-2.0
mbedAustin 3:ac45ca465b45 9 *
mbedAustin 3:ac45ca465b45 10 * Unless required by applicable law or agreed to in writing, software
mbedAustin 3:ac45ca465b45 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbedAustin 3:ac45ca465b45 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbedAustin 3:ac45ca465b45 13 * See the License for the specific language governing permissions and
mbedAustin 3:ac45ca465b45 14 * limitations under the License.
mbedAustin 3:ac45ca465b45 15 */
mbedAustin 3:ac45ca465b45 16
mbed_official 0:5e474ece410b 17 #include "mbed.h"
mbed_official 0:5e474ece410b 18
mbedAustin 5:81a0449aa2d5 19 BusIn nibble(D0, D1, D2, D3); // Change these pins to buttons on your board.
mbed_official 0:5e474ece410b 20
mbed_official 0:5e474ece410b 21 int main() {
mbedAustin 5:81a0449aa2d5 22
mbedAustin 5:81a0449aa2d5 23 // Optional: set mode as PullUp/PullDown/PullNone/OpenDrain
mbedAustin 5:81a0449aa2d5 24 nibble.mode(PullNone);
mbedAustin 5:81a0449aa2d5 25
mbed_official 0:5e474ece410b 26 while(1) {
mbedAustin 5:81a0449aa2d5 27 // check bits set in nibble
mbedAustin 6:e1f4151bb580 28 switch(nibble & nibble.mask()) { // read the bus and mask out bits not being used
mbedAustin 6:e1f4151bb580 29 case 0x0: printf("0b0000, D3,D2,D1,D0 are low \n\r");break;
mbedAustin 6:e1f4151bb580 30 case 0x1: printf("0b0001, D0 is high \n\r");break;
mbedAustin 6:e1f4151bb580 31 case 0x2: printf("0b0010, D1 is high \n\r");break;
mbedAustin 6:e1f4151bb580 32 case 0x3: printf("0b0011, D1,D0 are high \n\r");break;
mbedAustin 6:e1f4151bb580 33 case 0x4: printf("0b0100, D2 is high \n\r");break;
mbedAustin 6:e1f4151bb580 34 case 0x5: printf("0b0101, D2, ,D0 are high \n\r");break;
mbedAustin 6:e1f4151bb580 35 case 0x6: printf("0b0110, D2,D1 are high \n\r");break;
mbedAustin 6:e1f4151bb580 36 case 0x7: printf("0b0111, D2,D1,D0 are high \n\r");break;
mbedAustin 6:e1f4151bb580 37 case 0x8: printf("0b1000, D3 is high \n\r");break;
mbedAustin 4:252fbf8e71db 38 // ...
mbedAustin 6:e1f4151bb580 39 case 0xF: printf("0b1111, D3,D2,D1,D0 are high \n\r");break;
mbed_official 0:5e474ece410b 40 }
mbedAustin 5:81a0449aa2d5 41 wait(1);
mbed_official 0:5e474ece410b 42 }
mbed_official 0:5e474ece410b 43 }