Thông báo

Collapse
No announcement yet.

Help 8051 nhận tín hiệu từ pc bằng proteus

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Help 8051 nhận tín hiệu từ pc bằng proteus

    em chỉ mới tập tọe vô nên có gì mong các bác bỏ waClick image for larger version

Name:	nhanth.png
Views:	1
Size:	98.2 KB
ID:	1421868
    các bác cho em hỏi cái: em mô phỏng mạch bằng proteus bài nhận tín hiệu từ pc để tắt led trên 8051: khi đấu từ cổng COMPIM wa max232 rồi tới vdk thì nó hok nhận.nhưng khi đấu trực tiếp từ cổng COM vô vdk thì nó lại chạy ?_?.
    em kèm theo hình proteus mấy bác coi giúp
    đây là code keilc ạ:
    #include<AT89x51.h>
    char c;
    main()
    {

    TMOD=0x20;
    TH1=0xFD;
    SCON=0x50;
    TR1=1;
    while(1)
    {
    while(RI==1)
    {
    c=SBUF;
    RI=0;
    }
    switch(c)
    { case '1':
    P2=0xFE;
    break;
    case '2':
    P2=0xFC;
    break;
    case '3':
    P2=0xF8;
    break;
    case '4':
    P2=0xF0;
    break;
    case '5':
    P2=0xE0;
    break;
    case '6':
    P2=0xC0;
    break;
    case '7':
    P2=0x80;
    break;
    case '8':
    P2=0x00;
    break;
    default:
    P2=0xFF;
    break;
    }
    }
    }

  • #2
    Vậy thì chúc mừng bạn. Làm mạch thật đi có lẽ sẽ chạy đó.. Đừng tin quá nhiều mô phỏng. Còn muốn ép thằng mô phỏng nó chạy thì bạn thử làm theo cái này nhé.
    [Học lập trình 8051] Bài 6: Truyền thông nối tiếp với 8051 ~ Điện Tử Máy Tính

    Comment


    • #3
      em làm theo bài đó ak bác :v nhưng mà tháo rs232 ra mới chạy. bài truyền thì em làm theo y chang ra lun

      Comment


      • #4
        bạn ơi, mình đang làm thử 1 bài là 8051 điều khiển 12 nút bấm. khi nút bấm đóng thì sẽ truyền 1 chuỗi lên cho máy tính. và khi máy tính gửi tín hiệu qui định sẵn thì nó sẽ tắt nút bấm tương ứng. mình làm đc phần truyền nhưng tới khi bấm nhận tín hiệu thì nó chỉ thực hiện được 1 lệnh đó rồi đóng lun ko cho truyền nhận gì nữa. bạn xem giúp mình. đây là code :
        #include<AT89x51.h>
        #include<string.h>
        #define CB1a P0_0
        #define CB1 P0_1
        #define CB2a P0_2
        #define CB2 P0_3
        #define CB3a P0_4
        #define CB3 P0_5
        #define CB4a P0_6
        #define CB4 P0_7
        #define CB5a P1_0
        #define CB5 P1_1
        #define CB6a P1_2
        #define CB6 P1_3
        #define CB7a P1_4
        #define CB7 P1_5
        #define CB8a P1_6
        #define CB8 P1_7
        #define CB9a P2_0
        #define CB9 P2_1
        #define CB10a P2_2
        #define CB10 P2_3
        #define CB11a P2_4
        #define CB11 P2_5
        #define CB12a P2_6
        #define CB12 P2_7

        void send(unsigned char a);
        void sendchuoi(char *a);
        unsigned char temp; // bien tam luu du lieu nhan ve
        void send(unsigned char a) // ham gui 1 ky tu
        {
        SBUF=a; //ghi byte a vao SBUF
        while(TI==0){} //doi truyen xong du lieu co ti bat len 1
        TI=0; //xoa
        }
        void sendchuoi(char *a)
        { int i,n;
        n=strlen(a);
        for(i=0;i<n;i++)
        {
        send(a[i]);
        }
        }
        void main(void) //Chuong trình chính
        {
        TMOD=0x20; //timer1 che do 2
        TH1=0xFD; // toc do 9600
        SCON=0x50; //che do 1 cho phep nhan
        TR1=1; //khoi dong Timer1
        IE=0x90; //cho phép ngat truyen thong
        P1=0xAA;
        P2=0xAA;
        while(1)
        {
        if(CB1a == 1)
        {
        while(CB1a);
        sendchuoi("phong 1 trai phep");
        send(10);
        }
        if(CB2a == 1)
        {
        while(CB2a);
        sendchuoi("phong 2 trai phep");
        send(10);}
        if(CB3a == 1)
        {
        while(CB3a);
        sendchuoi("phong 3 trai phep");
        send(10);}
        if(CB4a == 1)
        {
        while(CB4a);
        sendchuoi("phong 4 trai phep");
        send(10);}
        if(CB5 == 0)
        {
        while(!CB5);
        sendchuoi("phong 5 trai phep");
        send(10);
        }
        if(CB6 == 0)
        {
        while(!CB6);
        sendchuoi("phong 6 trai phep");
        send(10);}
        if(CB7 == 0)
        {
        while(!CB7);
        sendchuoi("phong 7 trai phep");
        send(10);}
        if(CB8 == 0)
        {
        while(!CB8);
        sendchuoi("phong 8 trai phep");
        send(10);}
        if(CB9 == 0)
        {
        while(!CB9);
        sendchuoi("phong 9 trai phep");
        send(10);}
        if(CB10 == 0)
        {
        while(!CB10);
        sendchuoi("phong 10 trai phep");
        send(10);}
        if(CB11 == 0)
        {
        while(!CB11);
        sendchuoi("phong 11 trai phep");
        send(10);}
        if(CB12 == 0)
        {
        while(!CB12);
        sendchuoi("phong 12 trai phep");
        send(10);}
        if(temp=='5')
        {CB5=0;}
        if(temp=='6')
        {CB6=0;}
        if(temp=='7')
        {CB7=0;}
        if(temp=='8')
        {CB8=0;}
        if(temp=='9')
        {CB9=0;}
        if(temp=='a')
        {CB10=0;}
        if(temp=='b')
        {CB11=0;}
        if(temp=='c')
        {CB12=0;}
        }
        }
        void nhandulieu(void) interrupt 4 // khai bao ngat truyen thong
        {
        if(RI==1) // kiem tra xem co phai ngat nhan hay khong
        {
        temp=SBUF; // lây du lieu luu vao bien temp
        RI=0; //xóa co nhan chuyen bi cho nhan du lieu tiep theo
        }


        }

        Comment

        Về tác giả

        Collapse

        riseofdark Tìm hiểu thêm về riseofdark

        Bài viết mới nhất

        Collapse

        Đang tải...
        X