[an error occurred while processing this directive]
Сильно сомневаюсь, что поможет, но у меня другого нет....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=Iwan=- 22 февраля 2005 г. 17:00
В ответ на: Нужна срочно помощь по DS1302... отправлено . 22 февраля 2005 г. 16:26


; Командные слова для считывания из таймера:
SecondRd equ 1000.0001b ; команда - считать значение секунд из таймера
MinuteRd equ 1000.0011b ; команда - считать значение минут из таймера
HoursRd equ 1000.0101b ; команда - считать значение часов из таймера

; Командные слова для записи в таймер:
SecondWr equ 1000.0000b ; команда - записать значение секунд в таймер
MinuteWr equ 1000.0010b ; команда - записать значение минут в таймер
HoursWr equ 1000.0100b ; команда - записать значение часов в таймер


org 0
jmpa cc_Uc, start_timer ; Запуск таймера
; jmpa cc_Uc, ReadDann ; Считывание значений таймера

; Программа управления и работы с таймером DS1302.

org 200h ; Область расположения программы

sCLK dbit P4.4 ; Бит тактов таймера (P4.4).
setsCLK dbit DP4.4 ; Управление битом тактов (dP4.4)

In/Out dbit P4.7 ; Бит ввода/вывода таймера (P4.7).
setIn/Out dbit DP4.7 ; Управление битом ввода/вывода (dP4.7).
RSTtimer dbit P6.7 ; Бит сброса таймера (P6.7).
setRSTtimer dbit DP6.7 ; Управление битом сброса (dP6.7).


initPort:
bset setsCLK ; Инициализация битов
bset setRSTtimer ; управления таймером
bset setIn/Out ;
ret

; Послать байт в таймер
; Данные для выдачи в таймер должны находиться в регистре R0

sendByte:
bset setIn/Out ; Установить бит на передачу данных
mov r2, #8 ; Загрузить счетчик битов

nextbit: bmov In/Out , r0.0 ; Установить бит для записи в таймер
bset sClk ; Записать бит данных в таймер
ror r0 , #1 ; Подготовить следующий бит для записи
bclr sClk
sub r2, #1 ; Проверить все ли биты выданы
jmpr cc_nZ , nextbit ; в таймер
bclr setIn/Out ; Подготовить процессор к приему
ret ; данных из таймера


; Получить байт из таймера
; Данные считанные из таймера помещаются в регистр R0

recieveByte:
mov r2, #8 ; Загрузить счетчик битов
mov r0, #0 ; Очистить регистр приема данных
rec1bit:
bset sClk ; Установить бит синхронизации
ror r0, #1
bmov r0.7, In/Out ; Считать бит из таймера
bclr sClk ; Сбросить бит синхронизации
sub r2, #1 ; Проверить все ли биты считаны
jmpr cc_nZ , rec1bit ;
ret


; Получить значение (секунд, минут и т.д) из таймера
; Значение считанное из таймера помещается в регистр R0

ReadDann:
bset RSTtimer ;

mov r0, #SecondRd ; Выдача команды для получения
callr SendByte ; значения секунд

callr recieveByte ; Получение значения секунд в R0

bclr RSTtimer ;
ret


start_timer:
diswdt
calla cc_UC, initPort ; инициализировать прорцессор
; для работы с таймером
bset RSTtimer ; установить сигнал RST

mov r0, #SecondWr ; Выдача команд для установки
calla cc_UC, sendByte ; секунд в таймер

mov r0, #0 ; Выдача значений секунд
calla cc_Uc, sendByte ; в таймер (запуск таймера)

bclr RSTtimer ; Сброс сигнала RST
ret

end



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru