Вы находитесь на странице: 1из 3

' ---------------------

[���������]--------------------------------------------------------
'
' ����......proj15PBC.bas
' ������....PicBasic Compiler
' ����......����� � �������� ���������� ����������, �������� Sharp GP2D15 ->
PIC16F876
' �����.....��� ��������
' ������....20 ����� 2002 ����
' �������...
'
'
' ---------------------[��������
���������]-----------------------------------------------
' ��� ��������� ������������� �� PIC16F876 � �������� �������-����������,
���������� �
' �������� �������������. � �������� ����� ������ ���������� ���������� �
�������������
' � ��� ���� ������������ ���������� GP2D15 ������������ ����� Sharp. ���
����������� ����
' ��������� ����� ����� ����������� ������, ������������ ������� ������������ �����
�����
' � ������� ���������� �� ����� ����. ���� ���������� ����� ����������, �� �����
' ��������, � ����� ����� ����� �������� ������. ���� ������� - ��������� ������
�����
' ����� � ��������� ����� � ������������ �������� � �� ������.
'
' ��������� � �����:
'
' PIC ���������
' --- -----------
' RA0 ����� GP2D15
' RC1 ����� ��������� (�������)
' RC3 ����������� ��������� (�������)
' RC6 ������ ��������� (������)
' RB2 ���������� ������� ������
' RB5 ���������� ������� GP2D15
' RB7 ���������� ������ ������
'
' ---------------------[������ ������
���������]------------------------------------------
'
'
'
' ---------------------[�����������
��������]---------------------------------------------
'
symbol GP2D15 = bit0 ' ��� �������� � ������ 0 ����� PORTA
symbol adcon1 = $9f ' ����� ����������� �������� ���
symbol trisa = $85 ' ����� �������� TRIS ����� PORTA
symbol trisc = $87 ' ����� �������� TRIS ����� PORTC
symbol porta = 5 ' ����� �������� ������ ����� PORTA
symbol portc = 7 ' ����� �������� ������ ����� PORT�

'
' ---------------------[�����������
����������]-------------------------------------------
'
symbol position = b2 ' ���������, � ������� ������� ����������� ��
' ����������
symbol move = b3 ' ���������, ���������� ����� ����������� ������
symbol x = b4 ' �������� ���������
symbol scan = b5 ' ���������, ���������� ��������� ������� GP2D15
'
' ---------------------[���������
�������������]------------------------------------------
'
Init:
poke ADCON1, 7 ' ������� ��� ������ ����� PORTA ��������� ��������
poke TRISA, %11111111 ' ������� ��� ������ ����� PORTA �������
poke TRISC, %00000000 ' ������� ��� ������ ����� PORTC ��������
DIRS = %11111111 ' ������� ��� ������ ����� PORTB ��������
scan = 100 ' ������ �������� ����������, ����������� ���������
' ������� GP2D15, = 100
'
' ---------------------[�������
��������]------------------------------------------------
'
main:
poke portc, 0 ' �������� ��� ����������
position = 0 ' �������� ��������� Position

' ***��������� �����������


for scan = 70 to 230 step 10 ' ������ ������������ �������� GP2D15 ������ ������
pulsout 5, scan ' �������� ������, ������� ���������
����, ��
' ����������
pause 20 ' �����, ���� ���������� �����������
peek porta, b0 ' ��������� ���� PORTA
if GP2D15 = 0 then skp ' ���� ���������� �� ����������, �� ������� � �����
' skp
if scan > 150 then pas ' ��������� �������� ���������� scan
position = 1 ' ���� scan ������ ��� ����� 150, �� ���������
' ���������� position �������� 1
goto skp ' ���������� ������� ���������, �������
���������,
' ����� scan > 150
pas:
position = 2 ' ���� scan ������ 150, �� ���������
' ���������� position �������� 2
skp:
next ' �������� ����� � ������ ����� ���������
�������
' GP2D15

' ***���������� ����������


if position <> 0 then decide ' ���������, ���� �� ���������� ����������
' ���������� �������������
' ���� ����, �� ������� � ����� Decide

' ***���������� �� ����������, ��������� ������� ������


poke portc, 0 ' �������� ��� ����������
poke portc, %00001000 ' ������ ������� ���������
move = 6 ' ������ �������� ����������, �����������
���������
' �������
for x = 1 to move ' ������ ���� ��������� �������������,
����������
' ������ �� ��������
pulsout 2, 100 ' ���������� ���������� ������� ������
pulsout 7, 200 ' ���������� ���������� ������ ������
pause 10 ' �������� � 10 ����������� �� ������������
��������
' ������
next ' ��������� ��������� ���������� ������
Ret:
goto main ' �������� � ������� ��������� � ����� main �
' ������ ��� �����

decide:
branch position, (main, right, left)' ������� ���� �� �������� ���������
goto main ' ������� � ����� Main, ���� ��������� position
> 2

' ***���������� ���������� �����, ��������� �������� �������


left:
poke portc, 0 ' �������� ��� ����������
poke portc, %00000010 ' ������ ����� ���������
move = 6 ' ��������� ���������� Move �������� = 6
For x = 1 to move ' ������ ��������� ������� ��������
pulsout 7, 200 ' ���������� ����� ������ ������, ����� ��������
������
pause 30 ' �������� �� ������������ �������� ������
next ' ��������� ����, ��������� ������ � ��������
goto ret ' �������� � ������� ��������� � ����� Ret

' *** ���������� ���������� ������, ��������� �������� ������


right:
poke portc, 0 ' �������� ��� ����������
poke portc, %01000000 ' ������ ������ ���������
move = 6 ' ��������� ���������� Move �������� = 6
For x = 1 to move ' ������ ��������� ������ ��������
pulsout 2, 100 ' ���������� ������ ������ ������, ����� ��������
�����
pause 30 ' �������� �� ������������ �������� ������
next ' ��������� ����, ��������� ������ � ��������
goto ret ' �������� � ������� ��������� � ����� Ret

goto main ' �������� ����������� ����, ���������� � ����� Main