Input doesn't work in PIC controller.

In summary, the code doesn't work because you need to set the ADCON1 register to shut off the analog->digital converters.
  • #1
Zalajbeg
78
3
Hi everyone,

In the past I learned very good things about electronics and PIC controller in this forum. After that I have decided to design a circuit with a PIC micro-controller and simulated it in Proteus. However it doesn't work. Could you have a look and tell me what I am missing?

The circuit scheme is that:

Circuit.png


My code is below:

Code:
#include <pic.h>
#include <delay.c>
#include <stdio.h>
#define magnet RA0

int main(void)
{
	char n=1;
	unsigned int i;
	unsigned char birth[]={
		0x84, 0x84, 0xFD, 0x84, 0x84, 0x00,
		0x01, 0x02, 0xFC, 0x02, 0x01, 0x00,
		0x84, 0x84, 0xFD, 0x84, 0x84, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		0xFF, 0x18, 0x24, 0x42, 0x81, 0x00,
		0x84, 0x84, 0xFD, 0x84, 0x84, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00,
		0x7E, 0x81, 0x81, 0x81, 0x7E, 0x00,
		0x79, 0x85, 0xA5, 0xA5, 0x69, 0x00,
		0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00,
		0x7F, 0x80, 0x80, 0x80, 0x7F, 0x00,
		0xFF, 0x06, 0x18, 0x60, 0xFF, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00
		};
	unsigned char name[]={
		0x01, 0x02, 0xFC, 0x02, 0x01, 0x00,
		0x81, 0x81, 0xFF, 0x81, 0x81, 0x00,
		0xFF, 0x80, 0x80, 0x80, 0x80, 0x80,
		0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00,
		0x81, 0x81, 0xFF, 0x81, 0x81, 0x00,
		0xC1, 0xA1, 0x99, 0x85, 0x83, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00
		};
		
		TRISA=0x01; TRISB=0;
		PORTA=0; PORTB=0;
		for(;;){
			while(n){
				if(magnet==1){
					for(i=0;i<112;i++){
						PORTB=birth[i];
						DelayMs(1000);
						}
				n=0;
					}
				}

		n=1;
			while(n){
				if(magnet==1){
					for(i=0;i<56;i++){
						PORTB=name[i];
						DelayMs(1000);
						}
				n=0;
					}
				}
		n=1;
		}
		}

I want to get output when I close the switch which gives input to RA0. If I delete this condition from my codes the circuit works. However I couldn't do this with an input. Could you explain me what is happening?

Edit: The input pin show as (WHI) Weak High Input. However the LEDs seems as (WLO) Weak Low Output.

Edit 2: When I use D pins instead of A pins it works perfect. However if you can explain why it doesn't work with A pins I will be happy to read.
 
Last edited:
Engineering news on Phys.org
  • #2
You need to set the ADCON1 register to

adc.h: #define ADC_0ANA_0REF 0b00000111 // ALL DIGITAL I/O (0/0)

to shut off the analog->digital converters so you can use digital I/O.
(Actually, look ADCON1 up in the spec sheet to verify the bit settings,
I get confused by their attempt to make ORmasks work like ANDmasks
and vice versa...)

I believe, at least on the 18F2455 that I use, this will preclude using any ADCs
so you might want to select a higher A-bit as your input just in case.
 

Related to Input doesn't work in PIC controller.

1. Why is my input not working in my PIC controller?

There could be a few different reasons for this issue. It could be due to a programming error, faulty hardware connections, or a malfunctioning component. It is important to check all these possibilities and troubleshoot accordingly.

2. How do I troubleshoot my input in a PIC controller?

First, check the connections between the input device and the PIC controller. Make sure they are secure and properly connected. Next, review your code for any potential errors. You can also try testing the input with a different device to see if the issue persists.

3. Can using the wrong input pins affect the functionality of my PIC controller?

Yes, using the wrong input pins can definitely affect the functionality of your PIC controller. Make sure you are using the correct pins for your specific input device and that they are properly configured in your code.

4. Is there a specific way to program inputs in a PIC controller?

Yes, inputs in a PIC controller need to be programmed in a specific way in order for them to work properly. This includes configuring the input pins and using the correct code to read and interpret the input data.

5. Can a malfunctioning input device cause issues with my PIC controller?

Yes, a malfunctioning input device can definitely cause issues with your PIC controller. If all other troubleshooting steps have been taken and the input still does not work, it is possible that the input device itself is faulty and needs to be replaced.

Similar threads

  • Electrical Engineering
Replies
6
Views
1K
  • Programming and Computer Science
Replies
1
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
2
Views
2K
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
7
Views
3K
Back
Top