• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

What is the different between microchip PIC16F877 & 16F8

Status
Not open for further replies.

julie_lmf

New Member
:oops: Hi, i'm the beginer of learning this microchip and now i having problem in compiling my program in chip 16F877A, the new chip i try to explore on. Before that, i using the 16F877. my program is writing in assembly language, can any body help to provide me some guidances on get use to 16F877A in term of setting in my program in order to run this chip. Thanks in advance for u guy help......


Regards& Thanks;
Julie Lee :D
 

Nigel Goodwin

Super Moderator
Most Helpful Member
Re: What is the different between microchip PIC16F877 &

julie_lmf said:
:oops: Hi, i'm the beginer of learning this microchip and now i having problem in compiling my program in chip 16F877A, the new chip i try to explore on. Before that, i using the 16F877. my program is writing in assembly language, can any body help to provide me some guidances on get use to 16F877A in term of setting in my program in order to run this chip. Thanks in advance for u guy help......
The 877A is simply a FLASH version of the 877 (which was EEPROM), but it does include comparators (which the 877 didn't). However, just for a change (and to make it compatible with existing 877 code) these are disabled by default!.

As far as I'm aware you shouldn't need to make any code changes, although the config fuse settings are slightly different.

As always MicroChip provide a 'migration document', showing any changes that need to be made.

Be aware that your programmer needs to specifically support the 877A, as the programming algorithym is different!.
 

mirrayhan08

New Member
hello every body,
I need help on my line follower robot based on PIC 16f877A. i download C source code and try to compile this code in MPLAB. but it show missing error in first 6 line. but i can't find any problem those line. i give the code without header file. plz any body find the error or convert it HEX format.
<><><><><><><><><><><><><><><><><><><><><><><><><<>

#include <16F877A.H>; //declare a PIC header
#device adc=8; //set the bit for ADC
#fuses hs, nowdt, noprotect; //set the PIC protection
#use delay (clock=20000000); //set the clock frequency
int val1; //ADC value 1 left sensor
int val2; //ADC value 2 center sensor
int val3; //ADC value 3 right sensor
int vref; //voltage reference
void lmotor(int gear); //left motor function
void rmotor(int gear); //right motor function
#byte porta=5; //assign port a
#byte portd=8; //assign port d

void main() //main function
{
vref=0x7f; //set voltage reference value
set_tris_d(0); //declare port d as output
setup_port_a(all_analog); //enable port a as ADC port
setup_adc(adc_clock_internal); //set the clock for ADC
setup_ccp1(ccp_pwm); //set enable ccp1
setup_ccp2(ccp_pwm); //set enable ccp2
setup_timer_2(t2_div_by_4,100,1); //set post scaler timer

while(1) //inifinite loop
{
portd=0xaa; //set value for motor
set_adc_channel(0); //ADC at port A0 channel
val1=read_adc(); //read and store A0 value
set_adc_channel(2); //ADC at port A2 channel
val2=read_adc(); //read and store A2 value
set_adc_channel(4); //Adc at port A4
val3=read_adc(); //read and store A4 value

//start condition
//if sensor sense dark then value is greater than Vref
//if sensor sense bright then value is lower than Vref
if(val2>vref) //if sensor 2 is dark
{
if((val1<vref)&&(val3<vref)) //sensor 1&3 is bright
{ //send value to motor ccp
lmotor(70); //both motor moving at same rate
rmotor(70);
}
else if (val1>vref) //sensor 1 is dark
{
lmotor(0); //left motor stop
rmotor(70); //right motor move
}
else if (val3>vref) //sensor 3 is dark
{
lmotor(70); //left motor move
rmotor(0); //right motor stop
}
}
else if ((val1>vref)&&(val3<vref)) //if only sensor 1 is dark
{
lmotor(0); //left motor stop
rmotor(70); //right motor move
}





else if ((val3>vref)&&(val1<vref)) //if only sensor 3 is dark
{
lmotor(70); //left motor move
rmotor(0); //right motor stop
}
else //other than condition above
{
lmotor(60); //left motor move slow
rmotor(60); //right motor move slow
}


}
}
//end program
void lmotor(int gear) //left motor ccp control function
{
set_pwm1_duty(gear); //ccp1 duty cycle

}

void rmotor(int gear) //right motor ccp control function
{
set_pwm2_duty(gear); //ccp2 duty cycle
}

<><><><><><><><><><><><><><><><><><><><><><><>

It is very very emargency in my study.

Plz help me very queckly.

Thanks to all

Mehedi.
 
Status
Not open for further replies.

Latest threads

EE World Online Articles

Loading
Top