Demo Digital Alarm Clock Assembly Source Code
Demo Digital Alarm Clock Assembly Source Code
*********************
;This software is provided in an AS IS condition,NO WARRANTIES in any form apply t
o this software.
; picmicrolab.com 8.2.2014
;*******************************************************************************
********************
;PIC16F876A Based Digital Alarm Clock RB0 - Alarm, RB1 - Time,RB3 - Min,RB4 - H
ours, RB5 - Buzzer,
LIST P=PIC16F876A
include <P16f876A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _D
EBUG_OFF & _CPD_OFF
;-------------------------------------------------------------------------------
----------------------
OnesMin EQU 0X30 ;1's minutes
TensMin EQU 0X31 ;10's minutes
OnesHour EQU 0X32 ;1's hours
TensHour EQU 0X33 ;10's hours
;-------------------------------------------------------------------------------
----------------------
OnesMinAlarm EQU 0X60 ;1's minutes
TensMinAlarm EQU 0X61 ;10's minutes
OnesHourAlarm EQU 0X62 ;1's hours
TensHourAlarm EQU 0X63 ;10's hours
;-------------------------------------------------------------------------------
---------------------
org 0x00
reset:
goto start
org 0x04
goto IntSRV
org 0x10
start: bcf STATUS, RP0
bcf STATUS, RP1
clrf PORTA
bsf STATUS, RP0
movlw 0x06
movwf ADCON1; all A,E digital
movlw 0xff ; RB7-RB0 of PORTB are inputs
movwf TRISB
bcf OPTION_REG,0x07 ; RBPU is ON -->Pull UP on PORTB is enab
led
movlw 0x00
movwf TRISA
clrf TRISC
bcf STATUS, RP0
bsf PORTC,0X00
clrf T1CON
movlw 0xD8
movwf TMR1H
movlw 0xF0
movwf TMR1L
clrf INTCON
bsf STATUS,RP0
clrf PIE1
bcf STATUS,RP0
clrf PIR1
movlw 0x20
movwf T1CON
bsf INTCON,PEIE
;bsf INTCON,GIE
bcf INTCON,GIE
bsf STATUS,RP0
bsf PIE1,TMR1IE
bcf STATUS,RP0
bsf T1CON,TMR1ON
bcf STATUS, RP0 ;Bank 0
;--------------------------Default Time Settings-----------------------
movlw 0x00
movwf OnesMin
movlw 0x00
movwf TensMin
movlw 0x00
movwf OnesHour
movlw 0x00
movwf TensHour
;-------------------------Default Alarm Settings-------------
movlw 0x03
movwf OnesMinAlarm
movlw 0x02
movwf TensMinAlarm
movlw 0x01
movwf OnesHourAlarm
movlw 0x00
movwf TensHourAlarm
;------------------------------------------------------------