Я недавно начал разбираться с PicBasicPro да и с микроконтроллерами в целом по книге В.Н. Хилинского.
немогу разобраться с примером работы с внешней памятью: ' --[ Определения ]----------------------
DEFINE LCD_DREG PORTB ' Определяем порт, к которому
' подключается шина данных ЖКИ.
DEFINE LCD_DBIT 4 ' Определяем первый контакт PORTB, к
' которому подключается шина данных ЖКИ - DB4.
DEFINE LCD_RSREG PORTB ' Определяем порт, к которому
' подключается цепь RS.
DEFINE LCD_RSBIT 3 ' Определяем контакт PORTB, к
' которому подключается цепь RS.
DEFINE LCD_EREG PORTB ' Определяем порт, к которому подключается
' цепь E.
DEFINE LCD_EBIT 0 ' Определяем контакт PORTB, к
' которому подключается цепь E.
DEFINE LCD_BITS 4 ' Определяем режим связи с ЖКИ (4-
' разрядная шина).
DEFINE LCD_LINES 2 ' Определяем тип ЖКИ.
DEFINE LCD_COMMANDUS 2000 ' Определяем время задержки между
' командами.
DEFINE LCD_DATAUS 50 ' Определяем время задержки между
' посылками данных.
' ---[ Переменные ]----------------------------
adr var byte ' Вводим переменную адреса.
dan var byte ' Вводим переменную вывода на экран.
Control con %10100000 ' Вводим константу - контрольный
' байт для связи с EEPROM.
DPIN var PORTA.0 ' Вводим переменную - цепь вывода
' данных шины I2C.
CPIN var PORTA.1 ' Вводим переменную - цепь вывода
' синхроимпульсов шины I2C.
Address var byte ' Вводим переменную адреса.
' ---[ Инициализация ]-------------------------
adcon1 = 7 ' Устанавливаем режим PORTA как
'цыфровой.
TRISA = %00000000 ' Устанавливаем все выводы PORTA на выход.
porta = %00000000
' ---[ Основная программа ]------------------------
Main:
FOR adr = 0 TO 10 ' Цикл в котором значения адреса меняются
' от 0 до 10
I2CWRITE dpin,cpin,control,adr,[adr] ' и по этим же адресам
' записываем в память
PAUSE 50 ' Пауза для повышения надежности записи
NEXT
'___ Вывод на экран ЖКИ ____
LCDOUT $fe, 1
LCDOUT $fe, 2
FOR adr 0 TO 0 STEP-1 ' Цикл в котором значения адреса
' меняются от 10 до 0
I2CREAD dpin,cpin,control,adr,[dan] ' Считываем по этим адресам
' из памяти значения и сохраняем их в переменной dan.
LCDOUT dec dan ' Выводим на экран ЖКИ значения
' переменной dan.
NEXT
PAUSE 3000 ' Пауза чтобы заметить изменения
GOTO Main ' Вернутся в начало программы.
При симуляции получаю ошибки как в прикрепленном файле, а на LCD всякую ахинею.
В чем я не прав?
Заранее благодарен