Mô phỏng protues - Port A hoạt động không theo ý muốn!
Mình sử dụng protues để mô phỏng chương trình đơn giản là xuất đ.áp cao (5v) ra port A nhưng khi chạy thì thấy các chân của port A có màu xám (không phải đỏ=mức áp cao) .
Trong khi các port khác thì bình thường.Chương trình viết bằng C. Có ai biết tại sao không ? |
Trích:
Thân, |
Code:
#include <16F877A.h> #use delay (clock=20000000) và delay_ms(200) là trì hoãn 1s (cái này mình thử đo bằng đồng hồ )chứ không biết có đúng là 1s không nữa?Ý mình muốn hỏi là 02 cặp lệnh trên dùng như thế nào?và con số 20000000 là gì? |
Trích:
#use delay (clock=20000000) báo cho trình biên dịch biết xung clock của vi điều khiển là 20 MHz, từ đó có thể tính ra các số đếm tương ứng cho các hàm delay_ms() và delay_us(). Theo hiện tượng bạn mô tả, hàm delay_ms(200) cho thời gian trễ khoảng 1 s, có thể thấy xung clock thực tế bạn đang dùng trong Proteus nhỏ hơn so với giá trị đã thiết lập trong code (20 MHz) khoảng 4, 5 lần. Với những ví dụ bật/tắt LED dùng hàm delay_ms(), mô phỏng trong Proteus chỉ tốn thời gian một cách không cần thiết. Thân, |
Có phải sử dụng lệnh: set_tris_a(0x00); để cấu hình portA là cổng xuất phải không bạn?
Như vậy nếu mình sử dụng thạch anh 4Mhz thì mình phải khai báo là: #use delay<4000000> phải không bạn? |
led
Trích:
#use delay<4000000> cái này là để khai báo tần số thạch anh ngoài mà bạn sử dụng. tuy nhiên bạn cần thêm phần fuses để thiết lập phần cứng cho pic. (4M khai báo hệ số XT, 20M khai báo hệ số HS).... tần số dao động của 16f bằng 1/4 tần số thạch anh ngoài, một lệnh của nó mất khoản 3-5 lần tần số dao động. do đó để tính được thời gian delay chính sát với thực tế bạn phải chạy mạch thật và tính chính sát các lệnh mà bạn sử dụng. |
Trích:
Hoàn toàn có thể dùng MPLAB SIM để mô phỏng và xác định thời gian delay của một đoạn lệnh bất kỳ. Nếu chịu khó tính toán kỹ, bạn cũng có thể tính toán ra thời gian delay của một đoạn lệnh bất kỳ. Khi đó, bạn có thể dùng MPLAB SIM để kiểm chứng. Thân, |
uh phần chu kỳ dao động thì em có nhằm. nhưng anh dùng MPLAB thì mõi lệnh mất khoản 1-2 chu kỳ, còn em dùng CCS thì số chu kỳ lệnh phải cao hơn chứ
|
Trích:
---MPlap đúng là cho thời gian thực hiện mỗi lệnh mất 1 đến 2 chu kỳ(đối với lệnh rẽ nhánh),CCS thì "không hẳn" sẽ tốn thời gian để thực hiện một lệnh nhiều hơn.Phát biểu của bạn mang tính chất cảm tính |
Trích:
Thân, |
chân RA4 của Pic6f877a không thể xuất ra mức điện áp cao.
em mới học pic,thử một chương trình hết sức đơn giản bằng CCS(có một số plug in) là:
#include <test RA4.h> void main() {set_tris_a(0x00); while(1) {OUTPUT_A(0b11111111);delay_ms(500); output_a(0);delay_ms(500); output_high(pin_a4);delay_ms(500); }; } nhưng chân A4 vấn không thể cho ra tín hiệu(khi mô phỏng proteus), "nghi ngờ" proteus,em test ngoài mạch cũng thế. Với cùng cách viết đó thì mọi chân xuất số khác đều hoạt động bình thường. chỉ có mỗi chân RA4. Ai giúp em với!!! |
Trích:
|
Chân RA4 đó có hai trạng thái là trở khác cao (thả nổi) và nối đất
output_high() ứng với trạng thái thả nổi Vra4 ? output_low() ứng với trạng thái nối đất Vra4 = 0 |
Múi giờ GMT. Hiện tại là 01:34 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam