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

Программирование микроконтроллеров
[ Викачати з сервера (0.8 Kb) ] 14.03.2008, 22:31
Программа написанная на ассемблере. Простой пример мигания светодиодом. В дальнейшем будет модифицироваться, дополнятся и усложнятся.
(для меги16)

Svetodiod.asm:

.include "m16def.inc"

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

.equ svetodiod=3

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

;********************************************************
ldi temp,0b00001111 ;настройка порта B
out DDRB,temp ;
ldi temp,0b11110000 ;включение подтягивающих резисторов
out PORTB,temp ;
;********************************************************
ldi temp,0b00000000 ;настройка порта D на ввод
out DDRD,temp
ldi temp,0b11111111 ;
out PORTD,temp ;
;********************************************************
ldi temp,0b11111111 ;настройка порта A на вывод
out DDRA,temp
ldi temp,0b00000000 ;
out PORTA,temp ;
;********************************************************
ldi temp,0b11111111 ;настройка порта C на вывод
out DDRC,temp
ldi temp,0b00000000 ;
out PORTC,temp ;
;********************************************************
ldi temp,0x04 ;***************************
out sph,temp ;** Настройка стека ********
ldi temp,0x5f ;**** на верхний адрес *****
out spl,temp ;****** памяти SRAM ********
;***************************

main:
sbi portc, svetodiod
call time_333_ms

cbi portc, svetodiod
call time_333_ms

rjmp main

;************************************************************
;*** Подпрограмма отсчета времени 333 мс на 8МГц *************
;************************************************************
time_333_ms:
push temp
push temp1
push temp2
;при частоте 8МГц нужно отсчитать 0,333/0,000000125=2664000кц
ldi temp2,9
time_333_ms_001:
ldi temp1,232
time_333_ms_01:
ldi temp,255

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

time_333_ms_2:
dec temp1
tst temp1
breq time_333_ms_3
rjmp time_333_ms_01


time_333_ms_3:
dec temp2
tst temp2
breq time_333_ms_end
rjmp time_333_ms_001

time_333_ms_end:

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


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