Приветствую Вас ГостьПятница, 20.06.2025, 15:55

Микроконтроллеры для всех


Каталог статей

Главная » Статьи » Мои статьи

Твой первый проект




   Ничего лишнего писать здесь не буду. Приведу только пример проекта.  А ваша задача:

1.  Распаять плату на коленке. Схема на рисунке 1. Эстетика тут ни к чему. 

2.  Взять программатор, который, надеюсь, уже у вас есть. В противном случае взять у друга. Убедится, что разъем под программатор распаян в соответствии с ним.

3.  Набрать программу, которая приведена ниже в AVRstudio, прокомпилировать ее (кнопка F7). При надобности, посмотреть, как работает программа  в симуляторе AVRstudio.

4.  И через программу программатора прошить сформировавшимся hex – файлом ваш МК Tiny2313.

5.  Убедиться что диодик загорелся.

6.  По экспериментировать. В программе поменять код 00000001 на 00000010 . И повторить прошивку. Результат: диод можно снять с первой ножки порта В и поставить на вторую. С этими изменениями диод загорится на второй ножке. По аналогии единичку в коде можно смещать, либо зажечь несколько светодиодов. Например, через один 01010101.

7. Убедиться, что это очень просто.

Рисунок 1 Принципиальная схема устройства "Зажечь диод".

Стоит указать, что разъем под программирование в схеме, а  точнее его нумерация и подключение к вывдам приведена под программатор, который я описал здесь (программатор c LPT) и вот здесь (программатор с USB).

  Нет смысла приводить усложнения этой задачи, типа добавить диоды или заставить их мигать. Уже после реализации этого примера, вы поймете , что многое зависит от вашего творческого начала. И все усложнения в программе будите проводить самостоятельно. Вы фантазируйте и придумывайте, алгоритм работы МК. Никто не говорит , что систему команд нужно знать на память. Достаточно, во время программирования, положить перед собой список команд и их назначения. 

Удачи!















Текст программы:

.include "tn2313def.inc"
.def Peremen_1=R16
.def Peremen_2=R20
.CSEG
.ORG 0x0000

  rjmp RESET
.org INT0addr;External Interrupt0
  reti
.org INT1addr ;External Interrupt1
  reti
.org ICP1addr ;Input capture interrupt 1
  reti
.org OC1Aaddr ;Timer/Counter1 Compare Match A
  reti
.org OVF1addr ;Overflow1 Interrupt
  reti
.org OVF0addr ;Overflow0 Interrupt
  reti
.org URXC0addr ;USART0 RX Complete Interrupt
  reti
.org UDRE0addr ;USART0 Data Register Empty Interrupt
  reti
.org UTXC0addr ;USART0 TX Complete Interrupt
  reti
.org ACIaddr ;Analog Comparator Interrupt
  reti
.org OC1Baddr ;Timer/Counter1 Compare Match B
  reti
.org OC0Aaddr;Timer/Counter0 Compare Match A
  reti
.org OC0Baddr ;Timer/Counter0 Compare Match B
  reti
.org USI_STARTaddr ;USI start interrupt
  reti
.org USI_OVFaddr ;USI overflow interrupt
  reti
.org ERDYaddr ;EEPROM write complete
  reti
.org WDTaddr ;Watchdog Timer Interrupt
  reti

RESET:
  ldi R20,RAMEND ; инициализация стека
  out SPL,R20 ; -------------------

  ldi Peremen_1,0b11111111;инициализация порта В на выход
  out DDRB, Peremen_1; -------------------

  ldi Peremen_2,0b00000001;вывод данного на ножки порта
  out PORTB,Peremen_2; -------------------

Pusto:
  rjmp Pusto ; пустой цикл

Категория: Мои статьи | Добавил: Alex_Sky (07.02.2010)
Просмотров: 3407 | Комментарии: 2 | Теги: автоматка, микроконтроллер, первый проект, управления микропроцессором, микропроцессорное устройство, с чего начать, AVR, программирование микроконтроллеров | Рейтинг: 5.0/2
Всего комментариев: 2
2 Alex_Sky  
0
Не согласен. это уже дело каждого. кому как удобно. мне удобно , чтобы вся таблица векторов прерываний была нарисована

1 Arlleex  
0
У вас неправильно идет начало программы, где вы прописываете команды по адресам векторов прерываний.
Их не надо прописывать. Пишите только те, которые будут использоваться в программе.
Просто не разрешайте прерывания от соотв. периферийных устройств, и все.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Категории раздела
Мои статьи [19]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Друзья сайта
  • Yourdevice