0661774ワット発電中さん
2016/05/10(火) 05:29:38.33ID:QQdS5pnE;===== sensor OFF: LED_green blink
LED_Blnk:
wdr ;reset watch_dog timer
sbi PInB,_LED_Gr ;toggle LED_green ON/OFF
ldi YH,HIGH(1000) ;delay for 1Sec
ldi YL,LOW(1000)
;
LED_Blnk1: ;delay for 1mS
ldi ZH,HIGH(1989) ;adjusted by oscilloscope
ldi ZL,LOW(1989)
LED_Blnk2:
sbiw ZL,1 ;1mS elapsed ?
brne LED_Blnk2 ;No, wait 1mS
;
sbis ACSR,_ACO ;Yes, then comparator is Hi (sensor is OFF) ?
rjmp OSC_Out ; No, goto output OSC wave
sbiw YL,1 ; Yes, then 1S elapsed ?
brne LED_Blnk1 ; No, wait 1S
rjmp LED_Blnk ; Yes, loop again
;
;===== sensor ON: OSC output
OSC_Out:
sbi PortB,_LED_Gr ;LED_green turn OFF
cbi PortB,_LED_Rd ;LED_red turn ON ;
OSC_HL:
wdr ;reset watch_dog timer
sbi PortB,_AMP ;OSC High period (speaker ON)
ldi YL,Hi_period
OSC_H:
subi YL,1
brne OSC_H
;
cbi PortB,_AMP ;OSC Low period (speaker OFF)
ldi YL,Lo_period
OSC_L:
subi YL,1
brne OSC_L
sbis ACSR,_ACO ;comparator is Hi (sensor is OFF) ?
rjmp OSC_HL ;No, OSC go on
;
sbi PortB,_LED_Rd ;Yes, LED_red turn OFF
rjmp LED_Blnk ;return to LED_green blink
;