anh ơi ! em đã thử mấy cái hàm đó và thấy nó hiện đúng ! khi chưa gửi kí tự từ trên visual . ví dụ em khai báo :
char str[]="12";
int16 y;
y=atol(str);
hien(y);
thì nó hiện đúng .
Nhưng khi em gửi từ trên máy tính xuống thì nó lại hiện sai . chương trình của em như sau :
Code:
#include <16f877a.h>
#include <def_877a.h>
#include <ctype.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay (clock=4000000) // defind crystal = 4MHz
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <string.h>
#include <stdlib.h>
int16 MAP[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 t[2]={0x01,0x02};
void hien(int16 x)
{
int8 i;
int8 a[2]={0};
a[0]=x%10;
a[1]=x/10;
for(i=0;i<2;i++)
{
porta=t[i];
portd=MAP[(a[i])];
delay_ms(2);
}
}
void main()
{
char k[]="12";
int16 y;
trisd=0x00;
trisa=0x00;
porta=0x00;
portd=0x00;
while(true)
{
if(kbhit())
{
gets(k);
puts(k);
y=atol(k);
}
hien(y);
}
}
Anh xem hộ em gửi như vậy thì có vấn đề gì không ? cảm ơn anh trước nhé !