Trích:
Nguyên văn bởi Duy_pro
PIC không phải là sở trường của tôi, nhưng có một số vấn đề sau tôi chưa thấy F và các bạn đề cập trong diễn đàn. Mong giải đáp giúp:
1. Cơ chế ngắt trong PIC: theo tôi đc biết, khi có ngắt xảy ra, PIC dừng mọi hoạt động hiện thời, nạp giá trị bộ đếm chương trình vào ngăn xếp. Sau đó trỏ tới 0x0004H( vector ngắt) để phục vụ dịch vụ ngắt. Và trở về công việc trước đó khi gặp lệnh RETFIE. Tuy nhiên tôi thấy trong PIC chỉ có 1 vector ngắt tại 0x0004H. Do đó khi có bất kỳ ngắt nào con trỏ chương trình đều trỏ tới vector ngắt trên. Nhưng trong PIC có tới 14 ngắt. Vậy khi chương trình muốn SD nhiều ngắt thì làm thế nào?
Có phải kiểm tra nguồn gây ngắt để rẽ nhánh chương trình không?
VD: khi có ngắt TMR0 thì kiểm tra bit INTCON.2 (T0IF) rồi thực hiện lệnh GOTO để nhảy tới dịch vụ ngắt TIMER0 không? .........
2. Chế độ bảo vệ chương trinh: tôi có 2 con chip: PIC16LC715 và PIC16LF876
+ với PIC16LC715 chỉ cho phép nạp 1 lần đúng kô
+ Với PIC16LF876 cho phép nạp nhiều lần nhưng có Protect
vậy có cách nào có thể đọc đc chương trình từ hai con này ra không?
Mong cao kiến từ các FAN của PIC!
|
1. Những gì bạn nói áp dụng cho các PIC dòng cơ bản (PIC12, PIC16), PIC10 hoàn toàn không xử lý ngắt. Bạn muốn xử lý ngắt nào thì kiểm tra cờ ngắt tương ứng và thực hiện những công việc tương ứng. Bằng cách này, bạn có thể tự quyết định thứ tự ưu tiên khi xử lý nhiều ngắt. Ví dụ của bạn là một trong những cách thích hợp.
2.
+ PIC16LC715 có phiên bản JW cho phép nạp/xóa chương trình nhiều lần (bộ nhớ chương trình là EPROM, xóa bằng UV). Chip này cũng có chế độ code protect (trừ vùng 0x00 - 0x3F).
Nếu cả hai chip đều bị protect code thì cách chắc chắn nhất mà dân reverse engineering hay làm là mài vỏ và dùng kính hiển vi để đọc.
Thân,