Trích:
Nguyên văn bởi nms48
cám ơn anh namqn
bài toán em cần là:" khi có ngắt ngoài(ngắt cạnh lên) thì khởi tạo timer0 5ms, khi timer0 ngắt thì khởi tạo time1 10ms đồng thởi xuất ra D0 một xung có độ rộng là 10us. khi timer1 ngắt thì xuất ra D1 một xung cũng có độ rộng là 10us còn chương trình chính thì để đọc adc"
em đã viết và nạp cho pic hàng ngàn lần rùi nhưng vẫn ko dc(em dùng pic 18f4520 chứ kô phải 16f877).em mới làm quen pic được khoảng 1 tháng.
một lần nữa cám ơn anh.
chào anh
|
Tôi nghĩ bài toán của bạn nên đặt ra như sau: Khi có tín hiệu bên ngoài (cạnh lên) thì cần chờ 5 ms, khi hết 5 ms đó thì tạo một xung có độ rộng 10 us ra chân RD0, và chờ tiếp 10 ms. Khi hết 10 ms đó thì tạo một xung có độ rộng 10 us ra chân RD1.
Với PIC18F4520 thì bạn có thể dùng Timer 0 như một timer 8-bit hay 16-bit, và cũng có thể bật/tắt nó theo ý muốn. Bạn đã lãng phí thời gian của chính mình và của người khác khi post code cho PIC16F877, trong khi thực sự lại sử dụng PIC18F4520. Cần chú ý là PIC18 có 2 mức ưu tiên ngắt, và việc thiết lập ngắt trong PIC18 liên quan đến nhiều thanh ghi hơn so với PIC16.
Nếu bài toán của bạn có thể mô tả như trên thì bạn có thể thực hiện với 1 timer chứ không nhất thiết phải dùng đến 2 timer.
Thân,