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?
Giao tiếp với 8051 qua cổng rs232
Collapse
X
-
Tags: None
-
Sao không lặp công việc đó 10 lần nhỉ
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!Code:mov r3,#30h loop: jnb ri,$ clr ri mov @r3,sbuf dec r3 cjne r3,#3bh,loop jmp [.....] ....
-
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
-
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
-
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
-
-
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
-
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
-
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
-
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
-
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
Bài viết mới nhất
Collapse
-
bởi bqvietĐám UPS cửa cuốn đời cổ vẫn chạy 1 biến áp sắt từ vừa để hạ áp điện lưới nạp bình điện, vừa để kích áp bình điện thành sóng vuông đầu ra đấy thôi. Kiểu tiết kiệm này đã có từ mấy chục năm nay. Sơ đồ đại loại như link
https://www.homemade-circuits.com/si...rchargerchang/...-
Channel: Nguồn!
Hôm qua, 16:49 -
-
bởi dinhthuong92Không biết nó thiết kế kiểu gì mà dùng chung được cuộn cảm L cho cả mạch Buck hạ áp để sạc pin và Boost nâng áp cho Led. Muốn vẽ mạch để xem mà nhiều linh kiện quá, e không kham nổi!
Bác nào có sơ đồ xin up lên cho mọi người tham khảo nhé!...-
Channel: Nguồn!
04-09-2026, 11:09 -
-
-
Trả lời cho TCL - Tập hợp các vấn đề về màn hình màu TCLbởi dtvankhoeBác nào có file rom này cho em xin em cảm ơn ạ TCL L43S6500 – TPD.RT2841.PB772
-
Channel: Điện tử truyền hình
30-08-2026, 21:08 -

Comment