@ device PIC16F877A, XT_osc, wdt_on, wrt_off, lvp_off, pwrt_on, protect_off DEFINE OSC 4 ' --[ Определения ]---------------------- 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 ' Определяем время задержки между посылками данных. Line1 CON 128 ' Линия 1 первая позиция Line2 CON 192 ' Линия 2 первая позиция ClearD con 1 ' Очистка дисплея ' ---[ Переменные ]---------------------------- 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, ClearD FOR adr = 10 TO 0 STEP -1 ' Цикл в котором значения адреса меняются от 10 до 0 I2CREAD dpin,cpin,control,adr,[dan] ' Считываем по этим адресам из памяти значения и сохраняем их в переменной dan. LCDOUT $FE, line1, dec2 dan ' Выводим на экран ЖКИ значения переменной dan. PAUSE 3000 ' Пауза чтобы заметить изменения NEXT adr GOTO Main ' Вернутся в начало программы.