Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

mikro c to mplab conversion for car alarm system

Status
Not open for further replies.

lifiq

Junior Member level 2
Joined
Jan 11, 2011
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,497
i have a code here in mikro c but can anyone pls help me to convert it into c code so that it can be compiled and be used in the mplab software......im doing a project on a car alarm system using pic16f877a mcu....pls guys

#define intruder PORTB.f7
#define button_ON PORTB.f6
#define blockcar PORTD.f7


char j[10] = "AT+CMSS=1"; // COMMAND SEND MESSAGE FROM STORAGE TO PHONE
int enter = 0X0D; // COMMAND FOR ENTER
char i;




void main()
{

trisb = 0xff; // SET PORTB AS INPUT
portd = 0x00; // SET INITIAL VALUE FOR PORTD
trisd = 0x00; // SET PORTD AS OUTPUT
UART1_Init(9600); // SYNCHRONIZE BAUDRATE WITH HANDPHONE
trisc.f7 = 1; // SET Rx DATA IN
trisc.f6 = 0; // SET Tx DATA OUT

while(1)
{
ON:
while(1)
{
blockcar=0; // SET INITIAL FOR NOT BLOCKING CAR
if(button_ON==1) // ON OR NOT THE SYSTEM
{
if(button_ON==0)
{
goto ON;
}
else if
(intruder==0) // FIND OUT IF THE DOOR STILL OPEN OR NOT
{
goto INTRUDER; // GO TO CHECK FOR AN INTRUDER
}
}
}

INTRUDER:
while(1)
{
if(button_ON==0)
{
goto ON;
}
else if((intruder==1)&&(button_ON==1)) // CHECK IF THERE IS AN

{
goto SSMS; // GO TO SENDS SMS AFTER

}
}
SSMS:
while(1)
{
for(i=0;i<10;i++)
UART1_Write(j); // SENDING CHARACTER FOR SENDS SMS

UART1_Write(enter);
goto USERINT; // GO TO BLOCKING CAR
}
USERINT:
while (1)
{
blockcar=1; // BLOCKING THE CAR
if (button_ON==0) // WAIT FOR USER INTERRUPT
{
goto ON; // BACK TO START AFTER USER INTERRUPT
}
}
}
}
 

grieblm

Member level 4
Joined
May 7, 2011
Messages
75
Helped
18
Reputation
36
Reaction score
18
Trophy points
1,308
Location
Georgetown, Canada
Activity points
1,734
If I could offer a critique of your code: it might be simpler and more readable to implement this as a software state machine. All those "goto"s are going to be nothing but trouble later on when you try to remember what this code does or try to find out why it's not working.

To work with the Hi-Tech PIC compiler, I think you'll need to change the "trisc.f6" statements to something like TRISCbits.TRISC6. The port names also need to be in capitals.
 

lifiq

Junior Member level 2
Joined
Jan 11, 2011
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,497
i did it using proteus and it works fine but when implementing this using breadboard the RB6 for turning it on directly initiates RD7 which is output to turn on...what should i do...can u modify the code for the better....thanks alot dude
 

grieblm

Member level 4
Joined
May 7, 2011
Messages
75
Helped
18
Reputation
36
Reaction score
18
Trophy points
1,308
Location
Georgetown, Canada
Activity points
1,734
Dude, I think you might have a switch bounce problem. Are you debouncing the input switches in hardware or software? Real switches have contact bounce -- unlike simulated ones ;-)
 

lifiq

Junior Member level 2
Joined
Jan 11, 2011
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,497
so what shall i do....im doing it in hardware and im facing this problem.....in software it works perfectly fine.....when i do it in hardware the on button directly triggers the output in pin rb7.
 

grieblm

Member level 4
Joined
May 7, 2011
Messages
75
Helped
18
Reputation
36
Reaction score
18
Trophy points
1,308
Location
Georgetown, Canada
Activity points
1,734
Perhaps your hardware debouncing is not working? What circuit are you using? Typically you need a debounce filter of around 50 to 100mS. If possible, check that a clean switch output is present at the processor input.

Another possibility may be that your code has a race condition where it doesn't wait for a switch edge and instead is triggered by the switch level. That could be getting you into trouble.

If you know what a state machine is you really should look at implementing your logic as one. I can see basically four states. Once you implement the state machine, it will be obvious what's happening -- assuming the problem is in the software.
 

lifiq

Junior Member level 2
Joined
Jan 11, 2011
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,497
i have tested with other programs for led blinking and stuff and it has no problem......one thing new that i find out is that when i hold a any component in the circuit such as resistor capacitor or crystal it works fine no issues....but when i leave it untouched the output pin will start blinking the led.
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top