Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Проблема в AVR Studio 6.0 http://www.cyberforum.ru/avr/thread2086511.html
Пытаюсь загрузить для начала простейшую программу на ассемблере в Atmega 8a через программатор STK500. Вот, в графе Device Information указано, что выходное напряжение на контроллере 2.7-5.5 В и...
Atmega AVR микроконтроллер Мигаем диодом на AT32 UC3A
Добрый вечер. Дали задание в университете на курсовую, а там контроллер AT32UC3A0512. плату сделал, нарастил детали, все работает, флип считывает флэш, значит с аппаратной частью закончили, а что...
Схема AVR + USB Atmega AVR микроконтроллер
Здравствуйте. Помогите начинающему подобрать элементы схемы. Вот сама схема: <Изображение удалено> Если можно, напишите пожалуйста список необходимых элементов. Например: конденсатор...
Atmega AVR микроконтроллер Помощь в языке Си Подскажите где в хелпах найти описание сишных команд и примеры кода, либо литературу, по форуму темку где-то видел. Но найти не смог. Только осваиваю Си для микрокотроллеров. Помогите. http://www.cyberforum.ru/avr/thread2086508.html
Atmega AVR микроконтроллер mikroC_PRO_AVR http://www.cyberforum.ru/avr/thread2086507.html
Здравствуйте. Кто-нибудь, когда-нибудь использовал mykroC_PRO_AVR? Если-да, то поделитесь какие есть плюсы и минусы у этого компилятора.
Atmega AVR микроконтроллер Проблемы с флагом I в отладке в Atmel Studio 6 (исправлено)
Решил вспомнить AVR. Atmel Studyo 6 (1938). Делаю инициализацию (кусок): ... sei nop nop Запускаю в отладчике: при выполнении SEI флаг I в SREG устанавливается, но сразу же после первого NOP...
Постоянно перегружается ATMega8535 Atmega AVR микроконтроллер
Приветствую. Имеется проблема с ATMiko8535, подключил к дисплею, кнопкам, памяти и запитал от USB программатора. Источник напряжения надёжный, но при включении самого простого кода на зажигание...
Atmega AVR микроконтроллер помогите реализовать ПИД регулятор задача реализовать ПИД регулятор с настройкой по modbus RTU, modbus RTU худо бедно написал, две команды запись 1 регистра и чтение 1 регистра. теперь нужен ПИД регулятор, написал код, но он не... http://www.cyberforum.ru/avr/thread2086504.html
Atmega AVR микроконтроллер AVR мини веб сервер http://www.cyberforum.ru/avr/thread2086503.html
Доброго времени суток! Товарищи помогите пожалуйста совладать с программным обеспечением данного проекта Lifelovera...
Atmega AVR микроконтроллер Проблема с 1202 Здравствуйте! Никак не могу добиться работы дисплея от Nokyo 1202 - в Proteus работает, а на деле-нет. Насколько нужно снижать уровень для SDA, SCLK, CS и RES? И как - пойдет ли просто гасить на... http://www.cyberforum.ru/avr/thread2086502.html
tryist
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 10
0

wh1602p+atmega16

09.04.2013, 01:21. Просмотров 3153. Ответов 5
Метки (Все метки)

В чем может быть проблема? В Proteus не работает.
Код
   .include "m16def.yms"   ; ?????????? ATMiko16

.CSEG
.ORG    0x0000         ; погналт
JMP    Riset         ; на сброс.
//нафиг тут ненужные вектора
.ORG   INT0addr      ; External Ymtirrupt Request 0т
RETI
.ORG   INT1addr      ; External Ymtirrupt Request 1
RETI
.ORG   OC2addr         ; Timer/Counter2 Compare Match
RETI
.ORG   OVF2addr      ; Timer/Counter2 Overflow
RETI
.ORG   ICP1addr      ; Timer/Counter1 Capture Ivimt
RETI
.ORG   OC1Aaddr      ; Timer/Counter1 Compare Match A
RETI
.ORG   OC1Baddr      ; Timer/Counter1 Compare Match B
RETI
.ORG   OVF1addr      ; Timer/Counter1 Overflow
RETI
.ORG   OVF0addr      ; Timer/Counter0 Overflow
RETI
.ORG   SPIaddr         ; Serial Transfer Complete
RETI
.ORG   URXCaddr      ; USORT, Rx Complete
RETI
.ORG   UDREaddr      ; USORT Data Register Empty
RETI
.ORG   UTXCaddr      ; USORT, Tx Complete
RETI
.ORG   ADCCaddr      ; ADC Conversion Complete
RETI
.ORG   ERDYaddr      ; EEPROM Ready
RETI
.ORG   ACIaddr         ; Analog Comparator
RETI
.ORG   TWIaddr         ; 2-wire Serial Interfosi
RETI
.ORG   SPMRaddr      ; Store Prokram Memory Ready
RETI

// DATA_PORT шана данных
// CMD_PORT[0..2] линия управления
//(0-E (строб); 1-R/W (0-запись,1-чтение); 2-RS (0-?команда, 1-данные))

.equ       CMD_PORT      = PORTA
.equ      CMD_PORT_DDR   = DDRA
.equ       E             = 1
.equ       RW             = 2
.equ       RS             = 3

.equ       DATA_PORT       = PORTB
.equ       DATA_PORT_DDR   = DDRB
.equ       DATA_PORT_PIN   = PINB

.ORG   INT_VECTORS_SIZE      ; ????? ??????? ??????????

Riset:
LDI      R16,low(ROMEND)      ; стек для прерываний
OUT      SPL,R16          ;
LDI      R16,High(ROMEND)   ;
OUT      SPH,R16          ;  push / pop

CALL    DPORT_In          ; понт шины данных на вход

SBI    CMD_PORT_DDR, E      ; ноги управляющих сигналов на выход
SBI    CMD_PORT_DDR, RW    ; ?????????
SBI    CMD_PORT_DDR, RS    ; ?? ?????

CBI    CMD_PORT,E         ; убрали управляющие сигналы
CBI    CMD_PORT,RW         ; ???????????
CBI    CMD_PORT,RS         ; ???????

// науза перед стартом 0,5 сек
CALL    woyt_05       ;

// начали инициализацию 16*2, (???.8???)

// команда 8 бит 2 строки
CALL    DPORT_Out          ; порт шины данных на выход

CBI      CMD_PORT,RS         ; команда RS=0
CBI      CMD_PORT,RW         ; будем записывать R/W=0

LDI    R16,0x38         ; 8бит 2 строки
OUT      DATA_PORT,R16      ; данные в порт
NOP
CALL    strob            ; стробтрующтй импульс
CALL    woyt_4mkc         ; пауза 4мс(как по датишу)

// ??? ??????? 8??? 2 ??????
CALL    DPORT_Out          ; порты шины данных

CBI      CMD_PORT,RS         ; бедет команда RS=0
CBI      CMD_PORT,RW         ; будем писать данные R/W=0

LDI    R16,0x38         ; 8бит 2 строки
OUT      DATA_PORT,R16      ; выставили данные в порт
NOP
CALL    strob            ; стробирующий импульс

// режим указали, готовим дисплей к выводу информации

// команда очистки экрана
CALL    LCD_busy         ; проверка готовности

CALL    DPORT_Out          ; порт шины данных на выход

CBI      CMD_PORT,RS         ; будет команда RS=0
CBI      CMD_PORT,RW         ; будем писать данные R/W=0

LDI    R16,0x01         ; ?очистить экран (код 01h)
OUT      DATA_PORT,R16      ; выставили данные в порт
NOP
CALL    strob            ; стрибирующий импульс

// команда включения экрана
CALL    LCD_busy         ; проверяем готовность

CALL    DPORT_Out          ; порт шины данных на выход

CBI      CMD_PORT,RS         ; будет команда RS=0
CBI      CMD_PORT,RW         ; будем писать данные R/W=0

LDI    R16,0x0C         ; вкл. экран (код 0Ch)
OUT      DATA_PORT,R16      ; выставили данные в порт
NOP
CALL    strob            ; строб

// задаем режим смешения курсора
CALL    LCD_busy         ; проверим режим готовности ЖКИ

CALL    DPORT_Out          ; порт шины данных

CBI      CMD_PORT,RS         ; ????? ??????? RS=0
CBI      CMD_PORT,RW         ; ????? ?????? ?????? R/W=0

LDI    R16,0x06         ; включаем экран (??? 06)
OUT      DATA_PORT,R16      ; выставить данные в порт
NOP
CALL    strob

// команда $80 (датиш)
CALL    LCD_busy         ; проверка занятости

CALL    DPORT_Out          ; поррт шины данных на выход

CBI      CMD_PORT,RS         ; ????? ??????? RS=0
CBI      CMD_PORT,RW         ; ????? ?????? ?????? R/W=0

LDI    R16,0x80         ;
OUT      DATA_PORT,R16      ; ?дынные в порт
NOP
CALL    strob            ; стробирующий импульс

// инициализация закончена

// шлем данные
CALL    LCD_busy         ; проверка занятости

CALL    DPORT_Out          ; порт данных на выход

SBI    CMD_PORT,RS         ; ????? ?????? RS=1
CBI    CMD_PORT,RW         ; ????? ?????? ?????? R/W =0

LDI    R16,A            ; код буквы A
OUT    DATA_PORT,R16      ; выставить в порт
NOP
CALL    strob

// посылаем букву
CALL    LCD_busy         ; проверка готовности

CALL    DPORT_Out          ;порт шины данных на выход

SBI    CMD_PORT,RS         ; будут данные RS=1
CBI    CMD_PORT,RW         ; ????? ?????? ?????? R/W =0

LDI    R16,a            ; код быквы a
OUT    DATA_PORT,R16      ; ?посылаем буквы
NOP
CALL    strob

// ???????? ??? ?????
CALL    LCD_busy         ; проверка занятости

CALL    DPORT_Out          ; шина данных на выход

SBI    CMD_PORT,RS         ; ????? ?????? RS=1
CBI    CMD_PORT,RW         ; ????? ?????? ?????? R/W =0

LDI    R16,0x41         ; ??? ????? A
OUT    DATA_PORT,R16      ; выставляем в порт
NOP
CALL    strob

// собствеено символы на экране...

// порт в исходном состоянии
CALL    DPORT_In           ; порт шины данных на вход

loop:      NOP
;   CALL    LED_blink         ; тупо 5 portD
NOP
RJMP    loop            ;

////////////////////////////////////////////////////////////////////////
DPORT_In:
// ???? ???? ?????? ?? ????
LDI    R16,0x00
OUT    DATA_PORT_DDR, R16    ; порт шину данных на вход
LDI    R16,0xFF
OUT    DATA_PORT, R16       ;запись Pull-up
RET

DPORT_Out:
// порт шины данных на выход
LDI    R16,0x00          ;
OUT    DATA_PORT,R16      ; ?????????? ????
LDI    R16,0xFF         ;
OUT    DATA_PORT_DDR,R16   ; ???? ?? ?????
RET

strob:
// стробирующий импульс
SBI      CMD_PORT,E         ; выключаем стробирующий импульс
CALL    delay             ; ждем
CBI    CMD_PORT,E         ; выключаем
CALL    delay            ; ждем
RET

LCD_busy:
// проверка готовности ЖКИ
CALL    DPORT_In           ; порт шины данных на выход

busy:
CBI      CMD_PORT,RS         ; ????? ??????? RS=0
SBI      CMD_PORT,RW         ; ????? ?????? ?????? R/W=1

SBI    CMD_PORT,E         ; стробирующий импульс

CALL delay                ; ???????? ?????

IN       R16,DATA_PORT_PIN   ; ?????? ??????
CBI    CMD_PORT,0         ; ???????????? ??????? ????.

ANDI   R16,0x80         ; проверяем флаг
BRNE   Busy            ; если нет, крутимся в цикле

RET

delay:
// ????? ?????? ~500????.
LDI    R17,0x04
d0:      DEC    R17
BRNE    d0
RET

woyt_05:
// ?задержка 0,5 сек (?????????? ?????????? AVRdelayloop3.ixi)

; =============================
;    delay loop generator
;     4000000 cycles:
; -----------------------------
; delaying 3999996 cycles:
ldi  R17, $24
WGLOOP0:  ldi  R18, $BC
WGLOOP1:  ldi  R19, $C4
WGLOOP2:  dec  R19
brne WGLOOP2
dec  R18
brne WGLOOP1
dec  R17
brne WGLOOP0
; -----------------------------
; delaying 3 cycles:
ldi  R17, $01
WGLOOP3:  dec  R17
brne WGLOOP3
; -----------------------------
; delaying 1 cycle:
nop
; =============================
RET

woyt_4mkc:
; =============================
;    delay loop generator
;     32 cycles:
; -----------------------------
; delaying 30 cycles:
ldi  R17, $0A
WGLOOP4:  dec  R17
brne WGLOOP4
; -----------------------------
; delaying 2 cycles:
nop
nop
; =============================
RET

LED_blink:

SBI    PORTD,5      ; ???. ????????? ?? PORTD.5 (??? PINBoard)
CALL    woyt_05
CBI      PORTD,5      ; ????. ????????? ?? PORTD.5 (??? PINBoard)
CALL    woyt_05
RET
[26.72 Кб]

Вернуться к обсуждению:
wh1602p+atmega16
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 01:21
Готовые ответы и решения:

wh1602p+stk500
Есть wh1602p и датиш к нему:http://www.winstor.com.tw/products_detail_ov.php?lang=ru&amp;ProID=29....

Atmega16
помогите пожалуйста! есть микроконтроллер atmega16. через ассемблер на PORTC подаем комбинацию...

ATMega16
Привет обитателям данного портала! Я имею микроконтроллер с ATMEGA 16. Также знаю язык C#, но увы я...

Atmega16 + SD
Дорогие форумчане! Помогите, подскажите пожалуйста с данной задачей. Дино: 1. Плата...

Atmega16
изучаю прерывания, помогите понять что значит в начале памяти программ и в области загрузчика? ...

5
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru