我在 mplab v8.63 中用 pic 18F4550 上的 c 编译器 C18 编写了这个程序。如果我按下我的 picdem (S3) 上的按钮并且 RB5 上连接了一个 LED(带有一个电阻器),那么 LED 会亮起。当我按下 (S3) 并且 RB4 上有一个 LED 时,LED 将不会亮起(虽然我预计会这样)与 RB3 相同。我忘记设置什么了?
目标是使用 LDR 分别测量红色、绿色和蓝色 LED。但首先我显然必须启用端口 RB5、RB4 和 RB3。
#pragma code
/******************************************************************************/
void main (void)
{
TRISD = 0x00; // PORTD as output
TRISB = 0b00110000; // RB4 en RB5 as input
TRISA = 0x00; // RA output
RCONbits.IPEN = 0; // priority
INTCONbits.GIE = 1; // enable interrupt
INTCONbits.RBIE = 1; // interrupt portB on
while(1)
{
_asm sleep _endasm
}
}
#pragma interrupt ISR
void ISR (void)
{
//int red= 01110010011011110110111101100100;
int on = 1;
int off = 0;
if (INTCONbits.RBIF==1)
{
if(PORTBbits.RB5==0) // S3 pressed?
{
LATDbits.LATD1 ^= 1; // D2 toggle
LATAbits.LATA2 ^= on;
}
if(PORTBbits.RB4==0)
{
LATDbits.LATD1 ^= 1; // D2 toggle
LATAbits.LATA2 ^= on;
}
if(PORTBbits.RB3==0)
{
LATDbits.LATD1 ^= 1; // D2 toggle
LATAbits.LATA2 ^= on;
}
}
INTCONbits.RBIF = 0;
}