Thông báo

Collapse
No announcement yet.

HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]

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

  • @tuanphan_ka mấy cái warning thì không sao(những hàm mình viết mà không gọi-UNCALL SEGMENT)
    Còn những lỗi bạn có thể nhìn thấy rõ chữ:ADDRESS SPACE OVERFLOW, nghĩa là vượt quá bộ nhớ cho phép của nó. Theo mình đoán trong chương trình của bạn chắc chắn có nhiểu bảng DATA, bạn nên thêm chữ code trước khai báo. VD: unsigned char data_display[300]; bạn viết lại là: code unsigned char data_display[300]; . Mục đích là chuyển chỗ lưu bảng data_display từ vùng DATA sang vùng CODE(8051 theo kiến trúc Harvert- đây là một nhược điểm của kiến trúc này so với kiến trúc Vonnayman). Bạn thử xem !.

    @jimmy_vu Chương trình của bạn mắc nhiều lỗi cơ bản trong C, đọc mà không muốn sửa.
    Có một lỗi đáng lưu ý: khi khai báo hàm ngắt timer chữ interrupt phải viết cách ra khỏi số. VD void timer1_isr () interrupt 2 chứ không phải là void timer1_isr() interrupt2. Các lỗi khác hầu hết là quên không có dấu ; ...

    Comment


    • @ Manhkha thanks bạn nha mình sữa dc rùi !
      cho hỏi có ai bít viết theo c cho led sáng dồn hok z chỉ cho minh với

      Comment


      • Cho mình hỏi, làm sao ghi giá trị vào thanh ghi PC (Program Counter) của vdk, khi dùng Keil C. ?

        Comment


        • em mới học về lập trình nên chưa hiểu mấy mà thầy đã bắt làm đề tài về lập trình rùi nên post đề tài này lên nhờ mọi người giúp em với

          Đề bài:
          Sử dụng ic 8501 tạo mạch khóa số thảo mãn các yêu cầu sau:
          Nhập vào bốn mã nếu đúng thì phát tín hiệu mở khóa
          Nhập sai 3 lần phát tín hiệu báo trộm
          Ý tưởng thực hiện:
          Dùng chương trình quét bàn phím scankey để nhập 4 mã vào
          Cho phép người nhập 4 mã cùng lúc(được cất trong ngăn xếp)
          Có tín hiệu báo khi người nhập đủ 4 mã
          Nhập sai 3 lần có tín hiệu báo
          Nhập đúng mã số,kích xung mở khóa

          Mạch được kết nối:
          Led-d1 sáng: tín hiệu mở khóa được kích hoạt

          Mã nhập vào là 6009

          Mạch được thiết kế sao cho người nhập chỉ nhập mã vào 1 lần là 4 số
          Hết 4 số lần 1,sẽ chuyển sang những lần kế tiếp và chỉ được nhập 3 lần
          Mã đúng là 6009
          Led –d3 báo đã nhập đủ 4 mã số:

          Led d3 được kích hoạt,báo cho người sử dụng biết đã nhập đủ 4 mã số
          Sau khoảng thời gian trễ là 500 ms led d3 sẽ tắt,và được sử dụng cho các lần kế tiếp
          Điều này có tác dụng trong trường hợp người sử dụng không biết là mình đã nhập mấy mã,chu kỳ 4 mã nhập ,led-d3 sáng giúp cho khóa mã tiện ích hơn

          Chức năng chống trộm của mạch:

          Trong trường hợp có người lạ không biết mã số,cố ý mở khóa,sau 3 lần nhập mã không đúng,thì:
          Chân p2.1 được kích cạnh xuống,kích hoạt thiết bị báo trộm(trong mạch để cho đơn giản ta sử dụng led-d2)
          Trong main_code ta sử dụng led-d2 với tính chất mô phỏng cho chức năng này,led-d2 sáng khi nhập sai 3 lần
          Theo nguyên tắc ta phai reset lại mạch thì chuông báo động mới hết kêu,nhưng ở phần mô phỏng này ta cho thời gian trễ là 5s ,led-d2 sẽ tắt,rồi quay về chương trình chính.Cho lần thử sau
          em tìm thấy cái code này trên mạng nhưng nạp vào con ĂT9C51 thì nó không chạy chắc là code lỗi mong mọi người giúp đỡ nhá
          code:


          main code:
          org 0000h
          start:
          ljmp main; lap lai
          scan:
          mov p1,#0f0h;
          mov a,p1;
          cjne a,#0f0h,scan; neu A khac 0f0 scan
          scanner:
          mov a,#0feh;
          1up:
          mov r0,a;
          mov p1,a;
          mov a,p1;
          mov r1,a;
          orl a,#0fh; hop ma phim
          cjne a,#0ffh,cnvrt; neu A khac 0ff cnvrt
          sjmp scanner;
          cnvrt:
          mov a,r1;
          mov r3,#0;
          clup:
          jib acc.0,cnvrt2;
          rr a;
          mov r2,a;
          mov a,r3;
          add a,#4;
          mov r3,a;
          mov a,r2;
          sjmp c1up;
          cnvrt2:
          mov a,r1;
          swap a; quay ma phim
          ret; ket thuc chuong trinh con
          main:
          mov r5,#3;
          init:
          mov r7,#4;
          nhapso:
          acall scan;
          mov r0,a;
          push 0; cat vao stack
          djnz r7,nhapso; dem r7
          mov r1,#0feh;
          mov p2,r1;
          acall delay_500ms;
          pop 1; lay ra khoi stack
          pop 2;
          pop 3;
          pop 4;
          cjne r1,#0d7h,sorry;
          cjne r2,#0beh,sorry;
          cjne r3,#0beh,sorry;
          cjne r4,#0dbh,sorry;
          clr p3.5;
          sorry:
          acall delay_500ms;
          setb p2.0;
          djnz r5,init;
          clr p2.1;

          acall delay_5s;
          setb p2.1;
          sjmp main;
          delay_5s:
          mov tmod,#10h;
          mov th1,#high(-50000);
          mov tl1,#low(-50000);
          mov r4,#100;
          again:
          setb tr1;
          jnb tf1,$;
          clr tr1;
          clr tf1;
          djnz r4,again;
          ret;
          delay_500ms:
          mov tmod,#10h;
          mov th1,#high(-50000);
          mov tl1,#low(-50000);
          mov r4,#10;
          again1:
          setb tr1;
          jnb tf1,$;
          clr tr1;
          clr tf1;
          djnz r4,again1;
          ret;
          end.


          em dùng phần mềm asm 51 để kiểm tra thì thấy nó báo lỗi nhiều quá, chẳng hiểu là lỗi gì nữa nên post code này lên mong cac bạn giúp đỡ nhé (swả code giúp tớ or có thể tạo 1 code mới phù hợp với đề tài của tớ cũng được. cảm ơn mọi người trc nhá




          Comment


          • nhờ mọi người sửa lại code giúp tớ với tớ đang cần gấp
            pm:vanduoc1109@gmail.com
            thankssssssssssssssssss you

            Comment


            • Nguyên văn bởi TheHouse Xem bài viết
              Cho mình hỏi, làm sao ghi giá trị vào thanh ghi PC (Program Counter) của vdk, khi dùng Keil C. ?
              Trong thư viện đã hỗ trợ rồi. Bạn chỉ cần viết PC = <value>; là được.

              Comment


              • may anh cho em hoi chuc nang,cau tao cua con IC 14040, IC 5101L. do em moi hoc hoc t huc hanh vi mach so nen chua biet gi

                Comment


                • các bác có ai có giáo trình các mã lệnh hexa dùng trong vi điều khiển không
                  vidu
                  TH0=0x3c;
                  TL0=0xaf;
                  IE=0x84,85
                  nhiều lúc đọc mà em chẳng hiểu gì cả
                  vì em chưa hiểu bản chất của nó lắm
                  bác nào biết bảo em với

                  Comment


                  • Nguyên văn bởi dcn_pro9x Xem bài viết
                    các bác có ai có giáo trình các mã lệnh hexa dùng trong vi điều khiển không
                    vidu
                    TH0=0x3c;
                    TL0=0xaf;
                    IE=0x84,85
                    nhiều lúc đọc mà em chẳng hiểu gì cả
                    vì em chưa hiểu bản chất của nó lắm
                    bác nào biết bảo em với
                    0x3CAF= 15535

                    thanh IE là thanh ghi cho phép ngắt .
                    Code:
                    EA  = 1 : cho phép các ngắt xảy ra
                     - 
                    ET2  = ngắt timer
                    ES   = ngắt nối tiếp
                    ET1  = ngắt timer1
                    EX1 = ngắt ngoài 1
                    ET0 = ngắt timer 0 
                    EX0 = ngắt ngoài 0
                    0x84  = 0B1000 0100 : cho phép ngắt xảy ra , cho phép ngắt ngoài 1
                    thế mà cũng tự xưng là pro9x , nên đổi lại là amater9x đey

                    Comment


                    • Vua roi minh co viet may chuong trinh Keil C nhung sao khi bien dich thi dung luong qua lon nen ko nap vao chip duoc. Co ban nao da bi nhu vay ko. File bien dich trong keil C chi khoang 2000Byte nhung file hex thi den 8kB nen ko nap duoc.Mong chi giao

                      Comment


                      • giúp với keil vẻ 8.05 cứ báo error 56 can not open file ????????????????????????????????

                        Comment


                        • Nguyên văn bởi dcn_pro9x Xem bài viết
                          các bác có ai có giáo trình các mã lệnh hexa dùng trong vi điều khiển không
                          vidu
                          TH0=0x3c;
                          TL0=0xaf;
                          IE=0x84,85
                          nhiều lúc đọc mà em chẳng hiểu gì cả
                          vì em chưa hiểu bản chất của nó lắm
                          bác nào biết bảo em với
                          ẹc
                          mất mặt SV công nghiệp quá
                          ra ngay cổng trường mình mua quyển VDK cấu trúc lập trình và ứng dụng
                          tác giả kiều xuân thực đọc ngay

                          Comment


                          • xin các bạn chỉ mình tài liệu học c++ để lập trình cho 89c51?
                            Thanks All

                            Comment


                            • Nguyên văn bởi tranduythai Xem bài viết
                              Vua roi minh co viet may chuong trinh Keil C nhung sao khi bien dich thi dung luong qua lon nen ko nap vao chip duoc. Co ban nao da bi nhu vay ko. File bien dich trong keil C chi khoang 2000Byte nhung file hex thi den 8kB nen ko nap duoc.Mong chi giao
                              Bạn nên nói rõ là bạn dùng chương trình nào để nạp, nạp cho chíp gì ( AT89C51, 89C2051, 89xx hay loại #), mã chương trình khoảng 2000 byte chính xác là bao nhiêu ( sau khi dùng Keil biên dịch bạn có thể biết chính xác số byte của mã chương trình bạn viết), không nạp được thì phần mềm nạp hiển thị thông báo gì… Nhưng nếu với mã chương trình của bạn < 2Kbyte ( <2024 byte ) thì bạn hoàn toàn đủ chứa trong bộ nhớ chương trình của các chíp 89xx nêu trên. Còn con số 8Kb kia tôi nghĩ đó là dung lượng của file hex trong ổ cứng của bạn do Windows kiểm soát.
                              Các bác cho ý kiến khác!

                              Comment


                              • Bạn vào đây xem thử có phải thứ bạn cần không. Mà vào google cũng nhiều mà
                                http://www.mediafire.com/?8tylzy287w4wy6u

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X