Ничего лишнего писать здесь не буду. Приведу только пример
проекта. А ваша задача: 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 ; пустой цикл
|