Skip to main content
edited title
Link

PIC16F678 PIC16F676 communication using infrared

added 480 characters in body
Source Link
Lundin
  • 24.3k
  • 1
  • 34
  • 87

main(){

main(){ ANSEL =0b000000;  TRISC=0b110111;  PORTC=0b000000;  OSCCAL=0b11111; 

while(1){

while(1){ if (RC0==0 && RC1==0 && RC2==0 && RC4==0){     RC3=1;   __delay_us(183);   RC3=0;   __delay_us(166);}    else if (RC0==0 && RC1==0 && RC2==0 && RC4==1){     RC3=1;   __delay_us(229);   RC3=0;   __delay_us(196);}    else if (RC0==0 && RC1==0 && RC2==1 && RC4==0){     RC3=1;   __delay_us(276);   RC3=0;   __delay_us(234);}    else if (RC0==0 && RC1==0 && RC2==1 && RC4==1){     RC3=1;   __delay_us(322);   RC3=0;   __delay_us(264);}    else if (RC0==0 && RC1==1 && RC2==0 && RC4==0){     RC3=1;   __delay_us(368);   RC3=0;   __delay_us(318);}    else if (RC0==0 && RC1==1 && RC2==0 && RC4==1){     RC3=1;   __delay_us(415);   RC3=0;   __delay_us(348);}    else if (RC0==0 && RC1==1 && RC2==1 && RC4==0){   //500us   RC3=1;   __delay_us(460);   RC3=0;   __delay_us(385);}    else if (RC0==0 && RC1==1 && RC2==1 && RC4==1){   //550us   RC3=1;   __delay_us(508);   RC3=0;   __delay_us(415);}    else if (RC0==1 && RC1==0 && RC2==0 && RC4==0){   //600us   RC3=1;   __delay_us(555);   RC3=0;   __delay_us(500);}    else if (RC0==1 && RC1==0 && RC2==0 && RC4==1){   //650us   RC3=1;   __delay_us(600);   RC3=0;   __delay_us(530);}  else if (RC0==1 && RC1==0 && RC2==1 && RC4==0){   //700us   RC3=1;   __delay_us(646);   RC3=0;   __delay_us(568);}  else if (RC0==1 && RC1==0 && RC2==1 && RC4==1){   //750us   RC3=1;   __delay_us(694);   RC3=0;   __delay_us(600);}    else if (RC0==1 && RC1==1 && RC2==0 && RC4==0){   //800us   RC3=1;   __delay_us(738);   RC3=0;   __delay_us(650);}    else if (RC0==1 && RC1==1 && RC2==0 && RC4==1){   //850us   RC3=1;   __delay_us(785);   RC3=0;   __delay_us(680);}    else if (RC0==1 && RC1==1 && RC2==1 && RC4==0){   //900us   RC3=1;   __delay_us(828);   RC3=0;   __delay_us(718);}    else if (RC0==1 && RC1==1 && RC2==1 && RC4==1){   //950us   RC3=1;   __delay_us(880);   RC3=0;   __delay_us(750);}  }} 

main(){

ANSEL =0b000000; TRISC=0b110111; PORTC=0b000000; OSCCAL=0b11111; 

while(1){

if (RC0==0 && RC1==0 && RC2==0 && RC4==0){ RC3=1; __delay_us(183); RC3=0; __delay_us(166);} else if (RC0==0 && RC1==0 && RC2==0 && RC4==1){ RC3=1; __delay_us(229); RC3=0; __delay_us(196);} else if (RC0==0 && RC1==0 && RC2==1 && RC4==0){ RC3=1; __delay_us(276); RC3=0; __delay_us(234);} else if (RC0==0 && RC1==0 && RC2==1 && RC4==1){ RC3=1; __delay_us(322); RC3=0; __delay_us(264);} else if (RC0==0 && RC1==1 && RC2==0 && RC4==0){ RC3=1; __delay_us(368); RC3=0; __delay_us(318);} else if (RC0==0 && RC1==1 && RC2==0 && RC4==1){ RC3=1; __delay_us(415); RC3=0; __delay_us(348);} else if (RC0==0 && RC1==1 && RC2==1 && RC4==0){ //500us RC3=1; __delay_us(460); RC3=0; __delay_us(385);} else if (RC0==0 && RC1==1 && RC2==1 && RC4==1){ //550us RC3=1; __delay_us(508); RC3=0; __delay_us(415);} else if (RC0==1 && RC1==0 && RC2==0 && RC4==0){ //600us RC3=1; __delay_us(555); RC3=0; __delay_us(500);} else if (RC0==1 && RC1==0 && RC2==0 && RC4==1){ //650us RC3=1; __delay_us(600); RC3=0; __delay_us(530);} else if (RC0==1 && RC1==0 && RC2==1 && RC4==0){ //700us RC3=1; __delay_us(646); RC3=0; __delay_us(568);} else if (RC0==1 && RC1==0 && RC2==1 && RC4==1){ //750us RC3=1; __delay_us(694); RC3=0; __delay_us(600);} else if (RC0==1 && RC1==1 && RC2==0 && RC4==0){ //800us RC3=1; __delay_us(738); RC3=0; __delay_us(650);} else if (RC0==1 && RC1==1 && RC2==0 && RC4==1){ //850us RC3=1; __delay_us(785); RC3=0; __delay_us(680);} else if (RC0==1 && RC1==1 && RC2==1 && RC4==0){ //900us RC3=1; __delay_us(828); RC3=0; __delay_us(718);} else if (RC0==1 && RC1==1 && RC2==1 && RC4==1){ //950us RC3=1; __delay_us(880); RC3=0; __delay_us(750);} }} 
main(){ ANSEL =0b000000;  TRISC=0b110111;  PORTC=0b000000;  OSCCAL=0b11111; while(1){ if (RC0==0 && RC1==0 && RC2==0 && RC4==0){     RC3=1;   __delay_us(183);   RC3=0;   __delay_us(166);}    else if (RC0==0 && RC1==0 && RC2==0 && RC4==1){     RC3=1;   __delay_us(229);   RC3=0;   __delay_us(196);}    else if (RC0==0 && RC1==0 && RC2==1 && RC4==0){     RC3=1;   __delay_us(276);   RC3=0;   __delay_us(234);}    else if (RC0==0 && RC1==0 && RC2==1 && RC4==1){     RC3=1;   __delay_us(322);   RC3=0;   __delay_us(264);}    else if (RC0==0 && RC1==1 && RC2==0 && RC4==0){     RC3=1;   __delay_us(368);   RC3=0;   __delay_us(318);}    else if (RC0==0 && RC1==1 && RC2==0 && RC4==1){     RC3=1;   __delay_us(415);   RC3=0;   __delay_us(348);}    else if (RC0==0 && RC1==1 && RC2==1 && RC4==0){   //500us   RC3=1;   __delay_us(460);   RC3=0;   __delay_us(385);}    else if (RC0==0 && RC1==1 && RC2==1 && RC4==1){   //550us   RC3=1;   __delay_us(508);   RC3=0;   __delay_us(415);}    else if (RC0==1 && RC1==0 && RC2==0 && RC4==0){   //600us   RC3=1;   __delay_us(555);   RC3=0;   __delay_us(500);}    else if (RC0==1 && RC1==0 && RC2==0 && RC4==1){   //650us   RC3=1;   __delay_us(600);   RC3=0;   __delay_us(530);}  else if (RC0==1 && RC1==0 && RC2==1 && RC4==0){   //700us   RC3=1;   __delay_us(646);   RC3=0;   __delay_us(568);}  else if (RC0==1 && RC1==0 && RC2==1 && RC4==1){   //750us   RC3=1;   __delay_us(694);   RC3=0;   __delay_us(600);}    else if (RC0==1 && RC1==1 && RC2==0 && RC4==0){   //800us   RC3=1;   __delay_us(738);   RC3=0;   __delay_us(650);}    else if (RC0==1 && RC1==1 && RC2==0 && RC4==1){   //850us   RC3=1;   __delay_us(785);   RC3=0;   __delay_us(680);}    else if (RC0==1 && RC1==1 && RC2==1 && RC4==0){   //900us   RC3=1;   __delay_us(828);   RC3=0;   __delay_us(718);}    else if (RC0==1 && RC1==1 && RC2==1 && RC4==1){   //950us   RC3=1;   __delay_us(880);   RC3=0;   __delay_us(750);}  }} 
deleted 601 characters in body
Source Link

So I've been working on this project for some time now and I've hit a wall since I'm new to using pickit3 and using C language is not my strong. Basically what I'm trying to do is use two micro-controllers to communicate to each other using an infrared I've manage to program the first PIC which creates different pulses using various input combination using 4 switches. For example (0000 = 200 us pulse,0001 =250 us pulse). now for the receiver i need to capture the pulses and display them using 4 LED's (200us = 0000, 250us = 0001)

/* 
  • File: fabmain.c
  • Author: Fabian
  • Created on November 28, 2017, 9:39 AM */

#include <xc.h> #pragma config FOSC = INTRCIO// Oscillator Selection bits (INTOSC oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON // RA3/MCLR pin function select #pragma config BOREN = OFF // Brown the code below is the code i did for the First micro-out Detect Enable bit (BOD disabled) #pragma config CP = OFF // Code Protection bit (protection disabled) #pragma config CPD = OFF // Data Code Protection bit (protection disabled)controller. #define _XTAL_FREQ 4000000 /MY question is how would I do the receiver part of the code. i know i should use Timer1 or Timer0 from reading the data sheets. but i havent been able to work something out even from using other examples where people make use of these timers/ 4MHzcounters.

So I've been working on this project for some time now and I've hit a wall since I'm new to using pickit3 and using C language is not my strong. Basically what I'm trying to do is use two micro-controllers to communicate to each other using an infrared I've manage to program the first PIC which creates different pulses using various input combination using 4 switches. For example (0000 = 200 us pulse,0001 =250 us pulse). now for the receiver i need to capture the pulses and display them using 4 LED's (200us = 0000, 250us = 0001)

/* 
  • File: fabmain.c
  • Author: Fabian
  • Created on November 28, 2017, 9:39 AM */

#include <xc.h> #pragma config FOSC = INTRCIO// Oscillator Selection bits (INTOSC oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON // RA3/MCLR pin function select #pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled) #pragma config CP = OFF // Code Protection bit (protection disabled) #pragma config CPD = OFF // Data Code Protection bit (protection disabled) #define _XTAL_FREQ 4000000 // 4MHz

So I've been working on this project for some time now and I've hit a wall since I'm new to using pickit3 and using C language is not my strong. Basically what I'm trying to do is use two micro-controllers to communicate to each other using an infrared I've manage to program the first PIC which creates different pulses using various input combination using 4 switches. For example (0000 = 200 us pulse,0001 =250 us pulse). now for the receiver i need to capture the pulses and display them using 4 LED's (200us = 0000, 250us = 0001). the code below is the code i did for the First micro-controller. MY question is how would I do the receiver part of the code. i know i should use Timer1 or Timer0 from reading the data sheets. but i havent been able to work something out even from using other examples where people make use of these timers/counters.

Source Link
Loading