'**************************************************************** '* By : Comana Gian Luca * '* Notice : DIGITAL SERVO TEST * '* All Rights Reserved * '* Date : 20/08/2000 * '* Version : 2.10 * '* Revision : * '* Notes : http://www.rcmodellismo.it * '**************************************************************** Device 16F84A Declare XTAL 4 i VAR WORD b VAR WORD c VAR WORD e VAR WORD sx VAR WORD cx VAR WORD dx VAR WORD IF PORTA.2 = 1 Then sx = 1000 cx = 1500 dx = 2000 Else sx = 900 cx = 1500 dx = 2100 EndIF High 0 'reset Pause 250 Low 0 Pause 250 High 0 Pause 250 IF PORTB.5 = 0 AND PORTA.0 = 0 Then GoTo Test2 'test ingranaggi IF PORTA.0 = 0 Then GoTo Test0 'test potenziometro Test1: 'test fisso i = cx e = cx IF PORTA.1 = 0 Then i = sx e = sx EndIF loop1: IF i = sx Then High 0 Low 1 EndIF IF i = cx Then High 0 High 1 EndIF IF i = dx Then Low 0 High 1 EndIF IF e < i Then e = e + 10 IF e > i Then e = e - 10 IF PORTB.4 = 0 OR PORTB.6 = 0 Then GoTo Loop1a High 2 PauseUs e Low 2 PauseUs 23000 IF e = i Then 'tasto cx IF PORTB.5 = 0 AND e >= sx Then i = cx IF PORTB.5 = 0 AND e >= cx Then i = dx IF PORTB.5 = 0 AND e >= dx Then i = sx EndIF GoTo loop1 End loop1a: 'tasti sx dx IF e < cx Then High 0 Low 1 EndIF IF e = cx Then High 0 High 1 EndIF IF e > cx Then Low 0 High 1 EndIF IF PORTB.5 = 0 Then High 0 High 1 For b = 1 TO 20 High 2 PauseUs e Low 2 PauseUs 23000 Next b i = e DIG 0 i = 10 - i e = i + e i = cx GoTo Loop1 EndIF IF PORTB.4 = 0 Then e = e - 1 IF PORTB.6 = 0 Then e = e + 1 IF e > dx Then e = dx High 0 EndIF IF e < sx Then e = sx High 1 EndIF High 2 PauseUs e Low 2 PauseUs 23000 GoTo loop1a End End Test0: ' test potenziometro For i = sx TO dx c = ( sx + dx ) - i IF PORTB.5 = 0 Then GoTo Test0 High 0 For b = 1 TO 5 High 2 PauseUs c Low 2 PauseUs 23000 Next b Low 0 For b = 1 TO 20 High 2 PauseUs c Low 2 PauseUs 23000 Next b Next i For i = sx TO dx IF PORTB.5 = 0 Then GoTo Test0 High 0 For b = 1 TO 5 High 2 PauseUs i Low 2 PauseUs 23000 Next b Low 0 For b = 1 TO 20 High 2 PauseUs i Low 2 PauseUs 23000 Next b Next i GoTo Test0 End Test2: ' test ingranaggi For i = sx TO dx STEP 5 c = ( sx + dx ) - i High 0 High 2 PauseUs c Low 2 PauseUs 23000 Low 0 For b = 1 TO 2 High 2 PauseUs c Low 2 PauseUs 23000 Next b Next i For i = sx TO dx STEP 5 High 0 High 2 PauseUs i Low 2 PauseUs 23000 Low 0 For b = 1 TO 2 High 2 PauseUs i Low 2 PauseUs 23000 Next b Next i GoTo Test2 End