PDA

View Full Version : truyen va nhan mot ki tu c#


hung_nguyen
13-12-2010, 03:53 PM
Minh đang làm cái này moi nguoi xem qua xem có ổn không. Ý tưởng là ấn nút ở chân B tạo ngắt ngoài xong sau đó truyền 1 số và hiển thị nên texbox, wait 10s và wait 20s là thời gian chờ đợi để led đếm ngược 10s và 20s, các nút còn lại từ person 1 đến 5 khi ấn thì sẽ gửi kí tự xuống vdk thực hiện chương trình ngắt. Có một số vấn đề sau:
+ Việc sử dụng kiểu dữ liệu của tớ ở chương trình cshap vẫn chưa ổn. dạng char và string sau đó gửi số lên máy tính và nhận hiển thị như thế chưa đúng.
+ Tớ dùng cable chuyển usb và rs232 đã cài driver có cần phải thiết lập gì không?
+ Code của vdk nhận và truyền kí tự như vậy thế nào?

code vdk

#include "MAIN.h"
#include <defs_16f877A.h>

#define button1 RB4
#define button2 RB5
#define button3 RB6
#define button4 RB7
#define button5 RB0

#define led1 RC0
#define led2 RC1
#define led3 RC2
#define led4 RC3
#define led5 RC5
#define chuong RC4
#use rs232(baud=9600,parity=n,xmit=pin_C6,rcv=pin_C7)
int8 const d[10]={0x40 0x79 0x24 0x30 0x19 0x12 0x02 0x78 0x00 0x10};
int8 hc,hdv;
int16 count=0;
int16 sec;
int16 dsec;
int8 mode=0;
int dem=0;
int chay=1;
char nhan;

#INT_RDA
void ngat_UART()
{
nhan=getc();
if(nhan=="1"){chay=0;}
if(nhan=="2"){chay=0;}
if(nhan=="3"){chay=0;}
if(nhan=="4"){chay=0;}
if(nhan=="5"){chay=0;}
if(nhan=="6"){chay=0;}
if(nhan=="7"){chay=0;}
}
#INT_RB //ngat ngoai
void ngat_RB()
{
if(button1==0){mode=1;}
if(button2==0){mode=2;}
if(button3==0){mode=3;}
if(button4==0){mode=4;}

}
#INT_EXT
void ngatngoai()
{
if(button5==0){mode=5;}
}
#INT_RTCC
void ngat_timer0()
{
set_timer0(190);
++count;
if(count==2976)
{count=0;dsec++;}
if(dsec==10)
{dsec=0;sec--;}
if(sec==0)
{disable_interrupts(INT_RTCC);}
}

void tach(int16 variable)
{
hdv = variable%10;
hc = variable/10;
}

//void program1();
//void program2();
//void program3();
//void program4();
//void program5();
void program1()
{
if(chay==1)
{
printf ("%u",1);
led1=0;chuong=0;
delay_ms(1200);
chuong=1;delay_ms(1000);led1=1;
}
}
void program2()
{
if(chay==1)
{
printf("%u",2);
led2=0;chuong=0;
delay_ms(1200);
chuong=1;delay_ms(1000);led2=1;
}
}
void program3()
{
if(chay==1)
{
printf("%u",3);
led3=0;chuong=0;
delay_ms(1200);
chuong=1;delay_ms(1000);led3=1;
}
}
void program4()
{
if(chay==1)
{
printf("%u",4);
led4=0;chuong=0;
delay_ms(1200);
chuong=1;delay_ms(1000);led4=1;
}
}
void program5()
{
if(chay==1)
{
printf("%u",5);
led5=0;chuong=0;
delay_ms(1200);
chuong=1;delay_ms(1000);led5=1;
}
}
void demnguoc()
{
if(chay==1)
{
sec=20;
enable_interrupts(GLOBAL);
enable_interrupts(INT_RTCC);
set_timer0(190);

while(1)
{
tach(sec);
PORTA=0x02;
PORTD=d[hdv];
delay_ms(1);

PORTA=0x01;
PORTD=d[hc];
delay_ms(1);
if(sec==0)
{
dem++;
if(dem==99) {dem=0;PORTA=0xff;break;}
}
}
delay_ms(1000);
PORTA=0;
PORTD=0xff;
}
}
void demnguoc1()
{
if(chay==1)
{
sec=10;
enable_interrupts(GLOBAL);
enable_interrupts(INT_RTCC);
set_timer0(190);

while(1)
{
tach(sec);
PORTA=0x02;
PORTD=d[hdv];
delay_ms(1);

PORTA=0x01;
PORTD=d[hc];
delay_ms(1);
if(sec==0)
{
dem++;
if(dem==99) {dem=0;PORTA=0xff;break;}
}
}
delay_ms(1000);
PORTA=0;
PORTD=0xff;
}
}
void main()
{
setup();
PORTB=0b11111111;
// TODO: USER CODE!!
enable_interrupts(GLOBAL);/////GIE=1;PEIE=1;
ENABLE_INTERRUPTS(INT_RDA);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(INT_RB);
enable_interrupts(INT_EXT);
ext_int_edge(H_TO_L);
set_timer0(190);
PORTD=0xff;
PORTA=0;
PORTE=0;
PORTC=0xff;
while(1)
{
switch (mode)
{
case 1: {program1();mode=0;break;}
case 2: {program2();mode=0;break;}
case 3: {program3();mode=0;break;}
case 4: {program4();mode=0;break;}
case 5: {program5();mode=0;break;}
case 6: {demnguoc();mode=0;break;}
case 7: {demnguoc1();mode=0;break;}
}
}
}
//end//

duoi day la file viet tren cshap

hung_nguyen
16-12-2010, 03:00 PM
khong ai tra loi nhi,minh dang can truyen nhan mot ki tu tu may tinh xuong vdk ma mac qua chua chay cho chieu nguoc lai thi chay roi.