Hi, I am trying to build a timer based application and using PIC16F72. My problem is that my PIC is not responding to the Serin data. I am using DT_INT to achieve the timing function.
Please help me understand if I am missing something.
My code goes like this:
Code:
;
;-----------------PIC16F72---------------------------
Include "modedefs.bas"
INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts
DEFINE OSC 4       ' OSCCON defaults to 4MHz on reset
 
;-------------CONFIGURATION FUSES SET HERE-------------------------
@ __Config _XT_OSC & _WDT_ON & _PWRTE_ON & _BODEN_ON & _CP_ALL
 
;---------VARIABLES DECLARED HERE----------------
PAUSE 100
Rx Var PortB.7
buz var PortA.2
green var PortA.1
red var PortA.0
relay var PortC.2
delay VAR word
delayset var word
get0 var byte
o var bit
s var bit
get1 var byte
 
;------------REGISTERS SET HERE------------------------
  ADCON1=7
  PORTA=0
  PORTB=0
  PORTC=0
  TRISA = %000000
  TRISC = %00000000
  TRISB = %10000000
  OPTION_REG = %10000000  ' RAPU = off
  PORTA=0
  PORTC=0
  PORTB=0
 
s=0
high red : pause 500 : high relay : pause 500 : high green : pause 500 : high buz : pause 1000
low red : pause 500 :low relay : pause 500 : low green : pause 500 : low buz : pause 1000
; the above works fine
;---------INTERRUPTS DECLARED HERE------------------------------
ASM
INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
        INT_Handler    TMR1_INT,  _delaystop,   PBP,  yes
    endm
    INT_CREATE               ; Creates the interrupt processor
ENDASM
 
T1CON=$31
 
;-------------INTERRUPTS ENABLED HERE-----------------------------
@   INT_ENABLE   TMR1_INT     ; Enable external (INT) interrupts
 ; the int works fine as I have toggled an led in ISR and it does toggle at regular intervals
;----------------MAIN PROGRAM STARTS HERE------------------------

main:
 
game:
 Serin PortB.7, N2400,["D33",get0]
high buz : pause 50 : low buz : pause 500
 
   Select case get0
; all select case statements go here which switch on the relay part & leds as well
   End Select 
goto main
 
;------------------[INTERRUPTS - interrupt handler]---------------------------------------------------
delaystop:
; All code to switch off the relay goes here after certain time has elapsed
@ INT_RETURN
I dont know what I am missing but my PIC is not respnding to the serial data. The buzzer should beep once, but it doesn't. Am I missing something?
I can upload the missing code if needed.