Thông báo

Collapse
No announcement yet.

Code giao tiếp máy tính qua COM

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

  • Code giao tiếp máy tính qua COM

    hi các PRO! gấp gấp gấp....hi
    Mình là gà vừa mới mày mò nghịch con 89c51,52
    Hiện nay mình đang làm đề tài thực hiện việc tự động mở cửa dùng con vđk này
    nhưng code cho vdk của mình còn kém quá. Bài của mình là khi mình truyền 1 kí tự 'A' qua cổng COM thì vđk sẽ nhận tín hiệu này và thực hiện mở cửa, nhờ các bạn check giúp mình xem code của mình như thế này tại sao lại không chạy được. Cảm ơn các PRO.

    #include<reg51.h>
    #include<stdio.h>
    #include<lcd4bit.h>
    unsigned char ch;
    void delay(int i)
    {while(i){i--;}}
    void delayms(int i)
    {
    int j,k;
    for(j=0;j<i;j++)
    for(k=0;k<1000;k++);
    }
    void SetupSerial()
    {
    SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */
    TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai. */
    TH1 = 0xfd ; /* toc do 9600 baud */
    TL1 = 0xfd ;
    TI = 0; /* co ngat nha^n.=0*/
    RI=1; /* co ngat' truye^n =0*/
    TR1 = 1; /* timer 1 run */
    ES =1; /* cho phep ngat noi tiep */
    }
    //===========================
    void nhan(void) interrupt 4 //Chuong trinh con dung ngat noi tiep
    {
    char ch;
    if(TI)
    {
    TI=0;
    ch='A';
    // ch=SBUF;
    SBUF=ch;
    }
    }

    void close()
    {
    int i;ch=0;
    for(i=0;i<10;i++)
    {
    P1=0x66;delay(1000);
    P1=0x33;delay(1000);
    P1=0x99;delay(1000);
    P1=0xCC;delay(1000);
    }
    }
    void open()
    {
    int i;ch=0;
    for(i=0;i<10;i++){
    P1=0x99;delay(1000);
    P1=0x33;delay(1000);
    P1=0x66;delay(1000);
    P1=0xCC;delay(1000);
    }
    }
    void main()
    {
    SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep
    EA = 1; //Cho phep ngat nhung chi? có ngat noi tiep duoc dung trong code nay
    LCD_Init();
    LCD_Position(0,0);
    LCD_String("waiting");
    ch=0;
    while(1)
    {
    if(ch == 65){ //88 la ma~ DEC cua chu*~ X
    open();
    delay(1000000);
    close();
    }
    TI=1;
    }
    }

  • #2
    có pro nào chỉ giúp mình với, huhuh

    Comment


    • #3
      cái này là basic mà các cao thủ ko chịu giúp sao? @@

      Comment


      • #4
        Nếu bạn mới làm quen thì nên viet code đơn gian thôi. Bạn nên viết chi riêng phân giao tiếp với PC - tach phần giao tiếp với LCD ra, như thế dễ gỡ rối hơn. Khi nào phần giao tiếp với PC tôt rồi thì bạn ghép thêm phần LCD vào.
        0912666017

        Comment


        • #5
          mình cần viết chương trình cho 8051, nhận 1 dữ liệu là chữ 'A' được truyền ra từ cổng COM và thực hiện mở 1 cánh cửa demo. bạn có thể chỉ giúp mình được không ?

          Cảm ơn nhiều.

          Comment


          • #6
            Thiết lập ngắt của bạn có vấn đề. bạn tắt cờ ngắt nhận đi ( RI = 0 ) và cho TI = 1 như thế thì theo bạn bjo ngắt truyền nối tiếp có thể xảy ra??
            p/s : bản có thể tham khảo code về uart của mình đây sẽ rõ hơn nhé.
            UART.zip

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X