#include "C:\Demo\GlassSub\GlassSubCtl.h"
#include <stdio.h>
#include <stddef.h>
#include "GlassSub_Sub.c"
#include "GS_ADCtl.c"
#include "GS_SerialCtl.c"
//#include "GS_KeyChk.c"
#ZERO_RAM
//======================================
#int_RTCC
void RTCC_isr(void)
{
TMR0L = 231; // 100 uSec Interrupt
}
//======================================
#int_TIMER1
void TIMER1_isr(void)
{
TMR1 = (0xFFFF- 1220); // 1.0 mSec Interrupt
mSec1Flag = 1;
}
//======================================
#int_TIMER2
void TIMER2_isr(void)
{
}
//======================================
#int_AD
void AD_isr(void)
{
ADC_Buffer[AD_Channel] += ADRES;
if(AD_Channel == (ADC_Size-1)) ADC_CompFlag = 1;
}
//======================================
//===== USART0 Receiver interrupt service routine
#int_RDA
void RDA_isr(void)
{
unsigned char status, data;
status = RCSTA;
data = RCREG;
if ((status & (FRAMING_ERROR | OVERRUN_ERROR))==0){
if((RX_counter >= RX_BUFFER_SIZE) & (data == 0x2A)) RX_counter = 0;
RX_Buffer[RX_counter] = data;
if(++RX_counter == RX_BUFFER_SIZE) RX_buffer_overflow = 1;
}
}
// Transmitter interrupt service routine
#int_TBE
void TBE_isr(void)
{
if(++Tx_Counter <= TX_BUFFER_SIZE){
TXREG = TX_Buffer[Tx_Counter];
TXEN = 1; //TXSTA |= TX_ENABLE; // Tx Enable
}
else{
TX_buffer_overflow = 1;
TXEN = 0; //TXSTA &= ~TX_ENABLE; // Tx Disable
}
}
//======================================
void main()
{
set_tris_E(0);
setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_OFF|ADC_TAD_MUL_0);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8|RTCC_8_bit);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
setup_timer_2(T2_DIV_BY_4,62,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
SPBRG = 0x29;
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_TIMER2);
enable_interrupts(INT_AD);
enable_interrupts(INT_RDA);
enable_interrupts(INT_TBE);
enable_interrupts(GLOBAL);
while(true){
if(mSec1Flag){
mSec1Flag = 0;
TimerCheck(); // Run Timer Check Routine
if(BuzFlag) BuzTimeCtl(); // Buzzer Output control
if(BuzOnFlag) BuzOut = 1; //BuzOut = ~ BuzOut;
else BuzOut = 0;
/*
KeyScan(); // key input check
*/
ADC_Start();
}
if(Sec1Flag){
Sec1Flag = 0;
USART_SendFlag = 1;
TestPin = ~TestPin;
}
// 1. A/D Converter oprtating Routine
if(ADC_CompFlag) ADConverter();
// 2. Serial control Routine
if(USART_SendFlag) TX_Start();
if(RX_buffer_overflow) RX_Complete();
//if(AD_Data[10] >= 153) TestPin = ~TestPin;
}
}
//#end
'PIC Microcontroller' 카테고리의 다른 글
Summary of CCS C compiler Access to PIC internal peripherals (0) | 2010.05.14 |
---|---|
PIC Microchips ORCAD Library (0) | 2010.05.13 |
PIC USB STK Schemetic (0) | 2010.05.01 |
PIC16F877A[기본프로그램] + 시리얼통신(12Byt 통신) (0) | 2010.04.16 |
PIC 18F6722 기본프로그램 (0) | 2010.04.05 |