#include <stdio.h>
#include <stdint.h>
void busy_work()
{
volatile int i = 10000000; // Ну это под конкретный ноут на мобильном core-i3
while (--i) ;
}
void progress(const char *header, uint8_t percent)
{
enum { width = 50 };
static const char stars[] = "*************************"
"*************************";
printf("%s |%*.*s| %2d%%\r",
header,
-width, width*percent/100, stars,
percent);
fflush(stdout); // И это тоже под ОС с её буферизацией вывода
}
int main()
{
for (uint8_t percent = 0; percent <= 100; ++percent) {
busy_work();
progress("Calculation", percent);
}
putchar('\n');
}
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Вопрос, могу ли я запихать массив 131X131 в программу? Это зависит от SRAM памяти контроллера?я хочу вывести картинку на дисплей,или это можно сделать только через ММС?
КВ выдает ошибку.
смысл здесь такой при обращении к
LCD.data
LCD.RS
итд
это отображается на порте Д что мне и надо, просто через #define можно назначить 1 бит как
#define RS PORTDbits.RD4 // в MPLAB-C18
#define RS RD4 // в HI-TECH
но как задать четыре бита сразу. как в вышеописанном приёме.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
Аlex писал(а):Создать тип на Вашу структуру, создать указатель этого типа и присвоить ему адрес порта.
Алекс, добрый день.
Может глупо, но спрошу у вас. У автора вопроса не хочу.
А что в конечном итоге дает применение в этом случае структуры вместо простых именованых пинов? Или это тяга к прекрасному? Структура ради структуры? Насколько оправдано ее применение в этом случае? Ведь обращаемся мы в любом случае не к группе пинов (бессмысленно устанавливать все четыре пина управления единообразно и одновременно), а к каждому из пинов отдельно и в отдельные дискреты времени... Я считал, что просто определение разных пинов через дефайны, дает бОльшую гибкость, позволяя разносить их на разные порты (в случае восьмибитовок).
Может, есть какой-то глубинный смысл и я не доныриваю?
Аlex писал(а):Создать тип на Вашу структуру, создать указатель этого типа и присвоить ему адрес порта.
Алекс, добрый день.
Может глупо, но спрошу у вас. У автора вопроса не хочу.
А что в конечном итоге дает применение в этом случае структуры вместо простых именованых пинов? Или это тяга к прекрасному?
всё просто, я работаю с дисплеем WH-1602. все знают что он может управляется по 7 проводам
1)RS
2)RW
3)E
4-7) data
так вот последние 4 пина "data" это полубайт данных, и для передачи данных в дисплей надо передать
старший полубайт затем младший.
а с помощью этого прекрасного можно делать так.
БАТАРЕЙКУС писал(а):
всё просто, я работаю с дисплеем WH-1602. все знают что он может управляется по 7 проводам
1)RS
2)RW
3)E
4-7) data
так вот последние 4 пина "data" это полубайт данных, и для передачи данных в дисплей надо передать
старший полубайт затем младший.
а с помощью этого прекрасного можно делать так.
? Каким образом старший ниббл окажется незатронутым?
В исходном тексте оно может и красиво. В дизасм загляните, будете неприятно удивлены.
Применение структур вообще-то не для красоты написания.
в HI-TECH PICC это прекрасно работает, LCD.data - принадлежат младшие 4 бита порта Д. соответственно kod>>4 позволяет перекачать старший полубайт регистра kod в младший полубайт порта Д.
urry
ваш код компилируется с предупреждением suspicious pointer conversion
не могли б вы его переписать чтоб не было предупреждения я что то не могу понять как это сделать.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
ваш код компилируется с предупреждением suspicious pointer conversion
Ну совсем народ обленился, только копипасты интересуют. А перевести ? А подумать ? А погуглить ? Да и вообще, пора бы уже книжки начать читать. Или по каждой строчке будете постоянно бегать на форумы ?
ваш код компилируется с предупреждением suspicious pointer conversion
Ну совсем народ обленился, только копипасты интересуют. А перевести ? А подумать ? А погуглить ? Да и вообще, пора бы уже книжки начать читать. Или по каждой строчке будете постоянно бегать на форумы ?
дело в том что я аглицкий языка не знаю и читать документация на С18 не смогу.
а в классическом Си без разнице где располагается структура.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
Я в буржуйском тоже полный ноль, но, тем не менее, я, видя эту строку, понимаю что происходит.
И для этого совсем не нужно читать мануал на С18, достаточно почитать Русскоязычные книги по Си.
PS: Погуглите указатели и явное приведение типов.