Как заставить работать вызов системной функции? - PullRequest
0 голосов
/ 15 мая 2019

Я хочу выключить компьютер нажатием кнопки 8051.Все, включая цепь, работает нормально, кроме вызова системной функции для инициирования выключения.Это связано с тем, что stdlib.h, поставляемый с Keil C51, не включает эту функцию.

Я пытался заменить stdlib.h на тот, что из MinGW, а также на этот (у них есть системная функция): https://code.woboq.org/qt5/include/stdlib.h.html Оба раза компиляция не удалась, потому что эти файлы генерируют ошибки (слишком много, чтобы исправить).Затем я объявил свою собственную функцию (см. Ниже), которая делает компиляцию успешной, но не работает, то есть не завершает работу.

#include <stdio.h>
#include <stdlib.h>
#include <reg51.h>

void Delay(void){
    int j;
    int i;
    for(i=0;i<10;i++){
        for(j=0;j<10000;j++){}
    }
}

extern int system (const char *__command);

void main(){
    P1=0xFF;
    P2=0x00;
    while(1){
        P2=~P1;
        system("C:\\WINDOWS\\System32\\shutdown /s");
        Delay();
    }
}

При нажатии кнопки компьютер должен выключиться.Однако либо компиляция завершится неудачно, либо пользовательская функция ничего не сделает.

...