summaryrefslogtreecommitdiff
path: root/electronics/asm/test.asm
diff options
context:
space:
mode:
Diffstat (limited to 'electronics/asm/test.asm')
-rw-r--r--electronics/asm/test.asm69
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