Thông báo

Collapse
No announcement yet.

MIKROC với Ethernet cua pic 18f97j60

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

  • MIKROC với Ethernet cua pic 18f97j60

    ai đã làm qua cái này cho e hỏi cái: sao khi ghi dòng Ethernet_doPacket(); thì LCD không hiện còn bỏ ra thì LCD hiện binh2 thường??
    và làm sao ping dịa chỉ này được??ko biết e viết đúng không??chỉ để Ping thui
    Code:
    #include   "__EthJ60.h"
    #define _Ethernet_HALFDUPLEX     0
    #define Ethernet_FULLDUPLEX     1
    #define rs        PORTH.F0
    #define en      PORTH.F1
    
    
    
    char  buffer[15];
    
    int i=0,dl;
    char ch=0;
    char txt[3];
    unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f};   // my MAC address
    unsigned char   myIpAddr[4]  = {192, 168,  1, 109 };                   // my IP address
    unsigned char   gwIpAddr[4]  = {192, 168,  1,  108 };                   // gateway (router) IP address
    unsigned char   ipMask[4]    = {255, 255, 255,  0 };                   // network mask (for example : 255.255.255.0)
    unsigned char   dnsIpAddr[4] = {192, 168,  20,  1 };                   // DNS server IP address
    
    
    void lenh_lcd(char l)
    {
    rs=0;//cho phép ghi lenh
    en=1;//enable lcd
    PORTF=((PORTF&0x0f)|(l&0xf0));//xóa 4 bít cao cua PORT2 và co^.ng voi 4 bít cao cu?a data can truyen
    en=0;//disable lcd
    en=1;
    PORTF=((PORTF&0x0f)|((l<<4)&0xf0));//xóa 4 bít cao và cong voi 4 bít thap cua du lieu
    en=0;
    delay_ms(5);
    }
    void dulieu_lcd(char d)
    {
    rs=1;
    en=1;
    PORTF=((PORTF&0x0f)|(d&0xf0));
    en=0;
    en=1;
    PORTF=((PORTF&0x0f)|((d<<4)&0xf0));
    
    en=0;
    delay_ms(5);
    }
    void lcd_gotoxy(unsigned char x, unsigned char y)   //y la hang
    {
      unsigned char address;
      if(!y)
      address = (0x80+x);
      else
      address = (0xC0+x);
      delay_us(200);
      lenh_lcd(address);
      delay_us(50);
    }
    void LCD_display(char *s)
    {while(*s)
    {
    dulieu_lcd(*s);
    s++;
    }
    }
    void kt_lcd(void)
    {
    lenh_lcd(0x02); delay_ms(100);
    lenh_lcd(0x02);
    lenh_lcd(0x02);
    lenh_lcd(0x28);
    lenh_lcd(0x0c);//ba^.t hie^?n thi. ta('t con tro?
    lenh_lcd(0x06);//di.ch con tro? sang pha?i
    lenh_lcd(0x01);//xóa màn hình
    }
    unsigned int    Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength)
            {
            return(0);                                           // return to the library with the number of bytes to transmit
            }
    unsigned int    Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength)
            {
            return(0);           // back to the library with the length of the UDP reply
            }
    
    void main() {
    CMCON = 0x07; //Disable Comparators
    ADCON1 = 0x0F; // All is digital I/O
    TRISF=0;TRISH=0; TRISA = 0xfc;
    PORTF=0;PORTH=0; PORTA.F0=0; PORTA.F1=0;
    kt_lcd();
    delay_ms(100);
    lcd_gotoxy(1,0);
    LCD_display("DH SPKT TPHCM");
    lcd_gotoxy(1,1);
    LCD_display("TEXT ETHERNET");
    
    Ethernet_Init(myMacAddr, myIpAddr, Ethernet_FULLDUPLEX);
    Ethernet_confNetwork(ipMask, gwIpAddr, dnsIpAddr);
    
    
    
    
             while(1)                        // do forever
                    {
    
                Ethernet_doPacket();  // process incoming Ethernet packets
                    }
    }

  • #2
    chẳng hiểu cậu này dùng MikroC phiên bản nào ? sao không dùng luôn chức năng của thư viện LCD ?

    để hiển thị LCD : VD tại hàng 1 cột 1 thì chỉ cần Lcd_Out(1,1"vi du Lcd");
    xóa màn hình thì Lcd_Cmd(_LCD_CLEAR);

    Mấy cái lệnh hiển thị , goto xy gì đó quá thừa thãi ... !
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #3
      Nguyên văn bởi queduong Xem bài viết
      chẳng hiểu cậu này dùng MikroC phiên bản nào ? sao không dùng luôn chức năng của thư viện LCD ?

      để hiển thị LCD : VD tại hàng 1 cột 1 thì chỉ cần Lcd_Out(1,1"vi du Lcd");
      xóa màn hình thì Lcd_Cmd(_LCD_CLEAR);

      Mấy cái lệnh hiển thị , goto xy gì đó quá thừa thãi ... !
      e đã thử qua thư viện LCD nhưng cũng thế ah? e dùng MIKROC PRO FOR PIC 2009..hjx
      còn vấn đề này e xài mạch nạp Burn e nạp được sao chương trình chạy được cái khởi tạo trí là đứng luôn?? boar đó hôm qua nạp chạy vèo vèo..hôm nay nạp chớp tắt led ko được...hjchjc..

      Comment


      • #4
        Nguyên văn bởi annhan91 Xem bài viết
        e đã thử qua thư viện LCD nhưng cũng thế ah? e dùng MIKROC PRO FOR PIC 2009..hjx
        còn vấn đề này e xài mạch nạp Burn e nạp được sao chương trình chạy được cái khởi tạo trí là đứng luôn?? boar đó hôm qua nạp chạy vèo vèo..hôm nay nạp chớp tắt led ko được...hjchjc..
        giờ là năm 2013 , mikroC có bản mới nhất 6.0.0 ra đời cuối tháng 2 năm 2013 đó ! từ 2009 đến 2013 là năm đó

        Việc bạn viết thêm Hàm ... và sử dụng các hàm có sẵn trong thư viện trong đó sẽ chỉ làm tốn thêm bộ nhớ chứ chẳng được ích lợi gì ... đôi khi sẽ gây ra lỗi.

        - Nói chung dùng PIC thì cứ PICKIT của hãng mà táng thôi ... vừa rẻ vừa ngon . CHứ mấy cái hàng vớ vẩn kia người ta cho gì biết nấy , toàn đi sao chép copy về , lại tạp phế lù nên cũng không biết thế nào mà lần , chất lượng tốt xấu rất khó đánh giá . ( cái này thì phải xem ai dùng nhiều rồi ... cho ý kiến )
        ( chứ mạch nạp chuẩn cũng là 1 thiết bị tương đối quan trọng ).

        - Trong ví dụ ethernet của mikroc ... cứ lôi ra là chạy thôi , tất cả các lệnh chạy vô tư không thấy hiện tượng như trên.
        ( vừa có thể nhận dữ liệu ethernet , vẫn có thể cài UART hay hiển thị Lcd được ) !
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #5
          hàng làm việc nên mua hàng chính hãng mà dùng.
          [MENTION=45]queduong[/MENTION]: em cũng dùng mikroc nhưng chưa bao h lại loay hoay với thang LCD 16x2 như thế, lằng nhằng với thư viện lắm
          1. dùng cái tạo mã LCD để tạo hình thì khi hiển thị 2 cái hình khác nhau là dính chưởng liền, 2 hình biến thành 2 ngay sau khi hình 2 được out.

          2. chả biết no điên đến mứa nào mà void 1 chạy trước void 2 mà khi chạy chương trình trong void 2 nó nhảy lên ngủ chung với 1 đống trong void 1....thật hết biết
          TamPhieuLuuKy@yahoo.com
          092 2838 712 --->>

          Comment


          • #6
            Nguyên văn bởi superhieu1 Xem bài viết
            hàng làm việc nên mua hàng chính hãng mà dùng.
            @queduong: em cũng dùng mikroc nhưng chưa bao h lại loay hoay với thang LCD 16x2 như thế, lằng nhằng với thư viện lắm
            1. dùng cái tạo mã LCD để tạo hình thì khi hiển thị 2 cái hình khác nhau là dính chưởng liền, 2 hình biến thành 2 ngay sau khi hình 2 được out.

            2. chả biết no điên đến mứa nào mà void 1 chạy trước void 2 mà khi chạy chương trình trong void 2 nó nhảy lên ngủ chung với 1 đống trong void 1....thật hết biết
            Đó còn là do lập trình . Bạn có mã không ?

            Bạn có thể tham khảo thư viện LCD của nó trong phần help , rất dễ hiểu.

            để điều khiển được các LCD ký tự : 8 , 8x2 , 16 , 16x2 , 16x4..v.v

            trong thư viện của nó đã có đầy đủ

            - sau khi khai báo các chân kết nối với LCD
            - Init để khởi tạo lcd
            - Lcd_Cmd(....) cho phép làm các command như xóa màn hình , vị trí con trỏ , bật tắt con trỏ ... dịch trái, phải .v.v, có thể viết trực tiếp Hex code trong trường hợp Lcd không theo chuẩn chip Hitachi: VD : Lcd_Cmd (0x01);
            -Lcd_Out(row, column, *text); : Viết chuỗi text bắt đầu từ vị trí hàng , cột VD : Lcd_Out(1,1,"Text Test");
            - Lcd_Chr(row, column,char...) để viết 1 ký tự Dùng trong nhiều trường hợp cần viết 1 ký tự hoặc không thể dùng được Lcd_Out ( do Ram không đủ chẳng hạn )

            - Lcd_Out_Cp ... Viết chuỗi ký tự tại vị trí Cp ( Current Cursor position)

            .........

            Ngoài những cái đó còn có thể tạo các ký tự đặc biệt , nếu tạo nhiều các ký tự đặc biệt nên đặt các mảng riêng, chức năng riêng
            Cách thức hiển thị các ký tự này tương tự như với Lcd Graphic ....
            Cái này mình làm hoài , chẳng có vấn đề gì cả . VD đo nhiệt độ có oC , oF ... trong các thiết bị máy đo của mình có micro Ohm , micro Henry ( uH), uF, uV .....1 đống các loại nhưng nó hiển thị chính xác và làm việc tốt !
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #7
              hjx..gio mua mạch PICkit nua tiền đâu??
              Mọi người ai sài 18fxxj với MIKROC cho e hỏi cách config chân với??
              hàm delay chạy chậm lắm??delay 1ms mà chạy gần 2s mới song..hjc

              Comment


              • #8
                100% cấu hình clock sai. Nạp bằng thằng Burn-E cẩn thận phần set fuse với PIC vì thằng MikroC ko có fuse mềm thì phải... ít sài ko rõ lắm, CCS thì fuse bằng code đc
                Web:
                ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                Comment


                • #9
                  Nguyên văn bởi demon52 Xem bài viết
                  100% cấu hình clock sai. Nạp bằng thằng Burn-E cẩn thận phần set fuse với PIC vì thằng MikroC ko có fuse mềm thì phải... ít sài ko rõ lắm, CCS thì fuse bằng code đc

                  Pic thì đa phần config bit bằng phần mềm ... thằng AVR mới phải Fuse vì nó riêng biệt hẳn ra.

                  Việc config bit của PIC có thể vào project , edit project .
                  Việc set config bit của mikroC là dễ dàng hơn rất nhiều so với CCS , HTPIC ... hay các phần mềm biên dịch khác
                  ( vì rằng tất cả những trường hợp về config người ta đã liệt kê ... và có các options lựa chọn ) . ( sự lựa chọn này khi biên dịch ra cũng tương tự như cách config ở các phần mềm khác ) tuy nhiên không phải nhớ câu cú như HT PIC _CONFIG( HS , WDTEN ...) hay #fuse của CCS ( mấy thứ vớ vẩn ) ... mặc dù lệnh đều như nhau cả.
                  Ngoài ra nếu chuyên sâu về mikroC thì cũng có thể viết trực tiếp mã vào để config ( nhưng chẳng đứa nào làm thế ... vì cái kia đã đủ và rất đơn giản, chẳng ai lại tự mua dây buộc mình ! )
                  Ngoài cách trên nữa thì vẫn có thể vào các phần mềm " nạp" để set và config ( nếu phần mềm nạp cho phép làm việc này )

                  - Mặc định của mikroC for PIC ... đều set sử dụng thạch anh ngoài , (tần số được ghi ngay ở khung cửa sổ ) muốn sử dụng tần số cho phép bao nhiêu thì phải gõ đúng vào đó ( vì trong các thư viện của mikroC đều sử dụng tần số chuẩn để hoạt động các thư viện , delay , lcd , i2c , uart .v.v.

                  Việc không để ý hay khai báo sai ... VD ... khai báo 8Mhz nhưng lắp có 4Mhz ... thì nó chạy chậm là phải thôi !
                  Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                  Comment


                  • #10
                    cấu hình thạch anh thì dúng rùi ah..25mhz...con mấy cái kia giữ nguyen của thằng MIKROC ah..delay 1s nó chạy chắc 5phut..
                    đây là hình ảnh. e up trựctiep61 sao mà không được
                    http://www.mediafire.com/?9mmquxem00idym0
                    Last edited by annhan91; 21-04-2013, 02:43.

                    Comment


                    • #11
                      Anh queduong cài MikroC 2013 có nhiều điểm mới ko anh? Giá mà nó có mấy cái công cụ "gợi nhớ" code như Visualstudio hay elipse thì ngon. Và C*** của bản MikroC2012 5.8 ko biết hoạt động được với bản 6.0 ko anh nhỉ? Em thử quay ra dùng mikroC xem có khi lại phải bỏ hết mấy cái thư viện cho CCS vì thấy MikroC thư viện rất logic và sáng sủa, thích nhất nó có mấy cái tool rất hay cho GLCD, LCD, HID, UART,... test trực tiếp trên code của mình.
                      Web:
                      ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                      -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                      Comment


                      • #12
                        hjx...e tháo thạch anh ra thử mà nó vẫn chạy...đã cấu hình HS oscillator nhưng nó hoạt dộng theo dao dộng nội là sao nhỉ??? ai giúp e với

                        Comment


                        • #13
                          Nguyên văn bởi annhan91 Xem bài viết
                          cấu hình thạch anh thì dúng rùi ah..25mhz...con mấy cái kia giữ nguyen của thằng MIKROC ah..delay 1s nó chạy chắc 5phut..
                          đây là hình ảnh. e up trựctiep61 sao mà không được
                          untitled.jpg
                          Mình không có PIC18F97J60 nhưng có test thử trên con 18F67J60 ... nó chạy ... chuẩn không cần chỉnh. Delay khá chính xác.

                          Nguyên văn bởi annhan91 Xem bài viết
                          hjx...e tháo thạch anh ra thử mà nó vẫn chạy...đã cấu hình HS oscillator nhưng nó hoạt dộng theo dao dộng nội là sao nhỉ??? ai giúp e với
                          Bạn thử clean Project folder ... và cả file Hex xem sao . ! Có thể dùng bản mới , demo để test xem cái Cờ rắc của bạn có phải hàng Lởm không !

                          Nguyên văn bởi demon52 Xem bài viết
                          Anh queduong cài MikroC 2013 có nhiều điểm mới ko anh? Giá mà nó có mấy cái công cụ "gợi nhớ" code như Visualstudio hay elipse thì ngon. Và C*** của bản MikroC2012 5.8 ko biết hoạt động được với bản 6.0 ko anh nhỉ? Em thử quay ra dùng mikroC xem có khi lại phải bỏ hết mấy cái thư viện cho CCS vì thấy MikroC thư viện rất logic và sáng sủa, thích nhất nó có mấy cái tool rất hay cho GLCD, LCD, HID, UART,... test trực tiếp trên code của mình.
                          Bản 6.0 chỉ thêm 1 số ít chip thằng Microchip mới ra lò ( thay thế cho mấy con cũ )... bản 6.0 và 5.8 có code dịch mã như nhau .
                          Bản 5.61 có mã dịch ít hơn bản 5.8 và 6.0 là 3 byte . Cái này không phải do 5.61 tối ưu hơn mà trong 1 số trường hợp có lỗi ( Bug ) thằng 5.61 không phát hiện được ... bản 5.8 , 6.0 lại phát hiện được ( chắc số byte bị tăng trên là " thuốc thử ")

                          - Làm mikroC thì nhàn hơn vì nhiều thư viện sẵn ( đương nhiên cũng có thể tự viết code)
                          một đặc điểm nữa nổi bật ( mà tôi chưa thấy thằng trình dịch nào có ) ... đó là nó " tự đẻ ra thư viện "
                          Ví dụ mình lập trình 1 cái LCD lạ hoắc , có chức năng là hienthi .... sau khi dịch ra file hex rồi ... nó có kèm thêm 1 file " thư viện " của chức năng đó .... 1 phần mềm sẽ cài đặt cho tất cả các loại chip ( hay những loại cần cái thư viện đó ) theo ý người dùng
                          khi làm các project khác tương tự chỉ việc đánh dấu vào ... và sài ( không phải copy hay gõ code )

                          - Phần mềm package manager cho phép cài đặt , gỡ bỏ ... quản lý các thư viện. Việc sử dụng phần mềm này để " share" thư viện rất hữu ích ... vì không phải "share" source code
                          Trên forum của bọn nó thường phát triển thư viện mới và share theo cách này !

                          - Hiện tại chưa thấy thằng trình dịch MikroC cho PIC nào có thể " cài được công cụ gợi nhớ "
                          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                          Comment


                          • #14
                            có khi nào do IC không a queduong,...tại mạch đó bữa trước e nạp bình thường..bua sau mới bị ah...mà gi nạp 16f877 cũng bình thường ah...hjxhjx

                            Comment


                            • #15
                              Nguyên văn bởi annhan91 Xem bài viết
                              có khi nào do IC không a queduong,...tại mạch đó bữa trước e nạp bình thường..bua sau mới bị ah...mà gi nạp 16f877 cũng bình thường ah...hjxhjx
                              bạn xem lại mạch nạp , phần cứng ... phần mềm thì làm như mình nói . Vì chỉ có delay quá đơn giản mà còn chạy sai thì bọn viết phần mềm mikroC bán cho ai ?
                              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X