Thông báo

Collapse
No announcement yet.

Cổng nối tiếp UART, các ngắt ngoài của 8051

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

  • #31
    I2C-Giao tiếp với DS1307

    hôm sau viết tiếp. Hôm nay mệt quá.
    Mọi thắc mắc của các bạn xin gửi về:thienphong39@gmail.com
    Thân ái!

    Comment


    • #32
      Các bác có thể giúp em chuyển đổi một biến mà vdk đã nhận sang mã ASCII để thằng Computer nó hiểu mà hiển thị ra không?

      Comment


      • #33
        Bạn muốn viết bằng gì ? Mình thí dụ cho bạn một đoạn bằng C nhé .
        Code:
        unsigned char Input_VDK; // Giá trị một chữ số trong số ma VDK nhận
        unsigned char Output_CPU; //Chữ số cần hiển thị lên CPU
        
        Output_CPU = Input_VDK + '0';
        Ví dụ: VDK nhan so 1 tức Input_VDK = 1 thì Output_CPU = '1" ngay. Còn việc để tách lấy hết chữ số trong biến mà VDK nhận rất đơn giản, thuật toán chia bình thường thôi. Bạn tự suy nghĩ nhé.

        Đề nghị bạn Thiên Phong viết code trong tag Code để cho mọi người dễ nhìn nhé. Như thế chương trình khi hiển thị lên sẽ sáng sủa hơn rất nhiều chứ không bị căn trái như thế nữa.

        Chúc bạn thành công.
        Technical sale at WT Microelectronics S'pore
        Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
        Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

        Comment


        • #34
          Mấy anh giúp em một đoạn C để điều chế độ rộng xung điều khiển 1 động cơ !
          ( VĐK 89s52)
          ------
          Qrio' qrio` qrioooooo!!!!>:D<

          Comment


          • #35
            xin huogn dan cu the về sử dụng phần mềm KeilC51

            mình đã đọc sử dụng KeilC51 nhưng khi chạy toàn báo lỗi ko the loa dtoi file *c xin tác giả của bài hướng dẫn giai thich dum mình vói:các buoc mình làm:
            vao pro>newpro>save lai ten nao do > vao file danh chương trình >save duôii .c dại loai giông nhu bac hai dã huogn dan nhung ko the chay duoc xin huogn dan voi

            Comment


            • #36
              Gui bac ThienPhong
              Tui muon hoi bac ve gui du lieu tu may tinh cho chay tren quang bao. Chay chu lap trinh san trong code thi tui lam duoc nhung neu nhan tu may tinh thi khong biet vdk giu lai du lieu tu buffer nhu the nao. Ma so byte lai khong biet truoc, ghep chung lai roi dua ra 1 port, thuat toan de chay chu co khac gi khong. Khi tu giao dien cua may tinh gui toi vdk thi vdk bao lai tui khong hieu cho lap trinh do de vdk bao lai. Mong bac chi giao

              Comment


              • #37
                mình đã đọc sử dụng KeilC51 nhưng khi chạy toàn báo lỗi ko the loa dtoi file *c xin tác giả của bài hướng dẫn giai thich dum mình vói:các buoc mình làm:
                vao pro>newpro>save lai ten nao do > vao file danh chương trình >save duôii .c dại loai giông nhu bac hai dã huogn dan nhung ko the chay duoc xin huogn dan voi
                bạn làm như sau để tạo 1 prọect mới:
                1/vào project --->create news project :đặt tên và chọn thư mục chứa nó -->ok ---> mục chọn con VDk làm việc :vd chọn atmel--->chon 89c51 -->ok --->no
                2/ Mở Project work space -->kick vào target1
                sau đó chọn file *.c mà bạn đã soạn thảo --->add
                vậy là bạn có thể mô phỏng và xuất ra file hex rùi đó.
                chúc bạn học tốt
                http://i167.photobucket.com/albums/u.../untitled1.jpg
                http://i167.photobucket.com/albums/u.../untitled2.jpg
                Học thầy không tày học bạn ...

                Comment


                • #38
                  Uart

                  Chào các bạn,

                  Xin cho hỏi bạn nào có phần cứng và phần mềm UART
                  sử dụng 4 wire (TxD, RxD, CTS, RTS). Sử dụng hết các pin của MAX232.
                  Vì thiết bị của mình không làm việc với 89S52 (chỉ sử dụng TxD và RxD theo
                  phương pháp thông dụng), gởi dữ liệu ra thiết bị thì thiết bị nhận được.
                  Nhưng thiết bị không gởi dữ liệu được tới 89 (hoặc 89 không nhận được)
                  Kết nối thiết bị với máy tính, sử dụng VB thì OK.

                  Xin cảm ơn.
                  More friends more foods

                  Comment


                  • #39
                    Nguyên văn bởi kimhuynguyen Xem bài viết
                    Chào các bạn,

                    Xin cho hỏi bạn nào có phần cứng và phần mềm UART
                    sử dụng 4 wire (TxD, RxD, CTS, RTS). Sử dụng hết các pin của MAX232.
                    Vì thiết bị của mình không làm việc với 89S52 (chỉ sử dụng TxD và RxD theo
                    phương pháp thông dụng), gởi dữ liệu ra thiết bị thì thiết bị nhận được.
                    Nhưng thiết bị không gởi dữ liệu được tới 89 (hoặc 89 không nhận được)
                    Kết nối thiết bị với máy tính, sử dụng VB thì OK.

                    Xin cảm ơn.
                    Thì chập cai RTS với CTS với nhau.
                    Nếu muốn xịn hơn nữa thì kiếm cuốn Cấu trúc máy tính mà đọc. Có hết đấy.
                    AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                    Xem thêm tại Online Store ---> Click here
                    Mob: 0982.083.106

                    Comment


                    • #40
                      Nguyên văn bởi VNarmy Xem bài viết
                      Thì chập cai RTS với CTS với nhau.
                      Nếu muốn xịn hơn nữa thì kiếm cuốn Cấu trúc máy tính mà đọc. Có hết đấy.
                      Xin cảm ơn VNArmy đã trả lời.
                      Đã thử rồi nhưng không thành công.
                      Mình đoán là CTS và RTS nhưng không biết có đủ không.
                      Vì cable nối sử dụng tất cả các đường TxD, RxD, CTS, RTS, DSR, DTR.
                      More friends more foods

                      Comment


                      • #41
                        NHAN1 EQU 40H
                        NHAN2 EQU 41H
                        NHAN3 EQU 42H
                        NHAN4 EQU 43H
                        DEM EQU 44H
                        MAIN:
                        MOV SCON,#52H ; kdong port noi tiep,che do 1
                        MOV TMOD,#20H ;bo dinh thoi 1 che do 2
                        MOV TH1,#0E6H ; 2400 on 24 MHz
                        SETB TR1
                        BAT_DAU_NHAN:
                        MOV DEM,#0
                        MOV R7,#4 ;so byte truyen di
                        MOV R0,#40H
                        WAIT1:
                        JNB RI,$
                        CLR RI
                        MOV A,SBUF
                        MOV @R0,A
                        INC R0
                        INC DEM
                        DJNZ R7,WAIT1
                        ;Nhan xong bat dau truyen
                        BAT_DAU_TRUYEN:
                        MOV DEM,#0
                        MOV R7,#4
                        MOV R0,#40H
                        WAIT2:
                        JNB TI,$
                        CLR TI
                        MOV @R0,A
                        MOV SBUF,A
                        INC R0
                        INC DEM
                        DJNZ R7,WAIT2

                        END.
                        Thiết kế, sửa chữa PLC,HMI, Servo,biến tần, máy tính công nghiệp
                        Lập trình ứng dụng VĐK, IC logic lập trình được (PAL,GAL, FPGA...)
                        DT:098 861 4347

                        Comment


                        • #42
                          Interrupt!!!!!!

                          Cho Mình Hỏi Tý! Có Phải Là Sau Khi Vdk Thực Hiện Xong Chương Trình Ngắt Nó Sẽ Quay Về Thực Hiện Tiếp Chương Trình Chính Không Ah? Vậy Mà Sao Trong Bài Ví Dụ Em Làm Thì 8051 Không Quay Lại Chương Trình Chính Khi đã Thực Hiện Phần Ngắt Xong! Khó Hiểu Quá Hà! Ngắt Ngoài Là 1 Button ở Chân Int0 (điều Khiển Led Thui Hà! Vậy Mà......) Mong Các Pác Giúp đỡ .thanks Ah!
                          Attached Files
                          SỰ HỌC LÀ MÃI MÃI......!!!!

                          Comment


                          • #43
                            Các pác cho em hỏi phát : em đang phải làm 1 bài tập :" Viết chương trình cho 8051 kết nói với Pc để in ra dòng chữ " Xin chào " , em mới chỉ viết được chương trình cho nó in liên tiếp ra màn hình thui chứ chưa biết cách cho nó in ra theo ý muốn của mình ! Bác nào giúp em cái ! Help me!
                            Attached Files
                            |

                            Comment


                            • #44
                              cho minh hoi,lam the nao xu dung xung ngoai cho 89..

                              Comment


                              • #45
                                Nguyên văn bởi ngohaibac Xem bài viết
                                Chương trình của bạn làm sao mà chạy được cơ chứ .

                                Thứ nhất,Vì ngắt Timer0 có vector ngắt ở địa chỉ 0x0B và trong Keil C nó định nghĩa thứ tự là 1 tức là phải khai báo hàm ngắt là void time0 () interrupt 1 chứ. Cái này bạn xem trong file regx51.h trong thư mục C51/INC/Atmel/ trong thư mục cài đặt nhé.
                                Code:
                                #define TF0_VECTOR	1  /* 0x0B Timer 0 */
                                Thứ hai, cái include đó k đúng, bạn thêm #include "regx52.h" vì con 89C52 được định nghĩa các địa chỉ giống với 89S52 mà.

                                Bạn sẽ không thấy bật cờ ngắt lên bởi vì ngay khi nhảy vào hàm ngắt thì cờ TF0 đã bị xóa rùi còn đâu. Nếu muốn xem cờ ngắt thì thử set IE0 = 0; thì sẽ thấy được cờ ngắt được bật khi có tràn ở Timer0.

                                Chương trình của bạn chỉ chạy 1 lần vào ngắt Timer0 rùi disable ngắt đó luôn, nếu nối Led vào chân P2_1 thì led nháy 1 phát rùi tắt luôn .

                                Bạn chú ý chương trình nên enable ngắt trước khi chạy Timer0, và nên xóa cờ ngắt trước để tạo thói quen tư duy và sẽ không gặp phải sai lầm nào cả.

                                Do vậy chương trình viết lại như sau:
                                Code:
                                #include <REGX51.H>
                                
                                void time0 () interrupt 1
                                {
                                	TR0 = 0;
                                	P2_1 = 0;
                                }
                                void main()
                                {
                                	TMOD = 0X02;
                                	TH0 = 0XDC;
                                	P2_1 = 1;
                                	IE = 0X82;
                                	TF0 = 0;
                                	TR0 = 1;
                                	while(1){
                                	};
                                		
                                }
                                Chúc bạn thành công.
                                Bắc ơi cho mình hỏi, IE bạn cho bằng 0x82 (1000 0010) chỉ cho phép ngắt toàn cục và ngắt ngoài 0 chứ có phải ngắt timer0 đâu, 0x81 mới đúng

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X