Le bang-bang se réfère au concept selon lequel les signaux qui sortent ou entrent dans un appareil doivent être générés / échantillonnés par logiciel plutôt que par matériel. Évidemment, du matériel est nécessaire, mais lors de l'utilisation du bit banging, le seul matériel pour chaque sortie est un verrou qui peut être explicitement défini ou effacé par le logiciel, et le seul matériel pour chaque entrée est une interface permettant au logiciel de tester si c'est le cas. haut ou bas (et exécutent généralement une branche conditionnelle pour un état mais pas pour l'autre).
La vitesse maximale qui peut être atteinte avec le bit banging sera généralement une fraction de ce qui pourrait être atteint avec du matériel spécialement conçu, mais en dehors des limitations imposées par la vitesse du processeur, le bit banging est beaucoup plus polyvalent et peut être utilisé dans des circonstances où le matériel à usage général n'est pas tout à fait approprié et le matériel à usage spécial ne serait pas rentable.
Par exemple, de nombreux contrôleurs ont un port "de style SPI" qui se comporte essentiellement comme suit: lorsqu'un octet est écrit dans un certain registre, le matériel génère un certain nombre d'impulsions d'horloge (généralement huit), en synchronisant un bit de données sur le front montant de chaque impulsion d'horloge et échantillonnage d'un bit de données entrant sur le front descendant. Généralement, les ports de style SPI des contrôleurs permettent de configurer diverses fonctionnalités, mais dans certains cas, il peut être nécessaire d'interfacer un processeur avec un périphérique qui fait quelque chose d'inhabituel. Un périphérique peut exiger que les bits de données soient traités en multiples autres que huit, ou il peut exiger que les données soient à la fois sorties et échantillonnées sur le même front d'horloge, ou il peut avoir une autre exigence inhabituelle. Si le matériel particulier du contrôleur que vous utilisez peut répondre à vos besoins précis, génial (certains fournissent des nombres configurables de bits, une synchronisation de transmission et de réception configurable séparément, etc.) Sinon, le claquement de bits peut être utile. Selon le contrôleur, le fait de frapper une interface SPI prend souvent 2 à 10 fois plus de temps que de laisser le matériel le gérer, mais si les exigences ne correspondent pas au matériel dont on dispose, l'échange de données plus lentement peut être mieux que ne pas pouvoir le faire du tout.
Une chose importante à noter avec les conceptions bang-bang est qu'elles sont les plus simples et les plus robustes dans les circonstances où soit les appareils avec lesquels ils communiquent attendent sur le contrôleur de bit-banging pour générer tout leur timing, soit où le contrôleur sera autorisé à attendre, sans distraction, l'arrivée d'un événement, et où il pourra faire tout ce qu'il doit faire avec cet événement avant l'arrivée de tout autre événement sur lequel il doit agir. Ils sont beaucoup moins robustes dans les circonstances où un appareil devra être capable de réagir à des stimuli externes dans un délai relativement court, mais ne peut pas utiliser 100% de son énergie pour surveiller de tels stimuli.
Par exemple, supposons que l'on souhaite qu'un processeur transmette des données de type UART en série à un débit très élevé par rapport à sa vitesse d'horloge (par exemple, un PIC qui exécute 8192 instructions par seconde souhaite produire des données à 1200 bps). Si aucune interruption n'est activée, une telle transmission n'est pas difficile (horloge un bit tous les sept cycles d'instructions). Si un PIC ne faisait rien d'autre qu'attendre un octet de données entrant de 1200 bps, il pourrait exécuter une boucle de 3 cycles en attendant le bit de démarrage, puis procéder à l'horloge des données à des intervalles de sept cycles. En effet, si un PIC avait un octet de données prêt à être envoyé lorsqu'un octet de données entrant est arrivé, sept cycles par bit seraient suffisants pour que le PIC envoie son octet de données simultanément à la lecture de l'octet entrant. Également,si une telle réponse aurait un timing fixe par rapport à la transmission d'origine . D'un autre côté, il n'y aurait aucun moyen pour les PICs de gérer les communications bit-bang de telle manière que l'un ou l'autre des appareils soit autorisé à transmettre à tout moment qu'il jugerait bon (par opposition à un seul appareil qui pourrait transmettre quand il a vu s'adapter, et faire ce qu'il voulait quand il ne transmet pas, et un appareil qui devrait passer la majeure partie de son temps à ne rien faire mais à attendre les transmissions du premier appareil).