十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你好!
站在用户的角度思考问题,与客户深入沟通,找到头屯河网站设计与头屯河网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖头屯河地区。
这个开关如果不是总电源的话,还是很容易实现的,比如,你可以定义个全局变量,初始值为0,然后单片机检测按键是否按下,按下则对这个变量取反,然后判断这个是否为0xff(定义开启电机的值为0xff),是那就开启电机,否则关闭;如果这个开关时总电源的开关的话,则有点麻烦,需要有硬件的支持。
我的回答你还满意吗~~
开关控制的话就不用编程语言了好吗,因为开关是直接的物理连接,通过电路实现就好,那我就理解成你是想用单片机来实现吧,首先单片机与外设怎样连接我不考虑,因为你没说。那么我就当是我可以随意的使用单片机的输出吧,然后开关闭合理解成按键是高电平,再按一次取反。
#include89c51.h //是不是这个头文件记不清了。。
#defineuint unsigned int
#defineuchar unsigned char
#define LED1 P1_0
#define LED2 P1_1
#define KEY1 P0_1
/* 函数声明,延迟函数,LED灯初始化函数,按键KEY初始化,按键KEY查询函数*/
voidDelayMs(uint n);
voidLEDInit(void);
voidKEYInit(void);
ucharKEYScan(void);
/*主函数*/
void main()
{
LED1 = 0;
LED2 = 1; //不同的接法可能导致结果不一样,有的高电平亮有的低电平
while(1) //具体看你自己的板子怎么接的
{
if(KEYScan())
LED1 = ~LED1;
LED2 = ~LED2;
}
}
/*检测按键状态*/
ucharKEYScan(void)
{
if(KEY1==0)
DelayMs(100); // 延时一段时间,以免抖动
if(KEY1==0)
{
DelayMs(100);
while(KEY1==0);
return 1;
}
else
return 0;
}
/*延迟函数*/
voidDelayMs(uint n)
{
int i;
while(n--)
{
for(i=587;i0;i--) ;
}
}
以上代码是做CC2530实验的时候做的,修改了一下。
定时关机很容易,但开机应该是无法通过C语言实现的,需要去BIOS中设定。。定时关机,原理照样是用system()函数来调用系统命令,还不如在计划任务里定时关机呢
运行时使用条件判断语句
if (条件为真) {……} else {……};
if (条件1) {……} else if (条件2) {……} else {……};
switch (条件)
case 条件1: {……}break;
case 条件2: {……} break;
循环语句中有 for(i = 0; i 5; i++)这样的,如果i大于等于5则退出for语句
do {……} while(条件) 先执行一次,再判断条件是否为真,如果条件不为真,则退出
while(条件) {……} 如果条件为真,则一直执行循环,否则退出
编译时控制使用宏定义
#define ENABLE_ADD
如:#ifdef ENABLE_ADD
/*中间为控制内容,如果定义了宏ENABLE_ADD,则下面内容将进行编译*/
#else
/* 否则,这里的内容将进行编译 */
#endif
#ifndef ENABLE_ADD
/* 如果没有定义宏EBABLE_ADD则这里的内容将进行编译 */
#endif
#define VERSION 3
#if VERSION == 3
/* 如果宏定义 VERSION为3,则这里的内容将进行编译 */
#endif