Thông báo

Collapse
No announcement yet.

Cấp phát dữ liệu động, xử lý bit khó quá !!!

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

  • #16
    Nguyên văn bởi queduong
    Tôi đang chờ câu trả lời của bác Binh Anh , quả thực sử lí bit trong ngôn ngữ C không đơn giản một chút .....
    --->// Một ví dụ mẫu : Từ bàn phím ta nhập vào số 290 ( như vậy N = 290 )
    phát N ra chân RB1 ( đủ khung 12 bit --- bit nào thiếu thì tự chèn =0 ).
    - Đổi N ra nhị phân ta được : 100100010 ( 9 bit -- thiếu 3 bit )
    ta phải phát ra chân RB1 là : 000 100100010 ( tự điền : bit 11 =0 ; bit 10 =0; bit 9 =0 )

    --- Ví dụ thứ 2 : nhập vào số 315 ( đổi ra nhị phân :100111011 - cái này thì tự phần mềm nó đổi rồi ) : phải phát ra là : 000 100111011

    ---- Đây chỉ đơn giản là chèn thêm và đảo chiều phát ra của 1 khung truyền cố định thôi . Tuy nhiên tôi chưa tìm được lời giải đáp.

    ( mới chỉ truyền cố định mà chưa được --- một số cái ứng dụng : khóa két bây giờ họ truyền dữ liệu thay đổi liên tục : ranrom code ) thì làm sao mà chơi nổi .
    Xin các bạn cho lời khuyên

    // Lưu ý : tất cả thuật toán chỉ được làm trên C " không chèn ASM " nếu chèn ASM thì có một bài của bạn nova đã giải quyết được rồi .
    Tưởng bác làm xong rồi, nếu bác muốn nhanh thì qua chỗ cơ quan tui,đưa mạch đầy đủ theo, đảm bảo <30 phút tui sẽ cho nó chạy tốt theo.
    Trở lại bài toán của bác:

    000 100100010 ( tự điền : bit 11 =0 ; bit 10 =0; bit 9 =0 )
    ....
    truyền bit 11 trước, rồi 10,9...0
    Vậy đơn giản viết như sau:
    Cách 1:
    void Transmiter(unsigned int data)
    i=11;
    while(i--)
    {
    if(data & 0b100000000000) RBi=1; else RBi=0;
    data=(data<<1);//dịch trái
    DELAY();
    }

    thay while(i--) = lệnh for(i=0;i<12;i++) cũng được

    Cách 2:
    Trước hết khia báo mảng hằng số:
    const unsigned char Mask[12]={2048,1024,512,256,128,64,32,16,8,4,2,1}void Transmiter(unsigned int data)
    for (i=0;i<12;i++)
    {
    if(data & Mask[i]) RBi=1; else RBi=0;
    DELAY();
    }
    Và ngoài ra còn nhiều cách khác nữa

    Comment


    • #17
      PHù .... Cuối cùng thì cũng đã tối ưu được .
      Rất cảm ơn tất cả mọi người đã nhiệt tình chỉ bảo.

      To Binh Anh : Hôm gọi điện BA có hướng dẫn nhưng ngay lúc đó có chuông điện thoại , chưa kịp nhập tâm nên quên béng mất viết lên đây hỏi luôn .

      To " bánh mì Ba Tê " : Lại để cho bé Trang cười quê rồi hì hì .

      Diễn đàn có nhiều người giỏi quá , từ cơ bản đến phức tạp " không sáo rỗng tẹo nào ". Tiện đây cho hỏi luôn .

      Mình có đọc APPS NOte của Micro chip , với chip có EEProm nội , có thể lập trình chương trình trước ( nạp vào vi điều khiển ) .
      Và có thể sau này lập trình trình riêng cho bộ nhớ EEPROM và ghi vào ( không làm mất dữ liệu cũ ).

      Có 2 trường hợp dữ liệu cũ đã lock và không lock .
      Bác nào hóa giải được bài này Quế Dương bội phục ngàn lần .
      ( Đây không phải là câu đố - là câu hỏi của QD thì đúng hơn ).
      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


      • #18
        Nguyên văn bởi queduong
        Mình có đọc APPS NOte của Micro chip , với chip có EEProm nội , có thể lập trình chương trình trước ( nạp vào vi điều khiển ) .
        Và có thể sau này lập trình trình riêng cho bộ nhớ EEPROM và ghi vào ( không làm mất dữ liệu cũ ).
        Có 2 trường hợp dữ liệu cũ đã lock và không lock .
        Bác nào hóa giải được bài này Quế Dương bội phục ngàn lần .
        ( Đây không phải là câu đố - là câu hỏi của QD thì đúng hơn ).
        Trước hết bác QD nên sửa lại tên của chủ đề này, vì đây ko phải là cấp phát bộ nhớ động đâu.

        Về câu hỏi, em chưa hiểu kỹ câu hỏi của bác? Để cho dễ hiểu thì ta nói bộ nhớ chương trình(thường là flash) và bộ nhớ dữ liệu ko mất nội dung(EEPROM), cứ Phải chăng ý bác là:
        1-Khi nạp cho chip thì lập trình như thế nào để vừa nạp vào Flash, vừa nạp dữ liệu khởi đầu vào EEPROM.
        2-Cách nạp như thế nào để chỉ nạp mỗi Eeprom thôi.
        Nếu vậy thì đâu có gì khó nhỉ?
        -------------------

        Comment


        • #19
          Theo lời CHIBANG tại hạ trước mắt đã sửa lại cái tiêu đề , sau này sẽ bổ sung sau .
          đúng là tại hạ đang làm mấy cái mạch mã hóa , truyền dữ liệu theo cách ranrom code và dùng pic , tại hạ không biết nhiều về pic tuy nhiên đã viết được cái project về việc truyền phát này , code chưa tối ưu được vì chưa có giải thuật tốt nên phải nhờ các huynh đệ tư vấn phần cơ bản cho,có thể cái tiêu đề lúc hứng chí buông lời " ĐAO TO BÚA LỚN " , nhưng có lẽ nó cũng ít nhiều đến sự ứng dụng và sử dụng linh hoạt của dữ liệu - về điểm này có lẽ mình đã hiểu chưa đúng.
          cũng biết nó cũng chỉ là cách dịch chuyển dữ liệu thôi , rất đơn giản và cơ bản nhưng không học hỏi thì cũng không nắm được nguồn gốc của vấn đề
          ( bởi QD chưa được học C ngày nào với tư cách có thày hướng dẫn - kể cả tất cả lập trình hay điện tử đều không có thày dạy - chỉ mày mò mà học sách vở + internet + thực hành rất nhiều, và hầu như làm đâu thực hành đó ) nên có ít võ nghệ thôi.
          ( bài dịch bit cơ bản trên mình đã làm được rồi ) bây giờ

          trở lại vấn đề về EEPROM mình có hỏi và suy nghĩ :
          giả sử có file matma.hex được ghi vào pic16f84a trong phần eeprom có lưu nội dung tên tác giả " que duong "
          có 2 cách ghi , ghi với protect và ghi không có protect

          Xin hỏi : có thể thay đổi nội dung eeprom trong lần nạp tiếp theo mà không
          thay đổi code matma.hex được không ??????

          tôi đã bị ăn cắp trắng trợn một bản mã hóa ( đã protect rồi ) trong eeprom
          có ghi tên mình và phiên bản firmware trong eeprom ,
          thế mà có người chế đến độ y hệt , chỉ khác trong eeprom là tên của họ hic hic .
          bản matma.hex trong đó có 64 bit data được mã hóa , truyền và thay đổi dữ liệu 5 lần ( nó là một trong những project về truyền không dây LPT của tôi ) .

          bác nào xem thử xem câu hỏi của tôi không biết họ ăn cắp kiểu gì

          liệu có dịch được cái file hex ra và ta cắt eeprom tại điểm nào ???

          --- với câu của CHIBANG có thể hiểu thế này : làm sao sửa đổi, nạp thông tin vào eeprom nội mà không làm mất nội dung trong flash khi ta đã lock code ??? SỢ THẬT ! BÂY GIỜ CÓ RẤT NHIỀU NGƯỜI GIỎI VI ĐIỀU KHIỂN VÀ CÒN GIỎI CẢ HACK VI ĐIỀU KHIỂN NỮA ... bó tay chắc đến phải giải nghệ.
          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


          • #20
            Luôn tiện cho mình hỏi nha. Mình muốn chuyển một mảng 5*5 gồm các giá trị 0, 1 sang một biến 32 bit (cho 7 bit cuối bằng 1) thì phải làm thế nào?

            VD: A[5,5] = {0,0,1,0,0,
            0,0,1,0,0,
            0,0,1,0,0,
            0,0,1,0,0,
            0,0,1,0,0}
            chuyển sang biến b=0b11111110010000100001000010000100;

            Thanks!
            ||

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X