diff options
Diffstat (limited to 'electronics/asm/test.asm')
-rw-r--r-- | electronics/asm/test.asm | 69 |
1 files changed, 58 insertions, 11 deletions
diff --git a/electronics/asm/test.asm b/electronics/asm/test.asm index 057bc1f..38ca537 100644 --- a/electronics/asm/test.asm +++ b/electronics/asm/test.asm @@ -1,13 +1,60 @@ start: init: - clrf PORTA ; make sure port A output latches are low - clrf PORTB ; make sure port B output latches are low - bsf STATUS,RP0 ; select memory bank 1 - movlw b'11111111' ; set port A data direction to inputs - movwf TRISA - movlw b'00000000' ; set port B data direction to outputs - movwf TRISB - bcf STATUS,RP0 ; select memory bank 0 - goto main -main: - END ; ends the program + clrf PORTA ; make sure port A output latches are low + bsf STATUS,RP0 ; select memory bank 1 + movlw b'11111111' ; set port A data direction to inputs + movwf TRISA + movlw b'00000000' ; set port B data direction to outputs + movwf TRISB + bcf STATUS,RP0 ; select memory bank 0 + + bsf INTCON, INT0IE + bsf INTCON, GIE + + rawtemp EQU B6 + countdown EQU B7 + + movlw 5 + movwf countdown + + movlw 0 + + goto main + +interrupt: + clrf PORTB ; clear PORTB + goto start ; restarts the program + +beep: ; a for loop that beeps a buzzer and turns on a led then sets a led on + ; if nothing is done + + bsf PORTB, 0 ; put a RED LED on PORTB:0 + bsf PORTB, 1 ; put a BUZZER on PORTB:1 + call wait1000ms + bcf PORTB, 0 + bcf PORTB, 1 + call wait1000ms + + decfsz countdown, F + goto beep + + bsf PORTB, 2 ; put an AMBER LED on PORTB:2 + + goto start +main: ; reads the temprature + call readadc1 ; put a THERMISTOR on PORTA:1 + movf B1, W + movwf rawtemp + + call readadc0 ; put a POT on PORTA:0 + movf B0, W + + subwf rawtemp, w ; subtract the from the threshold value + btfss STATUS, 0 ; if higher than desired temp + goto beep ; ^ + + clrf STATUS + + goto main + + END ; ends the program |