Ðề tài: interrupt in C18
View Single Post
Old 25-07-2007, 04:17 AM   #4
littlephoc
Đệ tử 3 túi
 
Tham gia ngày: Dec 2006
Bài gửi: 60
:
Em viết hàm main() như sau , các ngắt vẫn không hoạt động:
Code:
#define DISABLE_INTERRUPTS_H(); {while(INTCONbits.GIEH) INTCONbits.GIEH=0;}  
#define DISABLE_INTERRUPTS_L(); {while(INTCONbits.GIEL) INTCONbits.GIEL=0;}  
#define ENABLE_INTERRUPTS_H(); {INTCONbits.GIEH=1;} 
#define ENABLE_INTERRUPTS_L(); {INTCONbits.GIEL=1;} 

#pragma code page
void reset_button( void )
{
//	Reset();
	_asm RESET _endasm
}

void rx_handler( void )
{
	char c;
	c = ReadUSART();
	putcUSART(c);	
}

void main(void)
{
	TRISA = 0x2F;             // A4 for blink led
	TRISB = 0xDF;		// RB5 is output
	TRISC = 0x90;           // 
	LATBbits.LATB5 = 1;
	LATAbits.LATA4 = 1;
	OpenADC(ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_8_TAD, 
			ADC_CH8 & ADC_INT_OFF ,3); //
			ADCON1=0x3; // Vref+ Vdd, Vref- Vss

	OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON &
				USART_ASYNCH_MODE &	USART_EIGHT_BIT &
				USART_CONT_RX & USART_BRGH_HIGH, 8); //8 bits, 57600
	// Setup for SPI mode
	SSPSTAT = 0x40;
	SSPCON1 = 0x30;
	DISABLE_INTERRUPTS_H(); 
	DISABLE_INTERRUPTS_L();

	OpenRB0INT (PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & FALLING_EDGE_INT);// setup interrup for RB0
	OpenRB1INT (PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & RISING_EDGE_INT); // setup interrupt for RB1

	ENABLE_INTERRUPTS_H(); 
	ENABLE_INTERRUPTS_L();

	while(1);

}
xuất nhập với usart không hoạt động
phím B1 nhấn tới nhấn lui không thấy gì cả (em có chèn thêm vài dòng code để đèn nhấp nháy, nếu reset thì sẽ delay 1 thời gian rồi mới nhấp nháy).

thay đổi nội dung bởi: littlephoc, 25-07-2007 lúc 04:35 AM.
littlephoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn