[an error occurred while processing this directive]
Ответ: Держи
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено CTAC 09 октября 2002 г. 16:27
В ответ на: давай отправлено SergQ 09 октября 2002 г. 15:48

значит так: ИАР асм для сишного проекта
Прерывания от таймера настраиваются на 10 мс.
Timer и Timer1 используются для формирования интервалов времени.
MinCnt,HourCnt,SecCnt считают соответственно минуты, часы, секунды
У меня использован кварц 7.3728 МГц, если же кварц не кратный, часики врать будут.


EXTERN Timer,Timer1,SecFlag,Cnt10ms,MinCnt,HourCnt,SecCnt; PUBLIC Tim0Ovf
rseg CODE
Tim0Ovf:
push r16
in r16,0x3F
push r16
; ldi r16,0xCA
ldi r16,0xB8
out 0x32,r16 ;0x32=TCNT0
LDS R16,Timer1
TST R16
BREQ T100
DEC R16
STS Timer1,R16
T100: LDS R16,Timer
TST R16
BREQ T0
DEC R16
STS Timer,R16
T0: LDS R16,Cnt10ms
CPI R16,99
BREQ T2
INC R16
STS Cnt10ms,R16
RJMP T1
T2:
CLR R16
STS Cnt10ms,R16
LDI R16,1
STS SecFlag,R16 ;УСТАНОВИЛИ ФЛАГ "СЕКУНДА ПРОШЛА"
LDS R16,SecCnt
INC R16
CPI R16,60 ;ДОСЧИТАЛИ ДО МИНУТЫ ???
BRNE T3
CLR R16 ;ДА, ДОСЧИТАЛИ
STS SecCnt,R16 ;ОБНУЛИЛИ СЧЕТЧИК СЕКУНД
LDS R16,MinCnt
INC R16 ;ИНКРЕМЕНТИРОВАЛИ СЧЕТЧИК МИНУТ
CPI R16,60 ;ДОСЧИТАЛИ ДО ЧАСА ???
BRNE T4
CLR R16 ;ДА, ДОСЧИТАЛИ
STS MinCnt,R16 ;ОБНУЛИЛИ СЧЕТЧИК МИНУТ
LDS R16,HourCnt
INC R16
CPI R16,100
BRNE T5
CLR R16
T5: STS HourCnt,R16 ;ИНКРЕМЕНТИРОВАЛИ СЧЕТЧИК ЧАСОВ
RJMP T1
T3: STS SecCnt,R16
RJMP T1
T4: STS MinCnt,R16
T1: pop r16
out 0x3F,r16
pop r16
RETI
<\pre>


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

Ответы



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

E-mail: info@telesys.ru