Why USART Terminal did not detect pressed key?

Post your requests and ideas on the future development of mikroC PRO for PIC.
Post Reply
Author
Message
emylia87
Posts: 4
Joined: 26 Oct 2009 08:05

Why USART Terminal did not detect pressed key?

#1 Post by emylia87 » 26 Oct 2009 08:16

I've been tasked to an assignment to make a coding that USART Terminal will detect a key on PIC.

I'm using PIC18F458 and the key is at Port A Pin 4.
Basically it will run like this. WHen i run the code below,it will ask to enter an input in comunication box in USART Terminal.then when i pressed the button connected to Port A Pin 4 in PIC18F458, it will run again the same code that ask user to enter an input.

The problem is i got the display on entering the input but when i pressed the button on Port A Pin 4, nothing happen. uhuuu.is there something worng with coding.


unsigned char want,h,j,i,m;
unsigned int price,number,sum,k,pay,am,balance,number1,nnn;

void NumtoChar(unsigned int a)
{
unsigned char digit[3];
digit[0]=a/1000;
digit[0]+=0x30;
a=a%1000;
digit[1]=a/100;
digit[1]+=0x30;
a=a%100 ;
digit[2]=a/10;
digit[2]+=0x30;
a=a%10 ;
digit[3]=a ;
digit[3]+=0x30;
a=a ;
Usart_Write(digit[0]);
Usart_Write(digit[1]);
Usart_Write(digit[2]);
Usart_Write(digit[3]);
}

void main()
{
Usart_Init(9600);
TRISA.F4=1;

while(1){

if(PORTA.F4==0){

Usart_Write('W');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('e');
Usart_Write(' ');
Usart_Write('t');
Usart_Write('o');
Usart_Write(' ');
Usart_Write('p');
Usart_Write('r');
Usart_Write('e');
Usart_Write('p');
Usart_Write('a');
Usart_Write('i');
Usart_Write('d');
Usart_Write(' ');
Usart_Write('c');
Usart_Write('e');
Usart_Write('n');
Usart_Write('t');
Usart_Write('r');
Usart_Write('e');
Usart_Write(' ');
Usart_Write('a');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('b');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('c');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('d');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('e');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('f');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('g');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('h');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write(' ');
Usart_Write('i');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
k=1;
sum=0;
price=0;

while(k==1)
{
Usart_Write('P');
Usart_Write('l');
Usart_Write('e');
Usart_Write('a');
Usart_Write('s');
Usart_Write('e');
Usart_Write(' ');
Usart_Write('e');
Usart_Write('n');
Usart_Write('t');
Usart_Write('e');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('o');
Usart_Write('r');
Usart_Write('d');
Usart_Write('e');
Usart_Write('r');

while(!Usart_Data_Ready());
m=Usart_Read();

Usart_Write('W');
Usart_Write('h');
Usart_Write('a');
Usart_Write('t');
Usart_Write(' ');
Usart_Write('i');
Usart_Write('s');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('q');
Usart_Write('u');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write('i');
Usart_Write('t');
Usart_Write('y');
Usart_Write('?');

while(!Usart_Data_Ready());
number=Usart_Read();
number=number-0x30;

if (m=='a')
{
price=number*1000;
sum+=price;
}
if (m=='b')
{
price=number*3000;
sum+=price;
}
if (m=='c')
{
price=number*6000;
sum+=price;
}
if (m=='d')
{
price=number*1000;
sum+=price;
}
if (m=='e')
{
price=number*3000;
sum+=price;
}
if (m=='f')
{
price=number*6000;
sum+=price;
}
if (m=='g')
{
price=number*1000;
sum+=price;
}
if (m=='h')
{
price=number*3000;
sum+=price;
}
if (m=='i')
{
price=number*6000;
sum+=price;
}



Usart_Write('D');
Usart_Write('o');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write(' ');
Usart_Write('s');
Usart_Write('t');
Usart_Write('i');
Usart_Write('l');
Usart_Write('l');
Usart_Write(' ');
Usart_Write('w');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write(' ');
Usart_Write('t');
Usart_Write('o');
Usart_Write(' ');
Usart_Write('o');
Usart_Write('r');
Usart_Write('d');
Usart_Write('e');
Usart_Write('r');
Usart_Write('?');
Usart_Write('[');
Usart_Write('1');
Usart_Write('=');
Usart_Write('y');
Usart_Write('e');
Usart_Write('s');
Usart_Write(',');
Usart_Write('0');
Usart_Write('=');
Usart_Write('n');
Usart_Write('o');
Usart_Write(']');

while(!Usart_Data_Ready());

want=Usart_Read();

if(want=='0')
{
k=0;
}
}

Usart_Write('T');
Usart_Write('o');
Usart_Write('t');
Usart_Write('a');
Usart_Write('l');
NumtoChar(sum);
Usart_Write('s');
Usart_Write('e');
Usart_Write('n');


pay=0;
am=0;

calculate:


{
Usart_Write('i');
Usart_Write('n');
Usart_Write('s');
Usart_Write('e');
Usart_Write('r');
Usart_Write('t');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('m');
Usart_Write('o');
Usart_Write('n');
Usart_Write('e');
Usart_Write('y');

while(!Usart_Data_Ready());

nnn=Usart_Read();

Usart_Write('q');
Usart_Write('u');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write('i');
Usart_Write('t');
Usart_Write('y');

while(!Usart_Data_Ready());

number1=Usart_Read();
number1=number1-0x30;


if (nnn=='j')
{
am=number1*500;
pay+=am;
}
if (nnn=='k')
{
am=number1*1000;
pay+=am;
}
if (nnn=='l')
{
am=number1*5000;
pay+=am;
}
if (nnn=='m')
{
am=number1*10000;
pay+=am;
}

if (pay>=sum)
{
balance=pay-sum;
Usart_Write('b');
Usart_Write('a');
Usart_Write('l');
Usart_Write('a');
Usart_Write('n');
Usart_Write('c');
Usart_Write('e');
Usart_Write(':');
NumtoChar(balance);
Usart_Write('s');
Usart_Write('e');
Usart_Write('n');
}

else
{
goto calculate;

}
}
Usart_Write('T');
Usart_Write('h');
Usart_Write('a');
Usart_Write('n');
Usart_Write('k');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
}
else if(PORTA.F4==1)
{ Usart_Write('\n');

} }
}

emylia87
Posts: 4
Joined: 26 Oct 2009 08:05

#2 Post by emylia87 » 26 Oct 2009 09:51

hye guys.its been days worked on this code.

so this is the correct one.

wish me luck for presentation! :P



unsigned char want,h,j,i,m;
unsigned int price,number,sum,k,pay,am,balance,number1,nnn;

void NumtoChar(unsigned int a)
{
unsigned char digit[3];
digit[0]=a/1000;
digit[0]+=0x30;
a=a%1000;
digit[1]=a/100;
digit[1]+=0x30;
a=a%100 ;
digit[2]=a/10;
digit[2]+=0x30;
a=a%10 ;
digit[3]=a ;
digit[3]+=0x30;
a=a ;
Usart_Write(digit[0]);
Usart_Write(digit[1]);
Usart_Write(digit[2]);
Usart_Write(digit[3]);
}

void main()
{
Usart_Init(9600);
TRISA.F4=1;

do{

if (PORTA.F4!=1) {

Usart_Write('W');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('e');
Usart_Write('\n');
Usart_Write('t');
Usart_Write('o');
Usart_Write('\n');
Usart_Write('p');
Usart_Write('r');
Usart_Write('e');
Usart_Write('p');
Usart_Write('a');
Usart_Write('i');
Usart_Write('d');
Usart_Write('\n');
Usart_Write('c');
Usart_Write('e');
Usart_Write('n');
Usart_Write('t');
Usart_Write('r');
Usart_Write('e');
Usart_Write('\n');
Usart_Write('a');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('b');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('c');
Usart_Write('=');
Usart_Write('m');
Usart_Write('a');
Usart_Write('x');
Usart_Write('i');
Usart_Write('s');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('d');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('e');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('f');
Usart_Write('=');
Usart_Write('d');
Usart_Write('i');
Usart_Write('g');
Usart_Write('i');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('g');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('1');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('h');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('3');
Usart_Write('0');
Usart_Write('\n');
Usart_Write('i');
Usart_Write('=');
Usart_Write('c');
Usart_Write('e');
Usart_Write('l');
Usart_Write('c');
Usart_Write('o');
Usart_Write('m');
Usart_Write('R');
Usart_Write('M');
Usart_Write('6');
Usart_Write('0');
Usart_Write('\n');
k=1;
sum=0;
price=0;

while(k==1)
{
Usart_Write('P');
Usart_Write('l');
Usart_Write('e');
Usart_Write('a');
Usart_Write('s');
Usart_Write('e');
Usart_Write(' ');
Usart_Write('e');
Usart_Write('n');
Usart_Write('t');
Usart_Write('e');
Usart_Write('r');
Usart_Write('\n');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('o');
Usart_Write('r');
Usart_Write('d');
Usart_Write('e');
Usart_Write('r');

while(!Usart_Data_Ready());
m=Usart_Read();

Usart_Write('W');
Usart_Write('h');
Usart_Write('a');
Usart_Write('t');
Usart_Write(' ');
Usart_Write('i');
Usart_Write('s');
Usart_Write('\n');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('q');
Usart_Write('u');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write('i');
Usart_Write('t');
Usart_Write('y');
Usart_Write('?');

while(!Usart_Data_Ready());
number=Usart_Read();
number=number-0x30;

if (m=='a')
{
price=number*1000;
sum+=price;
}
if (m=='b')
{
price=number*3000;
sum+=price;
}
if (m=='c')
{
price=number*6000;
sum+=price;
}
if (m=='d')
{
price=number*1000;
sum+=price;
}
if (m=='e')
{
price=number*3000;
sum+=price;
}
if (m=='f')
{
price=number*6000;
sum+=price;
}
if (m=='g')
{
price=number*1000;
sum+=price;
}
if (m=='h')
{
price=number*3000;
sum+=price;
}
if (m=='i')
{
price=number*6000;
sum+=price;
}



Usart_Write('D');
Usart_Write('o');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('\n');
Usart_Write('s');
Usart_Write('t');
Usart_Write('i');
Usart_Write('l');
Usart_Write('l');
Usart_Write(' ');
Usart_Write('w');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write('\n');
Usart_Write('t');
Usart_Write('o');
Usart_Write(' ');
Usart_Write('o');
Usart_Write('r');
Usart_Write('d');
Usart_Write('e');
Usart_Write('r');
Usart_Write('?');
Usart_Write('\n');
Usart_Write('[');
Usart_Write('1');
Usart_Write('=');
Usart_Write('y');
Usart_Write('e');
Usart_Write('s');
Usart_Write(',');
Usart_Write('\n');
Usart_Write('0');
Usart_Write('=');
Usart_Write('n');
Usart_Write('o');
Usart_Write(']');

while(!Usart_Data_Ready());

want=Usart_Read();

if(want=='0')
{
k=0;
}
}

Usart_Write('T');
Usart_Write('o');
Usart_Write('t');
Usart_Write('a');
Usart_Write('l');
NumtoChar(sum);
Usart_Write('s');
Usart_Write('e');
Usart_Write('n');


pay=0;
am=0;

calculate:


{
Usart_Write('i');
Usart_Write('n');
Usart_Write('s');
Usart_Write('e');
Usart_Write('r');
Usart_Write('t');
Usart_Write('\n');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
Usart_Write('r');
Usart_Write(' ');
Usart_Write('m');
Usart_Write('o');
Usart_Write('n');
Usart_Write('e');
Usart_Write('y');

while(!Usart_Data_Ready());

nnn=Usart_Read();

Usart_Write('q');
Usart_Write('u');
Usart_Write('a');
Usart_Write('n');
Usart_Write('t');
Usart_Write('i');
Usart_Write('t');
Usart_Write('y');

while(!Usart_Data_Ready());

number1=Usart_Read();
number1=number1-0x30;


if (nnn=='j')
{
am=number1*500;
pay+=am;
}
if (nnn=='k')
{
am=number1*1000;
pay+=am;
}
if (nnn=='l')
{
am=number1*5000;
pay+=am;
}
if (nnn=='m')
{
am=number1*10000;
pay+=am;
}

if (pay>=sum)
{
balance=pay-sum;
Usart_Write('b');
Usart_Write('a');
Usart_Write('l');
Usart_Write('a');
Usart_Write('n');
Usart_Write('c');
Usart_Write('e');
Usart_Write(':');
NumtoChar(balance);
Usart_Write('s');
Usart_Write('e');
Usart_Write('n');
}

else
{
goto calculate;

}

{

Usart_Write('T');
Usart_Write('h');
Usart_Write('a');
Usart_Write('n');
Usart_Write('k');
Usart_Write(' ');
Usart_Write('y');
Usart_Write('o');
Usart_Write('u');
}

}
}
}while(1);


}

User avatar
nikola.kostic
mikroElektronika team
Posts: 433
Joined: 11 Aug 2009 12:12

#3 Post by nikola.kostic » 26 Oct 2009 16:56

emylia87 wrote:hye guys.its been days worked on this code.

so this is the correct one.

wish me luck for presentation!
I wish you luck for presentation.

I tested quickly your code on easyPIC6 using PIC18F448 and it seems to be working.

emylia87
Posts: 4
Joined: 26 Oct 2009 08:05

#4 Post by emylia87 » 27 Oct 2009 07:21

thank you for the wish. :D

next month i will start with my final year project.
wondering if i could do something interesting with pic18f877a.
what do you think?

User avatar
nikola.kostic
mikroElektronika team
Posts: 433
Joined: 11 Aug 2009 12:12

#5 Post by nikola.kostic » 27 Oct 2009 13:29

emylia87 wrote: wondering if i could do something interesting with pic18f877a.
what do you think?
Do you think PIC16F877A? Depends on what do you mean by interesting.

By the way, please choose proper category when creating New Topic. Category you have chosen is mikroC PRO for PIC Wish List which is one where you can suggest improvements and what you would like to see in our mikroC PRO for PIC compiler.

Posts like one you created usually go into some General discussion category.

emylia87
Posts: 4
Joined: 26 Oct 2009 08:05

#6 Post by emylia87 » 28 Oct 2009 11:57

oh.i'm really sorry about that =(
newbie here.
next time i will be more concious while posting a topic.

MARIO
Posts: 978
Joined: 18 Aug 2008 22:13
Location: Brasil

#7 Post by MARIO » 01 Nov 2009 13:53

Hi,

you need to configure ADCON1=7, in order to turn portA ento digital I/O's.

BR

Post Reply

Return to “mikroC PRO for PIC Wish List”