/************************************************ Monitor LPC2148 Marcos Augusto Stemmer *************************************************/ #include #include "monarm.h" int main (void) { int c, tf; union address ad; U0init(); /* Reset and enable T0 */ T0TCR = 2; T0TCR=0; /* Set T0 prescaler to increment every 1/32 second */ T0PR = (SYSCLK / 32)-1; T0TCR=1; LCDinit(); LCDprompt(); ad0config(); U0puts("\r\nMonitor LPC2378 PUCRS-NXP 0.11\r\n"); if(!(RTC_CCR & 0x10)){ RTC_CCR=0; RTC_CCR=2; RTC_CCR=0; RTC_CCR=0x11; } do { U0puts("\r\n>"); tf=T0TC+16; while(!(U0LSR & RXDREADY)){ if(tf!=T0TC) continue; tf=T0TC+32; U0putchar('\r'); LCDcomando(0x8c); escreve_num(le_adc0()); LCDputchar(' '); LCDcomando(0xc8); pr2dec(RTC_HOUR); LCDputchar(':'); pr2dec(RTC_MIN); LCDputchar(':'); pr2dec(RTC_SEC); U0putchar('>'); } c=U0RBR; if(c > 'Z') c ^= ('A' ^ 'a'); switch(c){ case 0x1b: c=U0getchar(); if(c==0x5b) c=U0getchar(); break; case 'C': copy(0); break; case 'V': copy(1); break; case 'D': dump(); break; case 'W': escreve_word(); break; case 'X': execute(); break; case 'A': acerta_relogio(); break; case 'I': IAP_functions(); LCDprompt(); break; case 'E': escreve_mem(); break; case ':': lehex(0x40000000); U0putchar('#'); break; case '?': case 'H': U0puts("\r\nA Acerta relogio\r\nC Copia\r\nD Dump\r\n" "E Escreve na memoria\r\nX eXecuta\r\n" "L Le ADC0\r\n" "I IAP In Application programming\r\n" "P Executa programa em 0x40000000\r\n" "W Le/escreve Word (32 bit) na memoria\r\n" "V Verifica (compara) memoria\r\n" " Cancela ou termina um comando\r\n"); break; case 'P': ad.w=0x40000000; *ad.pw=0xe59ff018; (ad.f)(); break; case '0': U0puts("T0 = "); prword(T0TC); break; } } while(1); return 0; } void UNDEF_Routine(){} void SWI_Routine(){} void FIQ_Routine(){}