Субота, 18.05.2024, 18:40
 
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Меню сайту
Категорії каталога
Программирование микроконтроллеров [5]
примеры, листинги программ, всё что проверенно на собственном опыте.
Программирование_Pascal [1]
только то что зделано своими руками
Психология [3]
книги, статьи и всё то что мне показалось интересным
Раздел 1 [4]
то чем занимаюсь и увлекаюсь сидя за копмпьютером:D
RoboSapiens [1]
роботы, роботы, роботы...
Форма входу
Пошук
Друзі сайту
Статистика
 Каталог файлов
Головна » Файли » Программирование микроконтроллеров

mega16 пример 2
[ Викачати з сервера (0.8 Kb) ] 19.03.2008, 17:16
.include "m16def.inc"

.def temp=r16
.def temp1=r17
.def temp2=r18

.equ svetodiod=3

;**************** инициализация *************
init:

;********************************************************
ldi temp,0b00000000 ;настройка порта B 1-выход 0-вход
out DDRB,temp ;
ldi temp,0b11111111 ;
out PORTB,temp ;
;********************************************************
ldi temp,0b00000000 ;настройка порта D 1-выход 0-вход
out DDRD,temp ;
ldi temp,0b11111111 ;
out PORTD,temp ;
;********************************************************
ldi temp,0b11111111 ;настройка порта A 1-выход 0-вход
out DDRA,temp ;
ldi temp,0b00000000 ;
out PORTA,temp ;
;********************************************************
ldi temp,0b00000000 ;настройка порта C 1-выход 0-вход
out DDRC,temp ;
ldi temp,0b11111111 ;
out PORTC,temp ;
;********************************************************

ldi temp,0x04 ;***************************
out sph,temp ;**** Настройка стека *****
ldi temp,0x5f ;**** на верхний адрес *****
out spl,temp ;**** памяти SRAM *****
;***************************

main:

ldi temp,0b00000001
out PORTA,temp
call time_100_ms

ldi temp,0b00000010
out PORTA,temp
call time_100_ms

ldi temp,0b00000100
out PORTA,temp
call time_100_ms

ldi temp,0b00001000
out PORTA,temp
call time_100_ms

ldi temp,0b00010000
out PORTA,temp
call time_100_ms

ldi temp,0b00100000
out PORTA,temp
call time_100_ms

ldi temp,0b01000000
out PORTA,temp
call time_100_ms

ldi temp,0b10000000
out PORTA,temp
call time_100_ms

rjmp Main

;************************************************************
;*** Подпрограмма отсчета времени 100 мс на 8МГц ************
;************************************************************
time_100_ms:
push temp
push temp1
push temp2
;при частоте 8МГц нужно отсчитать 0,1/0,000000125 = 800'000 кц
ldi temp2,9
time_100_ms_001:
ldi temp1,70
time_100_ms_01:
ldi temp,255

time_100_ms_1: ;****************************************
dec temp ;**** внутреннее тело цикла 5кц *********
tst temp ;****************************************
breq time_100_ms_2 ;****************************************
rjmp time_100_ms_1 ;****************************************

time_100_ms_2:
dec temp1
tst temp1
breq time_100_ms_3
rjmp time_100_ms_01


time_100_ms_3:
dec temp2
tst temp2
breq time_100_ms_end
rjmp time_100_ms_001

time_100_ms_end:

pop temp2
pop temp1
pop temp
ret
;*************************************************************
;*** Окончание подпрограммы отсчета времени 100 мс на 8МГц ***
;*************************************************************


Категорія: Программирование микроконтроллеров | Додав: JaRcom
Переглядів: 1918 | Завантажень: 257 | Коментарі: 1 | Рейтинг: 4.0/1 |
Всього коментарів: 0
Ім`я *:
Email *:
Код *:
Хостинг від uCoz