函数pwr的功能c语言,想请教C语言编程。

根据题主的描述编写了下面的小程序。首先是程序的部分截图:

f4268acd93a8ec06b10ab915fb06b52b.png

在代码led.c中各函数功能描述如下:

① void pwr_all_on(void)是开启16盏LED。

② void pwr_all_off(void)是关闭16盏LED。

③ void print_led_state(void)的依次描述16盏LED灯的状态。

④ int get_led(int led_no)是获取指定次序(1~16号)LED灯的状态。返回值为1,表示灯开启;返回值为0,表示灯关闭。

⑤ void set_led(int led_no, int state)用于设置指定次序(1~16号)LED灯的状态。

int led_no表示LED次序

int state表示LED灯状态。1表示LED开启,0表示LED关闭。

最后是led.c中的源代码:

-------------------------------led.c-------------------------------------------

#include

#include

#include

// 表示LED灯的状态

#define POWER_ON    (1)

#define POWER_OFF   (0)

// LED各位依次有电的状态

static uint16_t pwr_on[16] = {

0x1, 0x2, 0x4, 0x8,

0x10,0x20, 0x40, 0x80,

0x100, 0x200, 0x400, 0x800,

0x1000, 0x2000, 0x4000, 0x8000

};

// LED各位依次无电的状态

static uint16_t pwr_off[16] = {

0xfffe, 0xfffd, 0xfffb, 0xfff7,

0xffef, 0xffdf, 0xffbf, 0xff7f,

0xfeff, 0xfdff, 0xfbff, 0xf7ff,

0xefff, 0xdfff, 0xbfff, 0x7fff

};

// 在不同的软硬件平台上,char、int、long等的存储空间并不一致,

// 因而为了确定使用的是16位存储空间,我使用了stdint.h中的uint16_t

// 表示16位无符号整形。

// led_state表示16盏LED灯,其中第0位表示LED1,

// 第1位表示LED2,以此类推

static uint16_t led_state = 0xffff;

// 用于设置led_state状态

// int led_no表示LED灯的序号,有效范围1~16

// int state表示灯的状态。取值POWER_ON或POWER_OFF

void set_led(int led_no, int state);

// 获取特定LED灯的状态

// 返回值为POWER_ON或者POWER_OFF

// int led_no为指定的LED灯序号。有效值为1~16

int get_led(int led_no);

// 依次描述16盏LED的状态

void print_led_state(void);

// 开启所有的LED灯

void pwr_all_on(void);

// 关闭所有的LED灯

void pwr_all_off(void);

int main(void) {

printf("power all on\n");

pwr_all_on();

print_led_state();

printf("\npower off LED 16\n");

set_led(16, POWER_OFF);

printf("power off LED 1\n");

set_led( 1, POWER_OFF);

print_led_state();

printf("\npower all off\n");

pwr_all_off();

print_led_state();

return 0;

}

void set_led(int led_no, int state) {

if (led_no < 1 || led_no > 16) {

fputs("The specificed LED number is unavailable and "

"the effective range is from 1 to 16.\n", stderr);

exit(0);

}

uint16_t set_token;

if(POWER_ON == state) {

led_state |= pwr_on[led_no-1];

} else if (POWER_OFF == state) {

led_state &= pwr_off[led_no-1];

} else {

fputs("The state of LED is unavailable and "

"the effective range is  0 or 1.\n", stderr);

exit(0);

}

}

int get_led(int led_no) {

if (led_no < 1 || led_no > 16) {

fputs("The specificed LED number is unavailable and "

"the effective range is from 1 to 16.\n", stderr);

exit(0);

}

int state = led_state & pwr_on[led_no-1];

if (state) {

state = POWER_ON;

} else {

state = POWER_OFF;

}

return state;

}

void print_led_state(void) {

int i;

printf("LED state:\n");

for (i=1; i<=16; i++) {

if (POWER_ON == get_led(i)) {

printf("\tLED %2d is power on.\n", i);

} else {

printf("\tLED %2d is power off.\n", i);

}

}

}

void pwr_all_on(void) {

led_state = ~(led_state ^ led_state);

}

void pwr_all_off(void) {

led_state ^= led_state;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值