Pesquisar neste blog

16/05/2023

Sequência de outputs com PIC 16F877A

Objetivo: Dar outputs com apenas 4 pinos do PIC sem comprometer os demais pinos e sem utilizar vários high e low.

CÓDIGO FEITO EM CCS C COMPILER

#include <16F877A.h>
#use delay(clock = 20MHz)

#define size 8

int sequences[][2] = {
  {PIN_B4, 1}, {PIN_B5, 0}, {PIN_B6, 0}, {PIN_B7, 1},
  {PIN_B4, 0}, {PIN_B5, 1}, {PIN_B6, 1}, {PIN_B7, 1},
  {PIN_B4, 0}, {PIN_B5, 0}, {PIN_B6, 0}, {PIN_B7, 0},
  {PIN_B4, 1}, {PIN_B5, 0}, {PIN_B6, 1}, {PIN_B7, 1}, 
  {PIN_B4, 0}, {PIN_B5, 0}, {PIN_B6, 0}, {PIN_B7, 0}, 
  {PIN_B4, 0}, {PIN_B5, 0}, {PIN_B6, 0}, {PIN_B7, 1},
  {PIN_B4, 1}, {PIN_B5, 1}, {PIN_B6, 0}, {PIN_B7, 1},
  {PIN_B4, 0}, {PIN_B5, 0}, {PIN_B6, 1}, {PIN_B7, 0}, 
  {PIN_B4, 0}, {PIN_B5, 0}, {PIN_B6, 0}, {PIN_B7, 1},
  {PIN_B4, 1}, {PIN_B5, 0}, {PIN_B6, 1}, {PIN_B7, 1}};

void set_outputs(int outputs[][2], int num_outputs) {
   
    for (int i = 0; i < num_outputs; i++) {
        output_low(outputs[i][0]);
        output_high(outputs[i][1]);
        delay_ms(500);
    }
}

int main() {
      
   for (int i = 0; i < size; i++) {
       set_outputs(sequences[i], 4);
   } 
   
}

Saída gerada

Nenhum comentário: