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

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

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

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

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

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

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

 
Опции темы
Непрочитано 26.04.2004, 14: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 03:43


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot