| ??? 07/28/04 13:21 Read: times |
#75034 - RE: LPC935 - Problems with Interrupt Responding to: ???'s previous message |
Dear Eric, I changed the register bank.
Priority 1 uses the register bank 1 and priority 2 uses register bank 2. The changing took no affect to the result.
#include <Reg935.h>
#include "LPC935.h"
void main(void)
{
PORT_init(); // sets up the Ports
ADC_init(); // sets up the ADC
RTC_init(); // sets up the RTC
while(1);
}
void PORT_init(void)
{
P1M1 = 0x00; // Push Pull output for all P1 Ports
P1M2 = 0xFF;
P1=0;
P2M1 = 0x00; // Push Pull output for allP2Ports
P2M2 = 0xFF;
P2=0;
EA = 1; // Enable Interrupts
}
#include <Reg935.h> //Keil header file name
#include "ADC.h"
int counter = 0;
void ADC_init(void)
{
ADMODB |= 0xE8; // configure clock divider ->8
P0M1 |= 0x02; // set adc1 channel pins to input
P0M2 &= ~0x02; // channel 10, Port0.1
P0M1 |= 0x04; // channel 11, Port0.2
P0M2 &= ~0x04;
P0M1 |= 0x08; // channel 12, Port0.3
P0M2 &= ~0x08;
P0M1 |= 0x10; // channel 13, Port0.4
P0M2 &= ~0x10;
ADMODB &= ~0x08; // enable ADC mode for ADC1
ADCON1 |= 0x44; // configure adc1 and enable
IP1H &= ~0x80; // set interrupt priority to 1
IP1 |= 0x80;
EAD = 1; // enable adc interrupt
ADMODA |= 0x40;//40 auto scan continuous conversion
ADINS = 0x30; // input ports AD10 and AD11
ADCON1 |= 0x01;// select trigger, start immediately
}
void adc_isr(void) interrupt 14 using 1
{
if (ADCON1 & 0x08) // adc1 conversion complete?
{
ADCON1 &= ~0x08; // clear ADCI1 flag
if(counter==1000) //lights for testing
{
if(P2 & 0x4)
P2 &= ~0x4;
else
P2 |= 0x4;
counter=0;
}
counter++;
}
}
#include <Reg935.h> //Keil header file name
#include "RTC.h"
#include "CCU.h"
void RTC_init(void)
{
RTCH = 0xE1; // count frequency = 0.99997s
RTCCON = 0x62; // select CPU Clock,enable interrupt
EWDRT = 1; // enable interrupt
IP0H |= 0x40; // Set interrupt priority to 2
IP0 &= ~0x40;
RTCCON |= 0x01; // start real time clock
}
void watchdogrtc_isr(void) interrupt 10 using 2
{
if (RTCCON & 0x80)// interrupt caused by real time
{
RTCCON &= ~0x80;// clear RTCF interrupt flag
if(P2 & 0x1) // lights for testing
P2 &= ~0x1;
else
P2 |= 0x1;
}
}
|



