Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

проблема с записью в EEPROM

Непрочитано 26.04.2004, 15:23  
Zero
Гость
 
Сообщений: n/a
По умолчанию проблема с записью в EEPROM

Микроконтроллер Holtek HT48R50a-1
EEPROM Holtek HT24LC02V120
Эмулятор HT-ICE
HT-IDE3000V6
не работает запись\чтение в EEPOM
вот текст программы:
может я что-то не так делаю?
подскажите плз если есть возможность.



#include ht48r50a-1.inc

#define SCL pc.0
#define SDA pc.1
;-------------------------------------------------------
data .section 'data'
AddrLo db ?;Младший байт адреса в EEPROM
AddrHi db ?;Старший байт адреса в EEPROM
Cnt db ?;Счетчик
Temp db ?;Регистры для хранения переменных разного назначения
TempTr db ?;

InitPortC equ 00000000b
SDARecPortC equ 00000010b


code .section at 0 'code'
org 00h
jmp start
start:

mov a,0bch ;Запись значения 0x55 по адресу 0x2bc
mov AddrLo,a ;
mov a,02h ;
mov AddrHi,a ;
mov a,07h;
call Transmitt ;

mov a,0bch ;Чтение байта по адресу 0x2bc
mov AddrLo,a ;
mov a,02h ;
mov AddrHi,a ;
call Receive ;Полученное значение будет в регистре w

Init proc;Общая инициализация
mov a,InitPortC ;
mov pcc,a ;
ret ;
init endp

SwReceive proc ;Переключение SDA на вход
mov a,SDARecPortC
mov pcc,a
ret
swreceive endp

Transmitt proc

mov TempTr,a ;
set SDA ;
call Init ;Переключить линию для передачи

clr SDA ;Start
clr SCL ;

clr c ;Передача байта управления
rlca AddrHi ;и трех старших бит адреса
or a,10100000b ;
call SendByte ;

call SwReceive ;Переключить линию для приема подтверждения

set SCL ;Прием подтверждения
sz SDA ;
jmp Transmitt ;Подтверждение отсутствует
clr SCL ;

call Init ;Переключить на передачу

mov a,AddrLo ;Передать младший байт адреса
call SendByte ;
call SwReceive ;Переключить линию для приема подтверждения

set SCL ;прием подтверждения
sz SDA ;
jmp Transmitt ;Подтверждение отсутствует
clr SCL ;

call Init ;Переключить на передачу

mov a,TempTr ;Передача байта
call SendByte ;
call SwReceive ;Переключить линию для приема подтверждения

set SCL ;Прием подтверждения
sz SDA ;
jmp Transmitt ;Подтверждение отсутствует
clr SCL ;

call Init ;Переключить на передачу

clr SDA ;Stop
set SCL ;
set SDA ;

ret
transmitt endp


SendByte proc;Подпрограмма передачи одного байта
mov Temp,a
mov a,08d
mov Cnt,a
SendBt:
clr wdt
clr SDA
rlc Temp
sz C
set SDA
set SCL
clr SCL
sdz Cnt
jmp SendBt
ret
sendbyte endp

Receive proc

set SDA ;
call Init ;Переключить на передачу
clr SDA ;Start
clr SCL ;

clr C ;Передача байта управления
rlca AddrHi ;и трех старших бит адреса
or a,10100000b ;
call SendByte ;

call SwReceive ;Переключить на прием

set SCL ;Прием подтверждения
sz SDA ;
jmp Receive ;Подтверждение отсутствует
clr SCL ;

call Init ;Переключить на передачу

mov a,AddrLo ;Передать младший байт адреса
call SendByte ;
call SwReceive ;Переключить на прием

set SCL ;Прием подтвержедния
sz SDA ;
jmp Receive ;Подтверждение отсутствует
clr SCL ;

call Init ;Переключить на передачу

set SDA ;Повторный Start
set SCL ;
clr SDA ;
clr SCL ;

set C ;Передача байта управления
rlca AddrHi ;и трех старших бит адреса
or a,10100000b ;
call SendByte ;

call SwReceive ;Переключить на прием

set SCL ;прием подтверждения
sz SDA ;
jmp Receive ;Подтверждение отсутствует
clr SCL ;

call ReceiveByte ;Прием байта

clr SDA ;
call Init ;Переключить на передачу
set SCL ;Передача подтверждения
set SDA ;Stop
ret
receive endp

ReceiveByte proc ;Подпрограмма приема одного байта
mov a,08d
mov Cnt,a
ReceiveBt:
clr wdt
set SCL
clr C
sz SDA
set C
rlc Temp
clr SCL
sdz Cnt
jmp ReceiveBt
mov a,Temp
mov TempTr,a
ret
receivebyte endp


end
Реклама:
 
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с записью на микроконтроллер Vitalminator Микроконтроллеры, АЦП, память и т.д 0 10.05.2008 22:03
Проблема с записью в EEPROM 24С16А по адресам свыше 255 Zemlyanov Микроконтроллеры, АЦП, память и т.д 15 10.09.2007 18:20
Проблема с записью в EEPROM PIC Tujman Микроконтроллеры, АЦП, память и т.д 4 02.05.2007 22:32
Проблема с EEPROM в atmega32 tosha81k Микроконтроллеры, АЦП, память и т.д 16 28.04.2007 07:04
PIC16F84A проблема с записью в ПЗУ данных Jerry86 Микроконтроллеры, АЦП, память и т.д 2 23.12.2004 02:43


Часовой пояс GMT +4, время: 02:20.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.