Điều gì gây ra việc BẬT một chân đầu ra duy nhất trên Microchip PIC16F690 để tự động TẮT một pin khác trên cùng một cổng? Tôi có thể giải quyết vấn đề này bằng cách viết một byte cho toàn bộ cổng, điều khiển đồng thời tất cả các chân, thay vì chỉ một chút để kiểm soát trạng thái pin. Tôi đang sử dụng trình biên dịch Hi-Tech C tại đây. Tôi đang xác định trạng thái của pin với 9 đèn LED mỗi cái tiêu tốn 3 mA. Đây là cách dưới thông số kỹ thuật tối đa.
Tệp tiêu đề mplab có chân 0 trên cổng A được khai báo như sau:
volatile bit RA0 @ ((unsigned)&PORTA*8)+0;
Tôi đang bật pin bằng cách viết một giá trị cao cho nó.
RA0 = 1;
Có phải vấn đề mà trình biên dịch đang coi "1" là một byte và ghi vào toàn bộ cổng không? Tôi có cần phải đúc nó không? Nếu vậy, không nên có trình biên dịch cho tôi một lỗi?
RA0 = (bit) 1;
Nếu tôi viết cho toàn bộ cổng, mọi thứ sẽ hoạt động như mong đợi:
PORTA = 0b00000001;