首页 > 解决方案 > 如何使系统函数调用起作用?

问题描述

我想按一个按钮使用 8051 关闭计算机。除了调用系统函数来启动关机之外,包括电路在内的一切都工作正常。这是因为 Keil C51 自带的 stdlib.h 中没有包含这个功能。

我尝试用 MinGW 的那个替换 stdlib.h 以及这个(他们有系统功能):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();
    }
}

按下按钮时,计算机应关闭。但是,要么编译失败,要么用户定义的函数什么都不做。

标签: cshutdownkeil8051

解决方案


推荐阅读