View Single Post
Old 09-02-2010, 06:34 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nbb3i View Post
Trước đây mình mới chỉ tìm hiểu về PIC thông qua ngôn ngữ C và trình dịch CCS. Bây giờ muốn quay lại nghiên cứu lại ngôn ngữ ASM để có thể hiểu sâu hơn về phương thức làm việc của dòng vi xử lý này.
Bạn nào có thể giúp mình giải đáp thắc mắc sau đây với:
Code:
#define DATA input(PIN_B0)
int32 pointer[];
int32 counter=0,timer=0;
for(counter=1;counter<10000000;counter++)
{
    if (DATA==1) 
    {
         pointer[timer]=counter;
         timer++;
    }
    while(DATA==1) counter++;
}
Đoạn trên mình định lập trình để ghi lại sườn lên của một tín hiệu chu kỳ lớn nhưng bề rộng xung nhỏ. trong vòng for gồm 2 lệnh là tăng counter và so sánh DATA. Tuy nhiên thắc mắc của mình là:
- Những lệnh trên có thể viết lại bằng ASM như thế nào?
- Số chu kỳ lệnh tương xứng với các lệaanh ASM đó có tính được hay không?

Ai biết xin giải đáp giúp mình với nhé! Xin cảm ơn!
Nếu bạn chỉ muốn biết các lệnh trên được viết thế nào bằng hợp ngữ thì có thể mở file listing của trình dịch C để xem đoạn mã hợp ngữ tương ứng (tính năng này thường có trong các trình dịch C, nhưng tôi không dùng CCS C nên không rõ trình dịch đó có tính năng này hay không, với các trình dịch C của Microchip thì tôi biết chắc là có tính năng này).

Nếu đã có đoạn mã hợp ngữ thì có thể tính được số chu kỳ lệnh tương ứng.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn