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

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

[���������]----------------------------------------------------
'
' ����......proj09pro.bas
' ������....PicBasic Pro
' ����......���������������� ���� -> PIC16F876 -> ��� (� 4-������ �����������)
' �����.....��� ��������
' ������....22 ����� 2002 ����
' �������...
'
'
' ---------------------[��������
���������]-----------------------------------------------
'
' ���������� ������ PIC16F876 � ���-�����:
'
' PIC ��� ������ ���������
' --- --- ------------------
' B4 ���.11
' B5 ���.12
' B6 ���.13
' B7 ���.14
' B3 ���.4
' B0 ���.6
' OSC1 ��������� 4 ���
' OSC2 ��������� 4 ���
' MCLR VDD ����� �������� �������������� � 1 ���
' VDD +5 �
' VSS ����
' B1 Max232 (RX) � �����
' B2 Max232 (TX) � ��������
'
' ---------------------[������ ������
���������]------------------------------------------
'
'
'
' ---------------------[����������� ����� � ���������
�������]---------------------------
'
include "modedefs.bas" ' ������� ���� � ������������ �������
' ����������������� �����
Define LOADER_USED 1 ' ��� ������ ����� ������ ���� �� ��������
' PIC-����������������
' ����������� ��������� ���������
DEFINE LCD_DREG PORTB ' ������ ���� PIC-���������������� �� ��������
' ������ �� ���
DEFINE LCD_DBIT 4 ' ������ ������ ����� ����� PORTB, ������� �����
' �������� � ������ DB4 ���
DEFINE LCD_RSREG PORTB ' ������ ���� PIC-����������������, ������� �����
' �������� ������ RS �� ���
DEFINE LCD_RSBIT 3 ' ������ ����� ����� PORTB, � �������� �����
' ��������� ������ RS �� ���
DEFINE LCD_EREG PORTB ' ������ ���� PIC-����������������, ������� �����
' �������� ������ E �� ���
DEFINE LCD_EBIT 0 ' ������ ����� ����� PORTB, � �������� �����
' ��������� ������ E �� ���

DEFINE LCD_BITS 4 ' ������ 4-������ ����� ������ ����������� �� ���


DEFINE LCD_LINES 2 ' ������ ��� ����� � 2 �������� ����������

DEFINE LCD_COMMANDUS 2000 ' ������ ����� ����� ��������� ������ �� ���

DEFINE LCD_DATAUS 50 ' ������ ����� ����� ��������� ������ �� ���

' ---------------------[�����������
��������]---------------------------------------------
'
'
'
' ---------------------[�����������
����������]-------------------------------------------
'
ROW var byte ' ����� ������ ���
LOCATION var byte ' ����� ������� (����� � ������) ���
VALUE var byte ' ASCII-��� ������� �� ���������� �� ���
char var byte ' ��������� �� ���������� ������� ���� �������
'
' ---------------------[���������
�������������]------------------------------------------
'
Init:
TRISB = $0000 ' ��� ������ �������� � 0 ����� �������
portb = %11111111 ' ������, �������� � ���
LCDOUT "Serial LCD" ' ���������� �� ��� �������� � �������� ����� �������
pause 1000 ' ��������� 1 �������
'
' ---------------------[�������
��������]------------------------------------------------
'
' ���������� �������� �� ������
'
' **********************�������
���������************************************************

Start:
SERIN 1, T2400, ROW, LOCATION, VALUE ' ������ ������ ����� ����������������
����
Row = Row - $30 ' ��������� ����������
��������� ����� ������
Location = Location - $30 ' ��������� ��������� ����� ����� �
������

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


��������************************
'
' ���� ROW = 0, �� ��� ������� � ������� � ����� Command
' ���� ROW �� = 0 � LOCATION = 0, �� ���������� ������, ��� �������� ����� VALUE, �
���
' �����, ��� �������� ������. VALUE � ��� ASCII-��� ����������� �������, ���������
�����
' ������, ������� � �������������� ���-�����.

IF ROW <> 0 AND LOCATION = 0 THEN DISPLAY ' ��������� �� ����


BRANCH ROW, [COMMAND, Row1, Row2] ', Row3, Row4] ' ������� � ������ ������

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


������*****

Row1:

LOCATION = LOCATION - 1 ' �������� ������ ���� � ������ ���, �����


' ���� �������� � ���

' ��������� � ���� ������ ������� �� �������������� ������� ����� � ������


' � ���, ������� ����� �������� �� ���, ����� �� ���������� ������ � ��� �����.

LOOKUP LOCATION, [$81, $82, $83, $84, $85, $86, $87, $88, $89, $8A, $8B, $8C, $8D,
$8E, $8F, $90, $91, $92, $93], char
GOSUB LCDcmd ' ������� � ������������ �������� ������� ��
���
GOTO DISPLAY ' ������� � ������������ ����������
�������

Row2:

LOCATION = LOCATION - 1 ' �������� ������ ���� � ������ ���, �����


' ���� �������� � ���

' ��������� � ���� ������ ������� �� �������������� ������� ����� � ������


' � ���, ������� ����� �������� �� ���, ����� �� ���������� ������ � ��� �����.

LOOKUP LOCATION, [$C0, $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC,
$CD, $CE, $CF, $D0, $D1, $D2, $D3], char
GOSUB LCDcmd ' ������� � ������������ �������� ������ �� ���
GOTO DISPLAY ' ������� � ������������ ����������
�������

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


����,*
'
' **********************����� ��������������� �� �� ����������� �4 ������ �� 16
��������
'
' Row3:
'
' LOCATION = LOCATION � 1
' LOOKUP LOCATION, [$94, $95, $96, $97, $98, $99, $9A, $9B, $9C, $9D, $9E, $9F,
$A0, $A1, $A2, $A3, $A4, $A5, $A6, $A7], char
' GOSUB LCDcmd
' GOTO DISPLAY
'
'
' Row4:
'
' LOCATION = LOCATION - 1
' LOOKUP LOCATION, [$D4, $D5, $D6, $D7, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF,
$E0, $E1, $E2, $E3, $E4, $E5, $E6, $E7], char
' GOSUB LCDcmd
' GOTO DISPLAY
'
' **********************��������� �������� ������������� ������� ������������
WrLCD********

DISPLAY:
char = VALUE ' ��������� ������� ���� ������� � ���������� char
GOSUB WrLCD ' ������� � ������������, ������ �������� ��������
' char �� ���-������
GOTO START ' �������� � ������ �������� ���������

' **********************���� ROW = 0, �� ��������� ������� �� ���������


������:***********

' 0 �������� ����� ��� � ����������� ������ � ������ ������ ������


' 1 ����������� ������ �����
' 2 �������� ���������, �������� ������, �������� ������� �������
' 3 ������� ���������, �������� ������, �������� ������� �������
' 4 ������� ���������, ������� ������, �������� ������� �������
' 5 ������� ���������, �������� ������, ������� ������� �������
' 6 ������� ���������, ������� ������, ������� ������� �������
' 7 ����������� ��� ������������ ������� ������
' 8 ����������� ��� ������������ ������� �����
' 9 ����������� ������ ������

COMMAND:
value = value - $30 ' ��������� ���������� ��������� ����� �������
' (�� ������������ �������� ��� �� �������)

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


������� ���*
' **********************� ��������� ��� � ����������
char*********************************

LOOKUP VALUE, [$01, $10, $08, $0C, $0E, $0D, $0F, $1C, $18, $14], char
GOSUB LCDcmd ' ������� � ������������ ��������� ������� �� ���
GOTO START ' ������� � ������ �������� ���������

' **********************������������ ��������� ���� ������� �� ���-


������******************
'
LCDcmd:
LCDOUT $FE, char ' �������� ������� �� ���
RETURN ' �������� � �� �����, ������ ���� ������� ���
' ������������

' **********************������������ ��������� ������� ���� ASCII �� ���-


������************
'
WrLCD:
LCDOUT char ' �������� ������ �� ���
RETURN ' �������� � �� �����, �� �������� ����
' ������� ��� ������������

END