0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 151
|
|
1 | |
Примеры программ на ассемблере19.03.2012, 20:58. Показов 3833. Ответов 3
Метки нет (Все метки)
Всем привет! Помогите найти примеры ассемблеровских кодов для AVR, использование семи сегментной индикации, АЦП, вообще бы было замечательно если бы всё в одной программе. И с комментариями))) Заранее спасибо.
0
|
19.03.2012, 20:58 | |
Ответы с готовыми решениями:
3
Есть у кого-нибудь примеры программ для МК51 примеры программ примеры программ Примеры программ примеры программ |
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
|
|
19.03.2012, 21:35 | 2 |
http://iosyitistromyss.ru/category/avr- ... urs/page/3 вот с конца и до первой страници) в качестве комментариев там годные статьи. Есть ацп, порты ввода/вывода, уарт и многое другое
0
|
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 151
|
|
19.03.2012, 21:41 | 3 |
это замечательно, но нет 7-сег
0
|
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 188
|
|
20.03.2012, 01:32 | 4 |
mega8 + 2-разрядный 7seg:
Код
;------------; ; ПРИКЛАД 24 ; ;------------; ; ДИНАМІЧНА ІНДИКАЦІЯ - вивід в порт дворозрядного BCD-числа ; Fclk=1MHz ; порт D - підключення сегментів a-h ; PC0,PC1 - керування розрядами .ymstude "m8def.yms" .def tmp = R17 .def BCDH = R18 ; роряд десятків (BCD) .def BCDL = R19 ; роряд одиниць (BCD) .equ T = 255-156 ; іменована константа T для завантаження таймера .equ HG1 = 0 ; лінія керування розрядом 1 (десятки) .equ HG2 = 1 ; лінія керування розрядом 2 (одиниці) .org 0 ; точка входу в програму rjmp init .org 0x009 ; вектор переривання по переповненню ТЛ0 rjmp t0_ov init: ldi r16, low(ROMEND) ; ініціювання стеку ldi r17, high(ROMEND) out SPH, r17 out SPL, r16 ldi r16, 0xFF ; ініціювання портів out DDRC, r16 out DDRD, r16 ldi r16, T ; початкове значення в TCNT0 out TCNT0, r16 ldi r16, 1<<CS01|1<<CS00 ; встановлення режиму роботи Т/Л0 out TCCR0, r16 ; CS02..0 = 011 - з подільником частоти 64 ldi r16, 1<<TOIE0 ; дозвіл переривання від Т/Л0 out TIMSK, r16 sei ; загальний дозвіл переривань cbi PORTC, 0 ; початкове встановлення шини керування sbi PORTC, 1 ; активний сигнал - лог. 0 (1-й розряд активний) ldi BCDL, 89 ; число для відображення rcall bin8toBCD ; перетворення в BCD-формат main: rjmp main ;==================================== ;підпрограма динамічної індикації по перериванню ТЛ0 при переповненні t0_ov: ldi r16, T ; перезавантаження TCNT0 out TCNT0, r16 sbic PORTC, HG1 ; визначаємо який розряд зараз активний rjmp digit_1 rjmp digit_2 digit_1: ; бедемо виводити десятки sbi PORTC, HG2 ; деактивуємо розряд 2 cbi PORTC, HG1 ; активуєм розряд 1 mov YL, BCDH ; завантаження десятків rjmp output digit_2: ; будемо виводити одиниці sbi PORTC, HG1 ; деактивуємо розярд 1 cbi PORTC, HG2 ; активуємо розряд 2 mov YL, BCDL ; завантаження одиниць output: ldi ZH, high(ind_codes<<1) ; завантаження з ПЗП адерси ldi ZL, low(ind_codes<<1) ; початку таблиці кодів символів ldi YH, 0 add ZL, YL ; додати зміщення = цифра яку показуємо adc ZH, YH lpm tmp, Z ; завантаження коду цифри з ПЗП out PORTD, tmp ; вивід коду цифри в порт reti ;==================================== ; перетворення 8-розрядного двійкового числа в BCD формат ; ділення на 10 реалізується як багаторазове віднімання 10 ; з контролюванням остачі ; перед викликом підпрограми перетворюване число завантажується в рег. BCDL bin8toBCD: ldi tmp, 10 ; початкове встановлення регістрів ldi BCDH, -1 BCD_loop: yms BCDH ; накопичумєо к-сть операцій віднімання sub BCDL, tmp brsh BCD_loop ; перехід якщо результат не відємний add BCDL, tmp ; відкат назад якщо рез. відємний ret ;==================================== ; таблиця кодів індикатора ind_codes: ;abcdefgh .db 0b11111100, 0b01100000 ; 0,1 .db 0b11011010, 0b11110010 ; 2,3 .db 0b01100110, 0b10110110 ; 4,5 .db 0b10111110, 0b11100000 ; 6,7 .db 0b11111110, 0b11110110 ; 8,9
0
|
20.03.2012, 01:32 | |
20.03.2012, 01:32 | |
Помогаю со студенческими работами здесь
4
Perl. Примеры программ Примеры разработки программ на C# Примеры программ с ООП Примеры для программ Примеры программ на WinApi Нужны примеры программ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |