Другие языки программирования и технологии
Кто знает ассемблер, помогите!
Надо сделать с использованием таймеров следующую программу: Мигать светодиодом A0 и А1 с периодом 2 секунды, а светодиодом А4 с периодом 4,5 секунды
напостили пустых ответов. в коде присутствует платформа. это AVR. контроллер ATMega163
писал на скорую руку, может где сосчитал неправильно. Если че подправь.
Программа рассчитана на кварц с частотой 32.768 КГц. Такие есть. обычно в часах используют.
.include "m163def.inc"
.device ATmega163
.deftemp=R16
.defmask=R17
.defcount1=R24
.defcount2=R25
.org 0
jmp start
.org OVF0addr ;обработчик прерывания от таймера 0
tick:
inc count1
inc count2;увеличиваем счетчики
cpi count1,4
breq neg01;проверяем нужный момент времени и переходим к подпрограммам
cpi count2,9
breq neg4
endio:
reti
;тут инвертируем 0 и 1 биты PORTA
neg01:
ldi mask,3
in temp,PINA
eor temp,mask
out PORTA,temp
clr count1
jmp endio
;тут инвертируем 4 бит PORTA
neg4:
ldi mask,16
in temp,PINA
eor temp,mask
out PORTA,temp
clr count2
jmp endio
start: ;прерывание при старте или сбоях питания
lditemp,low(RAMEND)
outSPL,temp ;инициализация стека
ldi temp,high(RAMEND)
outSPH,temp
ldi temp,0xFF
out DDRA,temp;PORTA на выход
ldi temp, ( 1 < < TOIE0 )
out TIMSK,temp;прерывания от таймера 0
ldi temp, ( 1 < < CS01 ) | ( 1 < < CS00 )
out TCCR0,temp;включаем таймер с делением на 8
sei;разрешаем прерывания
loop:
jmp loop
писал на скорую руку, может где сосчитал неправильно. Если че подправь.
Программа рассчитана на кварц с частотой 32.768 КГц. Такие есть. обычно в часах используют.
.include "m163def.inc"
.device ATmega163
.deftemp=R16
.defmask=R17
.defcount1=R24
.defcount2=R25
.org 0
jmp start
.org OVF0addr ;обработчик прерывания от таймера 0
tick:
inc count1
inc count2;увеличиваем счетчики
cpi count1,4
breq neg01;проверяем нужный момент времени и переходим к подпрограммам
cpi count2,9
breq neg4
endio:
reti
;тут инвертируем 0 и 1 биты PORTA
neg01:
ldi mask,3
in temp,PINA
eor temp,mask
out PORTA,temp
clr count1
jmp endio
;тут инвертируем 4 бит PORTA
neg4:
ldi mask,16
in temp,PINA
eor temp,mask
out PORTA,temp
clr count2
jmp endio
start: ;прерывание при старте или сбоях питания
lditemp,low(RAMEND)
outSPL,temp ;инициализация стека
ldi temp,high(RAMEND)
outSPH,temp
ldi temp,0xFF
out DDRA,temp;PORTA на выход
ldi temp, ( 1 < < TOIE0 )
out TIMSK,temp;прерывания от таймера 0
ldi temp, ( 1 < < CS01 ) | ( 1 < < CS00 )
out TCCR0,temp;включаем таймер с делением на 8
sei;разрешаем прерывания
loop:
jmp loop
Без указания процессора, тактовой частоты, и схемы как подцеплены светодиоды это сделать не возможно.
ассемблер здесь вторичен
нужно знать архитектуру для которой это пишется ...
а то что ты написал - это всего-лишь начальная инициализация и не более
нужно знать архитектуру для которой это пишется ...
а то что ты написал - это всего-лишь начальная инициализация и не более
Шота я прижмурил глаза и жутко медетирую над кодом :\\
Похожие вопросы
- Программисты, знающие ассемблер, помогите.
- Ассемблер. помогите решить!!!
- задача по ассемблеру.помогите!
- АССЕМБЛЕР ПОМОГИТЕ! Задали на учебе пример на автомат. Помогите умоляю. Программа emu8086.
- Ассемблер! ! Помогите, пожалуйста с программированием.
- Люди, которые хоть немного разбираются в ассемблере, помогите написать программу)
- Ассемблер помогите написать программу..
- Ассемблер. Помогите решить. Для выполнения в emu8086
- Простая задача на FASM (ассемблер) помогите 3 дня мучаюсь!!!
- Нужно ли знать ассемблер, чтобы стать профессиональным программистом???