À, bạn viết chương trình bằng MPLAB C30. Một lệnh gán xung_out = 0 chưa chắc được dịch thành một lệnh hợp ngữ (mặc dù tôi thử với C30 v3.01 thì mỗi lệnh gán đó tương ứng với 1 lệnh hợp ngữ). Để kiểm tra, bạn biên dịch code xong, dùng lệnh 'Disassembly listing' trong mênu View để xem mã dịch ngược từ mã máy đã được dịch ra.
Cũng nên kiểm tra xem từ cấu hình liên quan có mang đúng giá trị cần thiết hay không, trước khi nạp chương trình vào chip. Và không loại trừ nguyên nhân thạch anh chất lượng kém.
Tôi thường dùng ngoại vi để tạo xung ở ngõ ra khi cần đo tần số clock của PIC/dsPIC. Bạn tham khảo link sau:
http://www.picvietnam.com/forum/showthread.php?t=2317
Thân,