OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3418|回复: 20

请教一下大家和原子哥,这个编程问题该怎么解决,已经一周没有成功了。

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2018-8-16 13:22:31 | 显示全部楼层 |阅读模式
1金钱
例如我接收了3个16进制数,44、55、66,如何把这三个16进制数同时减22,得到22、33、44,并且倒置放置,放置结果为44、33、22,32单片机编程该如何实现呢?

最佳答案

查看完整内容[请看2#楼]

已经一周没有成功了?该再去学C语言了, u8 tx_3byte[3]; //RX_3byte_sys 直接操作全局变量.RX_3byte_sys();执行后就是你要的数据 void RX_3byte_sys(void) { u8 temp; u8 i; //数据有效性判定. for(i=0;i=0x22) { rx_3byte -=0x22; } else { error_sys(10); //错误处理函数,传入的 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-8-20
在线时间
49 小时
发表于 2018-8-16 13:22:32 | 显示全部楼层
本帖最后由 中技电子实验室 于 2018-8-17 18:47 编辑

已经一周没有成功了?该再去学C语言了,
u8 tx_3byte[3];

//RX_3byte_sys 直接操作全局变量.RX_3byte_sys();执行后就是你要的数据
void RX_3byte_sys(void)
{
     u8 temp;
    u8 i;
    //数据有效性判定.
     for(i=0;i<3;i++)
        {
             if(rx_3byte>=0x22)
               {
                   rx_3byte -=0x22;
               }
              else
              {
                    error_sys(10);   //错误处理函数,传入的参数表示错误标识
              }
        }
       //数据倒置放置
       temp = rx_3byte[0];
       rx_3byte[0] = rx_3byte[2];
       rx_3byte[2] = temp;
}
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-16 13:32:14 | 显示全部楼层
首先你接收的数据应该是放在数组里的吧...不知道你用什么传输的。      然后你接收到后对这个数组处理一下不就可以了么...把里面的数据都-0x22.......     然后倒序一下不就可以了么.........
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 13:33:20 | 显示全部楼层
323232 发表于 2018-8-16 13:32
首先你接收的数据应该是放在数组里的吧...不知道你用什么传输的。      然后你接收到后对这个数组处理一下 ...

主要倒置不会,大神帮忙给个例子吧
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-16 13:37:31 | 显示全部楼层
本帖最后由 323232 于 2018-8-16 13:40 编辑

你就再准备一个和之前那个一样长度的空数组啊...用for循环...........
(比如说数据长度是10)(a是原来的数组,b是新数组)
for(i=9;i>=0;i--)
    b[9-i]=a;

c不过关啊,建议多看一些初级算法书

猪猪熊呢?
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-8-16 13:39:29 | 显示全部楼层
牛逼。
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 13:40:42 | 显示全部楼层
323232 发表于 2018-8-16 13:37
你就再准备一个和之前那个一样长度的空数组啊...用for循环...........
(比如说数据长度是10)(a是原来的数 ...

是啊,谢谢了
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 13:40:56 | 显示全部楼层

怎么了,大神
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-16 13:41:11 | 显示全部楼层
for(i=9;i>=0;i--)
    b[9-i]=a[i];
打不上去不知道怎么了
猪猪熊呢?
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 13:44:36 | 显示全部楼层
323232 发表于 2018-8-16 13:41
for(i=9;i>=0;i--)
    b[9-i]=a;
打不上去不知道怎么了

这个数组倒置如何体现的呢
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-8-16 13:49:05 | 显示全部楼层
找本C语言基础的书好好看看吧
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-16 13:51:29 | 显示全部楼层
支持者2400 发表于 2018-8-16 13:44
这个数组倒置如何体现的呢

先把c学好吧.....这不是算法问题了...我发现
猪猪熊呢?
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 13:54:57 | 显示全部楼层
323232 发表于 2018-8-16 13:51
先把c学好吧.....这不是算法问题了...我发现

谢谢了,我刚上午找了找,发现非常简单
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
金钱
2107
注册时间
2017-2-11
在线时间
307 小时
发表于 2018-8-16 14:19:00 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
{
        int str_input[3] = {0,};
        int str_out[3] = {0,};
        char i;
        printf("please enter a,b,c:\r\n");
        for(i =0;i<3;i++)
                scanf("%X",str_input+i);
        for(i =0;i<3;i++)
                str_input[i] -=22;
        for(i =0;i<3;i++)
        {
                str_out[i] = str_input[2-i];
                printf("str_out[%d] = 0X%X\r\n",i,str_out[i]);
        }       
        return 0;
}
刚写的,希望对你有帮助~~小帅哥
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-16 14:24:43 | 显示全部楼层

谢谢啊,大神,但是我不帅啊
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-17 10:19:10 | 显示全部楼层
中技电子实验室 发表于 2018-8-16 13:22
已经一周没有成功了?该再去学C语言了,
u8 tx_3byte[3];

谢谢了,我还想再请教一下,倒置后的三个数组我还想进行下一步操作,用写返回值吗
回复

使用道具 举报

2

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-8-20
在线时间
49 小时
发表于 2018-8-17 11:07:03 来自手机 | 显示全部楼层
倒置后的数组是全局变量,函数内直接修改了,不用传参数,也没返回值,注意的是要调用上面的函数后才是你要的倒置
回复

使用道具 举报

2

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-8-20
在线时间
49 小时
发表于 2018-8-17 11:09:35 来自手机 | 显示全部楼层
另,数据有效性判断程序有问题,要大于等于,rx_3type【i】,有一个写成TX了
回复

使用道具 举报

2

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-8-20
在线时间
49 小时
发表于 2018-8-17 11:14:25 来自手机 | 显示全部楼层
通俗地说,你要减0x22要先保证其大于等于ox22,如果不是应该是接收数据不对,你要在错误函数中去处理,后面的倒置数值将不是你要的数了
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2018-8-17 15:14:31 | 显示全部楼层
中技电子实验室 发表于 2018-8-17 11:14
通俗地说,你要减0x22要先保证其大于等于ox22,如果不是应该是接收数据不对,你要在错误函数中去处理,后面 ...

谢谢,您有时间能帮我看看另外一个帖子吗,有点弄不懂
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-20 10:53:54 | 显示全部楼层
本帖最后由 a3748622 于 2018-8-20 10:56 编辑

[mw_shl_code=objc,true]#include <stdio.h>

#define  NUM_ARRY   5

int main()
{
        int i ,RecArray[NUM_ARRY], temp;
       

        /************** 获取数字 **************/
        for (i = 0; i < NUM_ARRY; i++)
        {
                printf("请输入第%d个字符:", i + 1);
                scanf("%d", RecArray + i);
        }

        /************** 倒置数字 **************/
        for (i = 0; i < NUM_ARRY / 2; i++)
        {
                temp = RecArray[NUM_ARRY - i - 1];
                RecArray[NUM_ARRY - i - 1] = RecArray;
                RecArray = temp;
        }

        /************** 显示数字 **************/
        for (i = 0; i < NUM_ARRY; i++)
                printf("%d\r\n", RecArray);


        scanf("%d",&i);
        return 0;
}[/mw_shl_code]

这种?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 17:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表