Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.07.2020
Сообщений: 3

Текст программы на языке С, формирующей прямоугольные импульсы на одном из выводов микроконтроллера

23.07.2020, 03:35. Показов 3422. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все компилируется, но преподша говорит что есмь грубая ошибка в программе


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// подключаем файл описания управляющих регистров ОМК
#include <REG51.H>
// Основная функция программы:
// после сброса ей передаётся управление
void main(void)
{
// описываем целую переменную, с помощью которой далее
// реализуем задержку
int i;
// выводим в порт P2 все нули
P2 = 0x00;
// бесконечный цикл
while(1) {
// задержка времени
for (i=10; i>0; i--);
// изменяем состояние вывода P2.2 на противоположное
P2 ^= 0x08; } }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2020, 03:35
Ответы с готовыми решениями:

прямоугольные импульсы
Построение последовательности прямоугольных импульсов. Прямоугольный сигнал представляет собой совокупность прямоугольных импульсов...

Прямоугольные импульсы в MathCAD
Привет ребята. Не могли бы вы мне помочь. В маткаде надо построить прямоугольные импульсы с постоянным периодом, и длительность, проще...

Не хватает выводов (у микроконтроллера PIC16F73) при подключения к DSP.
Здравствуйте! Подскажите пожалуйста, что можно сделать если не хватает выводов(ножек) у микроконтроллера PIC16F73 при подключении по шине...

19
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 491
23.07.2020, 07:22
чтение-модификация-запись регистра
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,858
23.07.2020, 07:55
Лучший ответ Сообщение было отмечено kimchi как решение

Решение

kimchi, обрати внимание на 15 строчку
неужели компилятор ничего не сказал?

Добавлено через 2 минуты
Цитата Сообщение от kimchi Посмотреть сообщение
void main(void)
не стандарт
по стандарту int main()
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
23.07.2020, 11:36
Лучший ответ Сообщение было отмечено kimchi как решение

Решение

C
1
P2 ^= 0x08;
Это Р2.3.
2
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 491
23.07.2020, 12:27
Цитата Сообщение от ValeryS Посмотреть сообщение
не стандарт
А вот майкрософт другого мнения
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 13:18
То, что они старательно плюют на стандарт - их проблемы. Ну и тех, кто на них оглядывается.
Миниатюры
Текст программы на языке С, формирующей прямоугольные импульсы на одном из выводов микроконтроллера  
0
Эксперт по электронике
6558 / 3185 / 335
Регистрация: 28.10.2011
Сообщений: 12,462
Записей в блоге: 7
23.07.2020, 13:46
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То, что они старательно плюют на стандарт - их проблемы. Ну и тех, кто на них оглядывается.
GCC тоже плюет на стандарт?
Миниатюры
Текст программы на языке С, формирующей прямоугольные импульсы на одном из выводов микроконтроллера  
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 14:04
COKPOWEHEU, в чём сакральный смысл возврата значения из main?
Ведь
  • Обычно возвращаться некуда, код стартапа не правят;
  • Никто не возвращается, ибо бесконечный цикл;
  • Никто при возврате не проверяет это значение в стартапе.

Добавлено через 8 минут
Данный случай, в микроконтроллере, считается freestanding.
Миниатюры
Текст программы на языке С, формирующей прямоугольные импульсы на одном из выводов микроконтроллера  
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 14:43
Цитата Сообщение от locm Посмотреть сообщение
GCC тоже плюет на стандарт?
Да вроде нет:
Code
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
29
30
31
32
33
$ cat main.c 
#include <stm32f10x.h>
#include "pinmacro.h"
#define F_APB2 72000000
 
void __attribute__((weak)) _init(void){}
void __attribute__((weak)) SystemInit(void){}
 
void sleep(uint32_t x){
  volatile uint32_t i = x;
  while ( i-- );
}
 
void main(void){
  
  while(1){
  }
}
$ make
arm-none-eabi-gcc -mthumb -mcpu=cortex-m3 -fno-builtin -Wall -c  -I. -ggdb -Os -I../Libraries/STM32F10x_StdPeriph_Driver/inc -I../Libraries/CMSIS/CM3/CoreSupport -I../Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x -DSTM32F10X_MD_VL   -DVECT_TAB_FLASH -DGCC_ARMCM3   -c -o main.o main.c
main.c:13:6: warning: return type of 'main' is not 'int' [-Wmain]
 void main(void){
      ^~~~
..linking
arm-none-eabi-gcc -T../ld/stm32f100c4.ld -nostartfiles -Wl,-Map -Wl,main.map -mthumb -mcpu=cortex-m3 -o main.out crt.o -L../ld main.o 
# --verbose
arm-none-eabi-size main.out
   text    data     bss     dec     hex filename
    580       0     256     836     344 main.out
...copying
arm-none-eabi-objcopy -Obinary main.out main.bin
arm-none-eabi-objcopy -Oihex main.out main.hex
arm-none-eabi-objdump -D -S main.out > main.list
Может у вас в IDE какие-то флаги не выставлены?
Цитата Сообщение от Rius Посмотреть сообщение
COKPOWEHEU, в чём сакральный смысл возврата значения из main?
Практического - никакого. Но зачем переписывать стандарт ради данного конкретного случая?
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 15:04
Данный случай прописан в C99, если не ошибаюсь. Скриншот из черновика выше.

Добавлено через 15 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Может у вас в IDE какие-то флаги не выставлены?
-pedantic добавляет в том числе это предупреждение.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 15:05
Цитата Сообщение от Rius Посмотреть сообщение
Данный случай прописан в C99, если не ошибаюсь. Скриншот из черновика выше.
the name and type of the function called at program startup are implementation-defined.
Иными словами, там вообще может не быть main - о чем тогда вообще речь?
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 15:08
О том, что какой-то C++ стандарт для C на микроконтроллерах - не указ.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,858
23.07.2020, 15:21
Цитата Сообщение от Rius Посмотреть сообщение
О том, что какой-то C++ стандарт для C на микроконтроллерах
нет такого языка C на микроконтроллерах
и причем здесь С++ стандарт? есть стандарт языка С https://ru.wikipedia.org/wiki/ANSI_C
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 15:28
Цитата Сообщение от ValeryS Посмотреть сообщение
нет такого языка C на микроконтроллерах
Ага. И в C99 п. 5.1.2.1 прописан вариант, под который как раз попадают микроконтроллеры. См. скриншот выше. Или вот pdf с C99.

Цитата Сообщение от ValeryS Посмотреть сообщение
и причем здесь С++ стандарт?
В 6 посте показан C++.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 16:18
Rius, не понимаю что вы доказать-то хотите?
Ваш скриншот говорит только о том, что если программист хочет самостоятельно описать стартап-код, то волен не использовать в нем стандартный main вообще. А вместо стандартного main использовать что-нибудь вроде char* main(struct week_date bIbIbI);.
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 16:20
Что это тоже - стандарт. В данном случае.

Цитата Сообщение от ValeryS Посмотреть сообщение
не стандарт
по стандарту int main()
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То, что они старательно плюют на стандарт - их проблемы. Ну и тех, кто на них оглядывается.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 17:16
Отказ от использования main() - особый случай, который явно не относится к задаче ТСа, как и к майкрософтам. Тем более что даже в этом особом случае использовать то же самое имя main - идиотизм, только добавляющие путаницу. Примерно тоже самое что объявить макрос с именем If, устанавливающий флаг Interrupt Flag.
0
Эксперт по электронике
6558 / 3185 / 335
Регистрация: 28.10.2011
Сообщений: 12,462
Записей в блоге: 7
23.07.2020, 17:36
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
если программист хочет самостоятельно описать стартап-код, то волен не использовать в нем стандартный main вообще.
Для STM32 можно переписать стартап как хочешь в том числе использовать функцию не с именем main. Что в этом плохого?
0
Эксперт .NET
 Аватар для Rius
13084 / 7644 / 1670
Регистрация: 25.05.2015
Сообщений: 23,264
Записей в блоге: 14
23.07.2020, 17:47
Судя по найденному
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
~$ cat avr.S
#define __SFR_OFFSET 0
#include <avr/io.h>
 
    .global main
main:
    ldi r24, 0xFF
    out DDRB, r24
loop:
    in r25, PORTB
    eor r25,r24
    out PORTB, r25
    rjmp loop
..........
у avr тоже не гвоздями прибито.
Или таки прибито?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
23.07.2020, 19:45
Цитата Сообщение от locm Посмотреть сообщение
Для STM32 можно переписать стартап как хочешь в том числе использовать функцию не с именем main. Что в этом плохого?
Если она выглядит как стандартная, работает как стандартная и крякает как стандартная - то ничего. А если нет - зачем ее называть main?
Цитата Сообщение от Rius Посмотреть сообщение
у avr тоже не гвоздями прибито.
Или таки прибито?
Думаю, не прибито. Правда, необходимости ручного переопределения я ни разу не видел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2020, 19:45
Помогаю со студенческими работами здесь

Конвертер для перевода программ на языке PHP в текст программы на языке Assembler
Всем привет. Как можно реализовать такую задачу? Разработать конвертор в языке Assembler для перевода программ на языке PHP в текст...

Как подать напряжение на контакт PCI карты дискретных выводов на языке с++?
Как подать напряжение на контакт PCI карты дискретных выводов на языке с++?

Схема алгоритма, текст программы на алгоритмическом языке
Помогите составить задачу по данному примеру на C#. Не получается сделать

Схема алгоритма, текст программы на алгоритмическом языке
Помогите составить задачу по данному примеру на C#. Не получается сделать

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru