Thông báo

Collapse
No announcement yet.

Ngôn ngữ lập trình VĐK

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

  • #16
    Nguyên văn bởi tdm Xem bài viết
    13bit :time đếm đến 8192 thì tràn.
    16bit:time đếm đến 65356 thì tràn.
    bạn muốn biết chính xác hay không lên chạy trên mạch thật.ngoài ra sai số của thạnh anh cũng là nguyên nhân.
    không khời tạo TMOD=00
    Mình tìm ra chỗ sai rồi, bây giờ thì text chạy thử chính xác đến micro giây luôn! Mô phỏng proteus chính xác thật, chưa bao giờ thấy nó sai toàn thấy mình sai

    Comment


    • #17
      Nguyên văn bởi Paddy Xem bài viết
      Tớ thì lại nghĩ khác như bác.

      - Dùng C hay Assembly language đều cần phải biết rõ về cấu trúc của VĐK. Nếu không rành về cấu trúc VĐK, biết rõ C hay không cũng đều là vô dụng...

      .
      Tôi hoàn toàn nhất trí với bạn Paddy. Ở đây tôi chỉ đưa ra 1 sự so sánh đơn giản để các bạn mới nhập môn có thể tự chọn con đường đi phù hợp với mình hơn.

      Tôi cũng muốn bổ sung 1 chút xíu là nếu các bạn bắt đầu với C dành cho VĐK (ko phải C tổng quát) thì sẽ dễ dàng hơn ASM rất nhiều, và cũng ko sợ học những thứ dư thừa hay phức tạp. Bởi vì C dành cho VĐK chỉ bằng khoảng 1% C tổng quát, gồm những phép tính và hàm dành cho VĐK thôi.
      Lựa chọn ngôn ngữ nào là tùy ở mục đích và sức lực hiện tại của các bạn.

      Chúc thành công
      :-)

      Comment


      • #18
        Có bạn mới nhập môn hỏi tôi như sau:

        Vi dụ điển hình nhất trong lập trình VXL
        void delayms(int n)
        {
        int i,j; // khai bao bien chi trong chuong trinh con
        for (i=0;i<n;i++)
        for (j=0;j<1500;j++) { } // tham so j tuy thach anh toc do vxl ma cac
        //ban thay doi cho phu hop
        }
        em đọc được vd này trên mạng nhưng em chưa hiểu cách tính " j " như thế nào ?
        (sao lai là nhỏ hơn 1500 ?)

        Xin trả lời như sau:
        Biến j chỉ đơn giản là biến đếm thôi.
        Khi thực hiện phép tính j=j+1 (trong C viết là j++) thì VXL tốn 1 khoảng thời gian bằng 1 bước thời gian của VXL(gọi là chu kỳ máy).
        Ví dụ nếu tần số làm việc của VXL là 1MHz, nghĩa là 1 triệu phép tính/giây, thì mỗi phép tính tốn 1 phần triệu giây.
        Nếu thực hiện 1500 phép tính thì VXL tốn 0.0015 giây.
        Mỗi vòng lặp FOR tốn 2 phép tính. Vậy nếu 1500 vòng lặp FOR thì tốn 3000 phép tính, và VXL tốn 0.003 giây để thực hiện hết số vòng lặp này.

        Để tìm ra số vòng lặp cần thiết khi đã biết thời gian tiêu tốn và tần số của VXL, bạn chỉ cần làm bài toán ngược.
        Gọi thời gian là t, tần số là f, số phép toán thực hiện được là n, số vòng lặp là m, ta có công thức tính như sau:
        n = t/f
        m = n/2
        vòng lặp FOR của ta khi đó sẽ viết có dạng:
        for (j=0; j<m; j++) { }

        Ở đây tôi hướng dẫn cụ thể để các bạn dễ hiểu. Quen dần thì các bạn sẽ tính nhẩm rất nhanh, ko cần phải qua các thao tác trên.
        Chúc vui !
        :-)

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X