Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
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
- 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.
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 !
Chán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...
Có thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%): * Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...
Thực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
Comment