Giao tiếp với 8051 qua cổng rs232

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • mashima0905
    Thành viên chính thức
    • Sep 2009
    • 92

    #1

    Giao tiếp với 8051 qua cổng rs232

    Mình đã đọc phần nói về giao tiếp giữa PC với 8051 qua UART.Mình đã viết đựoc 1 chương trình gửi 1byte từ PC qua 8051.Giờ mình muốn phát không phải là 1 byte mà 1 chuỗi khoảng 10byte vào 8051 thì phải làm như thế nào?
  • tornado1990
    Thành viên mới
    • Nov 2009
    • 1

    #2
    Sao không lặp công việc đó 10 lần nhỉ
    Code:
    	mov	r3,#30h
    loop:	jnb	ri,$
    	clr	ri
    	mov	@r3,sbuf
    	dec	r3
    	cjne	r3,#3bh,loop
    	jmp	[.....]
    ....
    nhận 10 bytes từ 'đâu đó' lưu vào vùng RAM từ 30h->3ah, rất đơn giản phải hông, chú ý bố trí vùng nhớ sao cho phù hợp . Mới bị một "vố" khi dùng serial interrupt mà setb ti từ đầu chương trình, hậu quả thế nào thì biết rồi hehe, còn bit ri thì cứ vô tư mà xài!

    Comment

    • mashima0905
      Thành viên chính thức
      • Sep 2009
      • 92

      #3
      Cám ơn bạn.Giờ đặt trường hợp là không biết rõ số byte nhận thì chương trình sẽ phải sửa như thế nào nhỉ?
      Còn về việc serial interrupt mà lúc đầu setb ti là để ép nó vào ngắt ngay từ đầu mà.Trong đoạn chương trình ngắt mình lại clr ti là được mà bạn??

      Comment

      • Zz_Bi_zZ
        Thành viên tích cực
        • Nov 2007
        • 766

        #4
        Thế tại sao PC k phát theo frame nhẩy ? chẳng hạn : byte Start + .. byte dữ liệu + byte STOP . Vậy khi nào VDK nhận đc byte START và byte STOP thì nó lọc lấy các byte dữ liệu ở giữa .

        Comment

        • mashima0905
          Thành viên chính thức
          • Sep 2009
          • 92

          #5
          Thực ra là mình muốn nhận dữ liệu liên tục từ 1 module rf.nên ko thể quy đinh byte start , byte stop được...hix

          Comment

          • OpenDoor
            Thành viên tích cực
            • Apr 2011
            • 251

            #6
            Ko biết bạn dùng module RF nào vậy ? Mình thấy có loại module RF có UART, có loại chỉ là mạch dao động cao tần, loại này trên mạch đưa ra 3 chân GND, TxD, Vcc nhưng được cái giá nó rẻ (khoảng 15K). Loại có hỗ trợ UART thì sử dụng đơn giản, loại còn lại thì phải lập trình thêm 1 tí, code thì cũng có sẵn trong diễn đàn.

            Comment

            • mashima0905
              Thành viên chính thức
              • Sep 2009
              • 92

              #7
              Mình dùng module RF là loại hỗ trợ UART.Code sẵn trên diễn đàn là ở chỗ nào vậy bạn.

              Comment

              • mashima0905
                Thành viên chính thức
                • Sep 2009
                • 92

                #8
                Không bạn nào có giải pháp khác sao...Về vấn đề kí tự kết thúc truyền thì mình đã biết đựoc.Nhưng không biết làm sao để có thể nhận liên tục.Tức là nhận hết 1 chuỗi byte.Xử lý xong lại tiếp tục chờ tiếp mỗi 1 chuỗi byte tiếp theo

                Comment

                • bgdientu
                  Thành viên tích cực
                  • Feb 2011
                  • 147

                  #9
                  chào các bác.em cũng đang làm 1 bài như thế này.em đã thử làm như thế này nhưng vẫn không được
                  em cho cái chương trình nhận 1 kí tự vào 1 vòng lặp và ghi liên tiếp vòng lặp đó vào 1 mảng.sau đó ghi chuỗi vừa nhập lên LCD nhưng không được.các bác giúp em với
                  void ctngat(void)interrupt 4
                  {
                  for(j=0;j<=30;j++)
                  {
                  M[j]=_getkey();
                  }
                  write_data(M[j]);//ch? này em thay bang write_string nhung lai bao loi
                  delay_us(10);
                  bài này em hiển thị lên LCD

                  Comment

                  • hoatrenda
                    Thành viên mới
                    • Apr 2011
                    • 4

                    #10
                    Giao tiep 8051 voi rs232

                    Em lập trình giao tiếp may tính điều khiển led đơn nhưng sao em làm hoài mà không được
                    Em post bài cho mọi người mọi người giúp em với

                    PHP Code:
                    ORG 00H
                         LJMP MAIN
                     ORG 23H
                         LJMP SERIA
                     ORG 03H
                                MAIN: 
                                MOV P2,#0
                                MOV P1,#0
                                MOV P0,#0
                                MOV TMOD,#20H
                                MOV TH1,#0FDH  
                                MOV SCON,#50H
                                SETB TR1
                    BACK:  
                                
                                CALL SOSANH
                                JMP BACK
                    
                    ; TRINH PHUC VU NGAT
                      ORG 150H
                    SERIA: 
                                JB TI,TRANS
                                MOV A,SBUF 
                                CLR RI
                                RETI
                    TRANS:
                                CLR TI
                                RETI   
                    
                    ;CHUONG TRINH SO SANH
                     SOSANH:  
                              CJNE A,#'A',NH0
                             call     choptat
                    NH0:  CJNE A,#'B',NH1
                             call sangdan_tu
                    
                    NH1:   CJNE A,#'C',NH2
                            call    tatdan_tu
                    
                    NH2:   CJNE A,#'D',NH3
                            call    sangchay_tu
                    
                    NH3:   CJNE A,#'E',NH4
                            call    tatchay_tu
                    
                    NH4:    CJNE A,#'F',NH5
                        call    sangchay_tu
                    
                    NH5:    CJNE A,#'G',NH6
                        call sangdan_tu
                    
                    NH6:     CJNE A,#'H',NH7
                                  call sangdan_tu
                    
                    NH7:    MOV A,#00H    
                             RET
                    
                           ;//////////////////
                           choptat:
                                                       mov p0,#0
                                                       mov p2,#0
                                                       call delay
                                                       mov p0,#0ffh
                                                       mov p2,#00111111b
                                                       call delay
                                                       ret
                            sangdan_tu:
                                                       mov p0,#0
                                                       mov p2,#0
                                                       call delay
                                              nhan1:   setb c
                                                       mov a,p1
                                                       rlc a
                                                       mov p1,a
                                                       call delay
                                                       jnc nhan1
                                                       ret
                             tatdan_tu:
                                                      
                                                        mov p0,#0ffh         
                                                        mov p2,#00111111b
                                                       call delay
                                               nhan2:   clr c                                       
                                                        mov a,p0
                                                        rlc a
                                                        mov p0,a
                                                      
                                                        call delay                                   
                                                        jc nhan2
                                                        
                                                        ret
                            sangchay_tu:
                                                       
                                                       mov p0,#0
                                                       mov p2,#0
                                                       call delay
                                                       setb c
                                             nhan3:    mov a,p0
                                                       rlc a
                                                       mov p0,a
                                                       call delay
                                                       jnc nhan3                                             
                                                       clr c
                                             nhan4:    
                                                       mov a,p0
                                                       rrc a
                                                       mov p0,a
                                                       call delay
                                                       jnc nhan4
                                                       ret
                            tatchay_tu:
                                                       mov p0,#0ffh
                                                       mov p2,#0ffh
                                                       call delay
                                                       clr c
                                             nhan5:    mov a,p0
                                                       rlc a
                                                       mov p0,a
                                                       
                                                       call delay
                                                       jc nhan5
                                                       
                                                      mov p0,#0ffh
                                                      mov p2,#11101111b
                                                      setb c 
                                                       
                                             nhan6:   
                                                       mov a,p0
                                                       rrc a
                                                       mov p0,a
                                                       call delay
                                                       jc nhan6
                                                       ret
                    
                            ;/////////////
                            delay:
                             mov r1,30h
                            hoan2:mov r2,#10
                            hoan1:mov r3,#200
                            djnz r3,$
                            djnz r2,hoan1
                            djnz r1,hoan2
                            ret     
                    
                    END 
                    

                    Comment

                    • tnt288
                      Thành viên tích cực
                      • Feb 2009
                      • 323

                      #11
                      ASM thì mình không biết. Nếu bạn có hứng thú với C+ VB6 thì PM mình giúp cho. Vừa nghiên cứu xong, cũng dùng được cho những ứng dụng cơ bản.
                      Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

                      Comment

                      • hoatrenda
                        Thành viên mới
                        • Apr 2011
                        • 4

                        #12
                        Giao tiếp máy tinh 8051 qua rs232

                        Thank bạn nhá. Bạn cho mình nick yahoo được không cho mình tiện liên lạc.............. nick yahoo của mình là duchoadt_hn@yahoo.com

                        Comment

                        • tnt288
                          Thành viên tích cực
                          • Feb 2009
                          • 323

                          #13
                          hihi, quên
                          yahoo: xmentimtinhyeu
                          cùng giao lưu học hỏi nha.
                          Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

                          Comment

                          • mashima0905
                            Thành viên chính thức
                            • Sep 2009
                            • 92

                            #14
                            Bữa giờ mày mò mới làm được nhiều đây.Bạn nào vào giúp mình tiếp nữa.Mô phỏng thì mình có đính kèm.Mình mới chỉ dùng ngắt nối tiếp để truyền 1 chuỗi byte kết thúc bởi mã " 30h" vào MASTER (lưu bắt đầu từ địa chỉ ram 30h)theo uart, sau đó từ master gửi qua slave ( lưu bắt đầu ở địa chỉ ram 50h) dùng ngắt ngoài 0.Giờ mình không biết làm sao để có thể xuất giá trị nhận được ở Slave ra lại UART của slave nhỉ ???
                            Mong các bạn giúp mình

                            Link mô phỏng và code:
                            http://www.mediafire.com/?o2ywlo97gfprorf

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...