ik heb voor de PIC16F84A de volgende code geschreven in C:


#include <pic1684.h>

unsigned char scan()
{
	RB0=1;
	RB1=0;
	RB2=0;
	RB3=0;
	if(RB4) return 1;
	if(RB5) return 2;
	if(RB6) return 3;
	RB0=0;
	RB1=1;
	RB2=0;
	RB3=0;
	if(RB4) return 4;
	if(RB5) return 5;
	if(RB6) return 6;
	RB0=0;
	RB1=0;
	RB2=1;
	RB3=0;
	if(RB4) return 7;
	if(RB5) return 8;
	if(RB6) return 9;
	RB0=0;
	RB1=0;
	RB2=0;
	RB3=1;
	if(RB4) return 10;
	if(RB5) return 0;
	if(RB6) return 11;
	return 12;
}	

void piep ()
{
	unsigned int i;
	RA1=1;
	for(i=0;i<10000;i++)
	{
	}
	RA1=0;
	for(i=0;i<10000;i++)
	{
	}
}

void main ()
{
	unsigned char n,oldn;
	TRISA0=0;
	TRISA1=0;
	TRISB0=0;
	TRISB1=0;
	TRISB2=0;
	TRISB3=0;
	TRISB4=1;
	TRISB5=1;
	TRISB6=1;
	while(1)
	{
		oldn=n;
		n=scan();
		if(n!=12)
		{
			RA0=1;
		}	
		else
		{
			RA1=0;
		}
	}
}

op port B is een numeriek matrix (3x4) toetsenbordje aangesloten. het is de bedoeling dat als je op een toets drukt, A0 1 wordt en als je op geen enkele toets drukt moet A0 0 worden. het probleem is dat A0 constant 1 is? iemand een idee hoe dit komt?
zelf dacht ik dat de functie scan mischien niets aflevert, kan dit het zijn?

[Bericht gewijzigd door Martijn Berntsen op ]

Ik snap niet waarom jij een char gebruikt voor die n. Waarom niet gewoon een int?

Volgensmij is dat ook het probleem.

[Bericht gewijzigd door Bastiaan op ]

ik dacht, een char gebruikt maar 8 bits en een pic heeft al niet zo veel ram geheugen. maar ik zal het met int proberen.

Is er niet zoiets als een tinyint?

Op di 23-07-2002 19:45:29 schreef Martijn Berntsen:
nee

Werkt het niet? of is het een antwoord op de tinyint?

dat was het antwoord op tinyint.
maar ik heb het probleem gevonden, er moesten wat pulldown weerstandjes bij het toetsenbordje.