Thông báo

Collapse
No announcement yet.

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

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

  • 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?

  • #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


    • #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


      • #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


        • #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


          • #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


            • #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


              • #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


                • #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


                  • #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


                    • #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


                      • #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


                        • #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


                          • #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...
                            X