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

  • Time_0() interrupt 1
    {
    if (--time1==0)
    {
    time1=set_time1;
    if (--time2==0)
    {
    flagC=1;
    TR0=0;
    }
    }
    }

    Time_1() interrupt 3
    {

    if(++dem_taoxung>=taoxung)
    {
    dem_taoxung=0;

    if (tocdo_dcTrai!= dung)
    {if (chieuquaydcTrai) {dkdcTrai_f=1;dkdcTrai_b=0;} else {dkdcTrai_f=0;dkdcTrai_b=1;}}
    if (tocdo_dcPhai!=dung)
    {if (chieuquaydcPhai) {dkdcPhai_f=1;dkdcPhai_b=0;} else {dkdcPhai_f=0;dkdcPhai_b=1;}}
    if (tocdo_dcNang!=dung)
    {if (chieuquaydcNang) {dkdcNang_f=1;dkdcNang_b=0;} else {dkdcNang_f=0;dkdcNang_b=1;}}
    if (tocdo_dcGap!=dung)
    {if (chieuquaydcGap) {dkdcGap_f=1;dkdcGap_b=0;} else {dkdcGap_f=0;dkdcGap_b=1;}}
    }

    if (dem_taoxung>=tocdo_dcTrai) {dkdcTrai_f=0;dkdcTrai_b=0;}
    if (dem_taoxung>=tocdo_dcPhai) {dkdcPhai_f=0;dkdcPhai_b=0;}
    if (dem_taoxung>=tocdo_dcNang) {dkdcNang_f=0;dkdcNang_b=0;}
    if (dem_taoxung>=tocdo_dcGap) {dkdcGap_f=0;dkdcGap_b=0;}

    ++demgiay;
    {if (++time>=10000)
    {
    time=0;
    ++demgiay;
    if (++giay>=60)
    {
    giay=0;
    ++phut;
    }
    }
    }
    }
    các bác cho em hoi đoạng trương trinh này vi sao cứ báo lỗi syntax error enaer'='

    Comment


    • Mình muốn khai báo 1 mảng gồm các phần tử (dạng chuỗi): Giay1, Giay2, Phut1, Phut2, Gio1, Gio2
      Vd:
      unsigned char a;
      a=DuLieu[1];
      Mình muốn khi chạy CT: a có giá trị là giay1

      Mình khai báo theo các kiểu sau đây, nhưng khi Build Target đều bị báo lỗi:
      char const DuLieu[6]={Giay1,Giay2,Phut1,Phut2,Gio1,Gio2};
      char const DuLieu[6]={'Giay1','Giay2','Phut1','Phut2','Gio1','Gio2'};
      char const DuLieu[6]={"Giay1","Giay2","Phut1","Phut2","Gio1","Gio2"} ;
      Còn khai báo theo kiểu dưới đây thì Build target không bị lỗi nhưng sau khi nạp chương trình, test mạch thì bị sai.
      char const DuLieu[6]={&Giay1,&Giay2,&Phut1,&Phut2,&Gio1,&Gio2};

      Các bạn giúp mình nhé!
      Không TÔI là kẻ phàm phu
      Cái TÔI quá lớn làm ngu muội mình!
      - 0983.886.113

      Comment


      • bac duy phi oi bac co chuong trinh nao ve chay chu tren led ma tran ko bac cho em voi em dang can gap de lam do an
        noi dung nay gui ve dia chi duyphi@yahoo:com

        Comment


        • [QUOTE=khachau306;92772]Đây là một chương trình mình lấy trên mạng hình như là của bạn kien_hoang thì phải



          Bạn làm thế nào mà post đươc cái màn hình của KEI lên thế
          Hướng dẫn mình cách làm cụ thể vào nhé.
          Attached Files

          Comment


          • Các bạn dùng Keil nhiều cho mình hỏi một chút. Mình đang viết chương trình nhận tín hiệu qua giao tiếp USB trên C8051F320. Khi debug, mình có dùng simulation, mình muốn giả lập tín hiệu đầu vào qua giao tiếp USB (mình dùng PORT1 để nhận dữ liệu). Các bạn có thể chỉ cho mình cách viết Debug Function được không?. Ví dụ, đầu vào mình giả lập là chuyền 1 byte: 0x54 =01010100b.

            Comment


            • Hình như mình không còn gửi bài lên được nữa thì phải. Lúc trước mình có gửi mấy bài ở trang 45 mình còn nhìn thấy. Qua hôm sau đến giờ không thấy gì cả

              Comment


              • Mình đang làm đề tài điều khiển đèn giao thông bằng vi điều khiển nhưng không biết mấy con real time sử dụng làm sao cả.
                Cho mình hỏi nhen. Ví dụ con DS1307
                Thời gian nó lưu trong các thanh ghi trong đó thì mình phải kết nối với vi điều khiển như thế nào để lấy được thời gian, mình dùng lệnh MOVX để lấy dữ liệu ngoài thì gắn real time với chân nào cũng được hả

                Comment


                • Nguyên văn bởi khachau306 Xem bài viết
                  Mình đang làm đề tài điều khiển đèn giao thông bằng vi điều khiển nhưng không biết mấy con real time sử dụng làm sao cả.
                  Cho mình hỏi nhen. Ví dụ con DS1307
                  Thời gian nó lưu trong các thanh ghi trong đó thì mình phải kết nối với vi điều khiển như thế nào để lấy được thời gian, mình dùng lệnh MOVX để lấy dữ liệu ngoài thì gắn real time với chân nào cũng được hả
                  bạn cứ đọc qua datasheet của nó đi (chẳng hạn ds1307) thì sẽ rõ mà
                  !e

                  Comment


                  • Nguyên văn bởi thaithutrang Xem bài viết
                    #define P_0 P0; //P_0 equ P0
                    while(1); //jmp $
                    Khai báo mảng kiểu hằng số
                    ví dụ:
                    const char a[]='Anh Tuyen'; //db 'Anh Tuyen'
                    main()
                    {
                    }//tức là end
                    Bạn kiểm tra code trên chưa?
                    Mình khai báo:
                    const char a[6]={'Giay1','Giay2','Phut1','Phut2','Gio1','Gio2'};
                    Chạy CT bị báo lỗi.
                    Bạn giúp mình nhé!
                    Last edited by trong123; 30-03-2008, 00:13.
                    Không TÔI là kẻ phàm phu
                    Cái TÔI quá lớn làm ngu muội mình!
                    - 0983.886.113

                    Comment


                    • Nguyên văn bởi khachau306 Xem bài viết
                      Mình đang làm đề tài điều khiển đèn giao thông bằng vi điều khiển nhưng không biết mấy con real time sử dụng làm sao cả.
                      Cho mình hỏi nhen. Ví dụ con DS1307
                      Bạn có thể dùng ngắt Timer của 89C51, chạy rất chính xác, sau đây là code với thời gian 1/16s (mình đã dùng để viết chương trình Lịch Vạn Niên).

                      ORG 0000H
                      MOV IE,#88H ;Cho phép ngắt Timer 1
                      ;========================
                      ORG 001BH ;Chương trình ngắt
                      MOV TMOD,#11H
                      MOV TH1,#HIGH(-62487) ;Giá trị 62487 có được
                      MOV TL1,#LOW(-62487) ;từ thực tế test phần cứng
                      SETB TR1
                      ;Lệnh cần thực hiện
                      RETI
                      ;========================
                      ORG 0030H ;Chương trình chính
                      MAIN:
                      ;Muốn Timer hoạt động: SETB TR1
                      ;Muốn ngưng Timer: CLR TR1
                      SJMP MAIN

                      Mình muốn viết bằng Keil nhưng chưa chạy, bạn nào biết giúp mình nhé!
                      Last edited by trong123; 30-03-2008, 04:35.
                      Không TÔI là kẻ phàm phu
                      Cái TÔI quá lớn làm ngu muội mình!
                      - 0983.886.113

                      Comment


                      • Nguyên văn bởi ATYLA Xem bài viết
                        Thường thì người ta hay viết thế này:

                        void delay(unsigned char time){
                        while(time--){
                        TH0 = 0xFC;// nạp giá trị cho timer
                        TL0 = 0x66;
                        TR0 = 1; // Chạy bộ định thời
                        while(!TF0); // chờ khi nào cờ TF0 =1
                        TR0=0;
                        TF0=0;
                        }
                        }
                        }
                        }
                        Mình muốn bổ sung thêm 1 chút cho đoạn code trên rõ ràng hơn:

                        while(time--){
                        TMOD=
                        /*Chọn Timer, chế độ hoạt động,
                        vd: TMOD=0x01: Timer 0, chế độ 1
                        vì chế độ hoạt động sẽ ảnh hưởng đến giá trị của TH0 và TL0 */

                        Mình test đoạn code trên (bằng phần cứng) với:
                        void delay(unsigned short time){
                        và delay(1000);
                        thì thời gian chớp tắt của led sẽ khác nếu thêm dòng lệnh
                        TMOD=0x01;

                        Mình bổ sung thêm để các bạn mới làm quen với VĐK và Keil C hiểu rõ hơn.
                        Last edited by trong123; 30-03-2008, 00:16.
                        Không TÔI là kẻ phàm phu
                        Cái TÔI quá lớn làm ngu muội mình!
                        - 0983.886.113

                        Comment


                        • Nguyên văn bởi trong123 Xem bài viết
                          Bạn có thể dùng ngắt Timer của 89C51, chạy rất chính xác, sau đây là code với thời gian 1/16s (mình đã dùng để viết chương trình Lịch Vạn Niên).

                          ORG 0000H
                          MOV IE,#88H ;Cho phép ngắt Timer 1
                          ;========================
                          ORG 001BH ;Chương trình ngắt
                          MOV TMOD,#11H
                          MOV TH1,#HIGH(-62487) ;Giá trị 62487 có được
                          MOV TL1,#LOW(-62487) ;từ thực tế test phần cứng
                          SETB TR1
                          ;Lệnh cần thực hiện
                          RETI
                          ;========================
                          ORG 0030H ;Chương trình chính
                          MAIN:
                          ;Muốn Timer hoạt động: SETB TR1
                          ;Muốn ngưng Timer: CLR TR1
                          SJMP MAIN

                          Mình muốn viết bằng Keil nhưng chưa chạy, bạn nào biết giúp mình nhé!
                          Bạn nói sao chứ làm lịch vạn niên mà dùng timer làm sao chính xác được, mình đã thử rồi, chạy chừng 1 ngày là nó đã lệch đi 1-2 phút rồi

                          Comment


                          • Nguyên văn bởi khachau306 Xem bài viết
                            Bạn nói sao chứ làm lịch vạn niên mà dùng timer làm sao chính xác được, mình đã thử rồi, chạy chừng 1 ngày là nó đã lệch đi 1-2 phút rồi
                            Mình cho chạy 1 tuần, trễ khoảng 7 giây (nếu tính ra 1 năm trễ khoảng 6 phút). Mình dùng giá trị TH và TL đúng như đoạn code trên.
                            Bạn thử kiểm tra lại CT của bạn với giá trị TH và TL của mình xem.
                            Không TÔI là kẻ phàm phu
                            Cái TÔI quá lớn làm ngu muội mình!
                            - 0983.886.113

                            Comment


                            • Nguyên văn bởi vietbest
                              You có phần mềm lập trình KEIL ko? port lên cho mình với
                              Keil C hon 20M, mình không thể Post lên đây được. Mình đã Post link để download Keil C và cách hướng dẫn ***** cho bạn nhưng bài viết đã bị xóa (có lẽ do không đúng với nội qui của diễn đàn).
                              Email của mình: thanhtrong.tran@yahoo.com
                              Không TÔI là kẻ phàm phu
                              Cái TÔI quá lớn làm ngu muội mình!
                              - 0983.886.113

                              Comment


                              • Chào các bạn,
                                Mình mới viết thử CT ngắt Timer rất đơn giản bằng Keil C, đã chạy rồi.
                                Một led được nối với P1.0, led sẽ chớp tắt với thời gian khoảng 1s (Để chính xác hơn, bạn có thể điều chỉnh giá trị của TH1, TL1 và vòng lặp).
                                Các bạn tham khảo và góp ý cho mình nhé!

                                Code:
                                #include <regx51.h>
                                sbit led=P1^0;
                                unsigned char i=0; 
                                void Ngat(void) interrupt 3 using 0
                                	{
                                	TMOD=0x10;  // Timer 1, chế độ 1			
                                	TH1=0x00;   // (65.536*15 ~ 1s)			
                                	TL1=0x00;   // 15 là giá trị vòng lặp
                                	TR1=1;      // Khởi động Timer
                                	i+=1;
                                	}
                                void Main(void)
                                	{
                                	IE=0x88; //Cho phép ngắt Timer 1
                                	TR1=1;   //Khởi động Timer
                                	while(1)
                                		{
                                		if(i==15)
                                			{
                                			i=0;
                                			led=~led; //Đổi trạng thái led
                                			}
                                		}	
                                	}
                                Không TÔI là kẻ phàm phu
                                Cái TÔI quá lớn làm ngu muội mình!
                                - 0983.886.113

                                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