Вот код: Device = 16F628A ;Используеlый микроконтроллер
XTAL = 20 ;Частота осциллятора 20 МГц
Config WDT_OFF, BODEN_ON, INTRC_OSC_NOCLKOUT, LVP_OFF, CP_OFF, PWRTE_ON, MCLRE_OFF
Declare ALL_DIGITAL = On ' Установить все порты цифровыми входами/выходами
PORTB_PULLUPS = On ' Включить подтягивающие резисторы на PORTB
Declare LCD_TYPE ALPHA ' Тип ЖКИ - буквенно -цифровой
Declare LCD_DTPIN PORTA.0 ' Порт данных ЖКИ
Declare LCD_ENPIN PORTA.7 ' Цепь управления E
Declare LCD_RSPIN PORTA.6 ' Цепь управления RS
Declare LCD_INTERFACE 4 ' Разрядность шины данных
Declare LCD_COMMANDUS 200 ' Задержка перед посылкой команды
Declare LCD_DATAUS 50 ' Задержка перед посылкой данных
Declare LCD_LINES 2 ' Количество строк ЖКИ
INTCON=%11010000 'РАЗРЕШАЕМ ПРЕРЫВАНИЯ RB0
'---------------------------------Объявление переменных----------------------------------
cnt var word
oldcnt var word
buffer var byte
cnt=0
oldcnt=0
'-----------------------------------Главная программа------------------------------------
on_hardware_interrupt GoTo PULSE
PORTB=0
TRISB=%00000111
_start:
Cls
start:
If cnt<>oldcnt Then
Print At 1,1, Dec cnt
oldcnt=cnt
endif
GoSub receive
If buffer="3" Then PORTB.3=1
If buffer="4" Then PORTB.4=1
If buffer="5" Then PORTB.5=1
If buffer="6" Then PORTB.6=1
If buffer<>"3" And buffer<>"4" And buffer<>"5" And buffer<>"6" Then GoTo all_stop
GoTo start
all_stop:
PORTB=0
GoTo start
receive:
HSerIn [buffer]
Return
PULSE:
Context SAVE
CNT=CNT+1
INTCON.1 = 0
Context Restore
End