Đáng lẽ ra tôi phải giới thiệu cho các bạn các header file trước nhưng tôi quên mang theo mong các bạn thông cảm. Tôi xin giới thiệu dùng delay trước đã.
Có lẽ việc lập trình cho vi điều khiển một hàm không thể thiếu đó là trễ: như trễ khi bạn nháy led chẳng hạn( ví dụ đơn giản nhất), ...
Việc gây trễ trong Keil C có thể có nhiều cách khác nhau:
Hàm delay có tham số là thời gian cần gây trễ tính theo ms
1/Dùng vòng lặp while, for
dùng kiểu nào thì cũng đơn giản chỉ là vòng lặp mà thôi. Trong vòng lặp này chúng ta sẽ chẳng làm gì cả nên vi điều khiển sẽ bị mất thời gian trong các vòng lặp này.
Với tần số thạch anh 11.0582 MHz thì mỗi vòng lặp khi các bạn debug sẽ thấy là chúng ta mất thời gian thực khoảng 8.28 us. Do đó để có thể gây trễ 1ms thì các bạn cần dùng xấp xỉ 121 vòng lặp kiểu này.
Do đó hàm sẽ như sau:
Việc chuyển đổi giữa vòng for với while trong trường hợp này rất đơn giản thôi. Nhưng khi đó bạn lại phải khai báo thêm một biến đếm như thế sẽ tốn bộ nhớ. Chương trình trên là tối ưu nhất rồi.
2/Dùng timer0,timer1,..
Cái này tôi xin phân tích sau cùng với việc giới thiệu các #include. Để có thể hệ thống hết được. Cho nó có logic. Chứ nếu tôi đưa ra luôn các bạn mới học sẽ không hiểu là nó ở đâu ra.
Có lẽ việc lập trình cho vi điều khiển một hàm không thể thiếu đó là trễ: như trễ khi bạn nháy led chẳng hạn( ví dụ đơn giản nhất), ...
Việc gây trễ trong Keil C có thể có nhiều cách khác nhau:
Hàm delay có tham số là thời gian cần gây trễ tính theo ms
1/Dùng vòng lặp while, for
dùng kiểu nào thì cũng đơn giản chỉ là vòng lặp mà thôi. Trong vòng lặp này chúng ta sẽ chẳng làm gì cả nên vi điều khiển sẽ bị mất thời gian trong các vòng lặp này.
Với tần số thạch anh 11.0582 MHz thì mỗi vòng lặp khi các bạn debug sẽ thấy là chúng ta mất thời gian thực khoảng 8.28 us. Do đó để có thể gây trễ 1ms thì các bạn cần dùng xấp xỉ 121 vòng lặp kiểu này.
Do đó hàm sẽ như sau:
Code:
void delay(usigned char time){ while(time--){ unsigned char temp = 121; while(temp--); // chẳng làm gì cả }; }
2/Dùng timer0,timer1,..
Cái này tôi xin phân tích sau cùng với việc giới thiệu các #include. Để có thể hệ thống hết được. Cho nó có logic. Chứ nếu tôi đưa ra luôn các bạn mới học sẽ không hiểu là nó ở đâu ra.
Comment