View Single Post
Old 13-12-2010, 03:53 PM   #1
hung_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Aug 2008
Bài gửi: 6
:
truyen va nhan mot ki tu c#

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
Code:
#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
File Kèm Theo
File Type: rar WindowsApplication8.rar (35.5 KB, 117 lần tải)

thay đổi nội dung bởi: phamminhtuan, 13-12-2010 lúc 05:04 PM. Lý do: Chú ý, để code trong tag [code] ... [/code]
hung_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn