Я хочу выключить компьютер нажатием кнопки 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();
}
}
При нажатии кнопки компьютер должен выключиться.Однако либо компиляция завершится неудачно, либо пользовательская функция ничего не сделает.