леня писал(а):как нажатием на кнопку к переменной единичку прибавить ?
Код: Выделить всё
Переменная = 0
Кнопка нажата?
Если да, то переменная = переменная+1
Где-то так.
леня писал(а):как нажатием на кнопку к переменной единичку прибавить ?
Код: Выделить всё
Переменная = 0
Кнопка нажата?
Если да, то переменная = переменная+1
леня писал(а):(вот это вот условие мк успевает проверять хрен знает сколько раз пока кнопка нажата и к переменной прибавляется не 1 а много )
леня писал(а):не в микроконтроллере
Код: Выделить всё
If (key_press()){var++;} Код: Выделить всё
If (key_press()){var++;while(key_press());} Где ваша логика? Что вообще вы хотели сказать?Запутать пытались? Нужно вопрос правильно задавать, а не загадками.
Код: Выделить всё
#define KEY_PIN 5
#define KEY_PORT PORTB
#define KEY_PRESS KEY_PORT&(1<<KEY_PIN)
If (KEY_PRESS){var++;while(KEY_PRESS);}
Код: Выделить всё
char Buffer[512] ;Код: Выделить всё
void send_to_uart(uint8_t data)
{
while(!(USART1->SR & USART_SR_TC)); // wait ready
USART1->DR=data; // send
}
void send_str(char * string)
{
uint8_t i=0;
while(string[i])
{
send_to_uart(string[i]);
i++;
}
send_to_uart('\r');
send_to_uart('\n');
}spectral1 писал(а): либо разбить 32 битное число на 4 восьмибитных?
Jack_A писал(а): А что за АЦП 32-битный ? Бывают в природе ?
Ну вот те вариант по подробней.....леня писал(а):а как понять где тут пин с кнопкой ?
Код: Выделить всё
//#######################################################################################################################
// включаемые файлы
#define F_CPU 9600000
#include <util/delay.h>
#include <avr/io.h>
//дефайны
#define BtnPort PINB /*порт подключения кнопки*/
#define BtnPin (1<<4) /*пин подключения кнопки*/
#define LedPort PORTB /*порт подключения светодиода*/
//#######################################################################################################################
//Главная функция
int main (void)
{
DDRB = 1+2+4+8; //включение линий светиков на вывод
PORTB = BtnPin; //включит подтяжку на кнопке
unsigned char var =0;
while(1) //главный цикл
{
if (!(BtnPort & BtnPin))
{ //если нажата клавиша, увеличить значение переменной
LedPort = ++var; //выводим в порт увеличенную переменную
_delay_ms(50); //делаем небольшую паузу, чтобы пропустить дребезг
while (!(BtnPort & BtnPin)) //ожидание отпускания кнопки (с небольшой задержкой)
_delay_ms(50);
}
}
}
//#######################################################################################################################
Jack_A писал(а): Ну да.
А что за АЦП 32-битный ? Бывают в природе ?
Код: Выделить всё
send_to_uart(adc_res);Код: Выделить всё
<00><00>’–”‰Ž¥‘X<00>Аlex писал(а):spectral1, буквально 2-3 странички назад отлистните и найдёте ответ на свой вопрос. Там как раз подобное разбирали и кучу вариантов предлагали.
Код: Выделить всё
uint32_t adc_res;
char buf[4];
uint32_t *pbuf;
Код: Выделить всё
adc_res = ADC1->JDR1;
pbuf = &adc_res;
buf[0] = *pbuf;
send_str(buf);Код: Выделить всё
b
L
K
K
%
'
"
5
+
'
+Аlex писал(а):Нужно править файл линкера и , если только для одного проекта, то добавить его в папку с проектом и подключить к проекту.
http://kevin.org/frc/C18_3.0_getting_started.pdf 108 стр.
.. в МК все числа двоичные - почитайте про форматный выводspectral1 писал(а):.. а через юарт можно посылать двоичные числа
Не в исходнике, а в скрипте линкера. В документе же даже пример есть, что и на что нужно поменять.БАТАРЕЙКУС писал(а):как и что надо прописывать в исходнике?
А что, собственно, вам надо? Если просто увидеть число в терминале, вы должны в МК преобразовать число в ASCII-последовательность, т.к. терминал только такие символы и отображает. Если вы хотите передать число в клиентскую программу на компе с последующим использованием его именно как числа - тут нужна бинарная пересылка. С разбиением на байты перед передачей и сборкой числа на принимающей стороне. Пока не ясно, что вам надо?.spectral1 писал(а):я тут подумал, а через юарт можно посылать двоичные числа, а если можно то как?
у меня переменная, в ней двоичное число, как вывести его через юарт?