Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ATmega AVR Atmega6490. Работа с портами в CVAVR https://www.cyberforum.ru/ avr/ thread1119502.html
для CVAVR последняя версия: так работает: PORTA.1=1; и так работает: PORTA=(1<<1); так не работает: PORTJ.1=1;
ATmega AVR Atmel Studio 6. Проблема запуска в режиме отладки
привет. я начинающий в программировании МК и у меня появилась такая проблема: в Atmel Studio 6 когда я запускаю программу в режиме debug, то появляется ошибка Atmel Studio was unable to start your...
ATmega AVR Micro-IDE for AVR. Работа с регистрами
Помогите пожалуйста Условие задачи: Занести в регистр Х число $1F0 и уменьшить это число на 3 Заранее спасибо
ATmega AVR Attiny2313. Реле времени Здравствуйте. Подскажите как реализовать выключение после нажатия кнопки TIMER, мк должен отсчитать допустип 1 час и отключить питание на PB1, PB2. Т. е. я нажал на кнопу TIMER, засветился красный... https://www.cyberforum.ru/ avr/ thread1110458.html
ATmega AVR ATTiny26l-8PU. Вольтамперметр https://www.cyberforum.ru/ avr/ thread1103859.html
подскажите attiny26l-8pu вольтамперметр где ошибки помогите исправить
ATmega AVR Прерывание каждую секунду - нужен пример
Может кто скинуть работающий код и расписать почему именно так? Ну или просто код и ссылку в каком направлении копать
ATtiny26L-8PU vs ATtiny261A-SU ATmega AVR
подскажите attiny26l-8pu на ATtiny261A-SU (SOIC20) заменить можно не могу понять
ATmega AVR Учет посетителей (ATMega) Здравствуйте. Прошу помочь или подсказать как и каким образом можно построить устройство(а) для подсчёта кол-ва посетителей. Организовать всё это надо на МК AtMega8 либо 16 или 32, в средах... https://www.cyberforum.ru/ avr/ thread1097453.html
ATmega AVR Аналоговый компаратор в ATtiny2313 https://www.cyberforum.ru/ avr/ thread1097391.html
Добрый вечер, прошу помощи, никак не могу разобраться, почему не работает аналоговый компаратор на t2313a. На ножку PB0(AIN0) подается сравниваемое напряжение с батарейки (1.5В), на ножку...
ATmega AVR ATmega 128. Кодовый замок Доброго времени суток! У меня есть задание на курсовой проект : Устройство контроля доступом на базе микроконтроллера ATmega128, символьного жидкокристаллического дисплея и клавиатуры. Из... https://www.cyberforum.ru/ avr/ thread1096906.html
922 / 670 / 314
Регистрация: 21.10.2012
Сообщений: 2,044
29.03.2014, 22:17  [ТС] 0

Калькулятор на МК - ATmega AVR - Ответ 5970605

29.03.2014, 22:17. Показов 14669. Ответов 13
Метки (Все метки)

Ответ

Здравствуйте еще раз =) Установил Proteus, начал разбираться с готовым примером калькулятора - ARM7 Calculator. Возникло много вопросов, если сможете ответить хоть на какие-нибудь, буду признателен.
К основному файлу подключаются 2 файла: #include "NXP/iolpc2104.h" #include <intrinsics.h>. Первый, я так понял, описывает наш микроконтроллер, а что 2-ой?
В заголовочном файле calc.h определяются переменные-регистры. Не могли бы пояснить, что описывают следующие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define LCD_CMD_WR     0x0000
#define LCD_DATA_WR    0x0100
#define LCD_BUSY_RD    0x0200
#define LCD_DATA_RD    0x0300
 
#define E_PIN_MASK     0x0400
                     
//LCD Commands        
#define LCD_CLS        0x01
#define LCD_HOME       0x02
#define LCD_SETMODE    0x04
#define LCD_SETVISIBLE 0x08
#define LCD_SHIFT      0x10
#define LCD_SETFUNCTION    0x20
#define LCD_SETCGADDR      0x40
#define LCD_SETDDADDR      0x80
 
 
#define G_MASK  0x78000000
#define G_SHIFT 27
В файле calc.h происходит вызов функции init_system(). Её описание:
C++
1
2
3
4
5
6
7
8
void init_system()
 { MEMMAP = 1;
   SCS_bit.GPIO0M = 0; 
   PINSEL0 = 0;
   PINSEL1 = 0; 
   IODIR =  0xFF07FF; 
   IOCLR = 0xFFFFFFFF;
 }
Что здесь происходит? =) IODIR и IOCLR - это что и откуда? из тех самых 2-х файлов, про которые я вначале спрашивал?
Не могли бы пояснить код, для нахождения нажатой кнопки и вывода информации на дисплей:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
for (row=0; row < KEYP_NUM_ROWS; row++)
    { // Drive appropriate row low and read columns:
 
      IOSET = (~(1 << row)) & 0xFF;
      IOCLR = (1 << row) & 0xFF;
      for (wait=0; wait<10; ++wait)
         nop();
      tmp = (IOPIN & G_MASK) >> G_SHIFT;
    
      // See if any column is active (low):
      for (col=0; col<KEYP_NUM_COLS; ++col)
         if ((tmp & (1<<col)) == 0)
          { idx = (row*KEYP_NUM_COLS) + col;
            key = keycodes[idx]; 
 
            IOSET = idx << 16;
 
            IOCLR = (~(idx <<16)) & 0xFF0000;
            goto DONE;
          }
    }
   DONE:
 
   // Disable Port Drive and return.
 
   IODIR =  0xFF0700;
   return key;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void wrdata (BYTE data)
// Write a Character to the LCD Display. 
 { IODIR =  0xFF07FF;
   IOCLR = (~(LCD_DATA_WR | data)) & 0x7FF;
   IOSET = LCD_DATA_WR | data;
    
   // Toggle Pin 'E' to send the command.
   IOSET = E_PIN_MASK;
   nop(); 
   nop();
   nop();
   nop();
   IOCLR = E_PIN_MASK;
   
   lcd_wait();
 }


Вернуться к обсуждению:
Калькулятор на МК ATmega AVR
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2014, 22:17

Помощь в написании контрольных, курсовых и дипломных работ здесь.

калькулятор
Помогите пожайлуйста с объяснением 4. Организовать в программе калькулятор. В калькуляторе...

Калькулятор
супер-простой калькулятор: Здравствуйте, помогите сделать задание. Введите число: 10 (может...

Калькулятор
Создать проект, который дает возможность выполнить следующие действия: 1. Регистрация пользователя...

Калькулятор
привет подскажите,пжлста,как сделать калькулятор,чтобы выражение вводилось полностью,а не...

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