标题: 为何抄的单片机程序都不成? [打印本页]

作者: small2    时间: 2021-12-16 21:50
标题: 为何抄的单片机程序都不成?
抄了很多程序,为何抄的程序都不成,好

作者: 冰火风轮    时间: 2021-12-16 22:33
看了很多菜谱,炒的菜还是难以下咽,郁闷
作者: Y_G_G    时间: 2021-12-16 22:51
抄程序就像抄板一样
你得会才能抄,不然,你是连抄都抄不好
网上的代码,能用就不说了
那些不能用的,不是少这个文件就是少那个函数的
硬件电路跟你自己的硬件电路又不一定相同的
还有就是随便写的,也没有验证过的
作者: jialishoushi    时间: 2021-12-16 23:22
冰火风轮 发表于 2021-12-16 22:33
看了很多菜谱,炒的菜还是难以下咽,郁闷

这比方打的  我更加郁闷  为何相亲那么多次 一个都没成?
作者: wp5180    时间: 2021-12-16 23:47
还是要自己有基础  在报错时可以知道哪行代码有问题 等等其他问题
作者: 啤酒瓶子老大    时间: 2021-12-17 01:31
抄也有技巧的。你以为真的是ctrl-c和ctrl-v就行了,哈哈。
作业可以,抄成功了,老师一个大意就过关了,工作了你抄一个试一试,搞不好就会收到律师函!
作者: wulin    时间: 2021-12-17 07:34
橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。所以...
作者: wufa1986    时间: 2021-12-17 08:13
因为网上的很多程序本身就有问题
作者: anandyuan    时间: 2021-12-17 08:52
有些程序就是转载的,都不全,还是要自己琢磨,尽量自己写出来
作者: 黄youhui    时间: 2021-12-17 08:53
wufa1986 发表于 2021-12-17 08:13
因为网上的很多程序本身就有问题

很多都是故意的,1 电路环境不同 2 我辛辛苦苦的东西凭啥给你白飘,
作者: wojiaoguogai    时间: 2021-12-17 09:07
这又不是哪些上层语音
作者: lmn2005    时间: 2021-12-17 10:35
黄youhui 发表于 2021-12-17 08:53
很多都是故意的,1 电路环境不同 2 我辛辛苦苦的东西凭啥给你白飘,

没错,我觉得有些程序是作者故意犯错的,当然也不排除硬件不同。
作者: liht1634    时间: 2021-12-17 10:46
在没有劳动的前提下,ctrl+C crtl+V你都不好意思吧。
环境的不同、个人水平不同,别人的程序只是一个参考而已。
作者: 天ノ忆    时间: 2021-12-17 11:56
抄程序抄的是思路,原原本本抄个能用的除非找人付费开发
作者: xianfajushi    时间: 2021-12-17 13:46
谁说的,我的博客代码随便复制张贴都是可以正常使用的,否则的话会有那么多人访问?
作者: 51ccccd    时间: 2021-12-17 13:54
因为你的环境和网上的环境不一样,自然不可以套用
作者: JoeJane    时间: 2021-12-17 14:22
打铁还得自身硬,自己要知道问题出在哪里
作者: 我会想你的    时间: 2021-12-17 14:32
xianfajushi 发表于 2021-12-17 13:46
谁说的,我的博客代码随便复制张贴都是可以正常使用的,否则的话会有那么多人访问?

我就把你的 595抄走了,谢谢
作者: xianfajushi    时间: 2021-12-17 14:45
我会想你的 发表于 2021-12-17 14:32
我就把你的 595抄走了,谢谢

不卖不送
作者: wyqf    时间: 2021-12-17 15:37
很正常,环境硬件等等因素,包括部分配置问题都遇到过,只能保证自己在进行分享的时候尽量把运行环境写清楚,让后来者能理解吧
作者: 00云梦泽00    时间: 2021-12-17 15:56
抄 其实就是借鉴  即使自己写的程序   调试的时候不是出这问题 即使那儿报警 时间一般比较长  更何况一个不熟悉的呢
作者: AUG    时间: 2021-12-17 16:35
jialishoushi 发表于 2021-12-16 23:22
这比方打的  我更加郁闷  为何相亲那么多次 一个都没成?

哈哈哈,相亲不适合做这个比喻,相亲有可能是两方都有问题,但是炒菜就只是炒菜的人的问题,菜谱是没有问题的哈
作者: wdmcp    时间: 2021-12-17 16:36
抄了几次程序,发现放网上让你抄的基本都故意给你加bug,当然都是很简单的,比如变量定义,还有类似手误的问题,思路基本都可以用。所以抄就只抄思路,大段复制一定要看懂了没问题再抄。
作者: 大神狗    时间: 2021-12-17 17:13
很多程序和自己设计的东西就有出入 抄还是要从自身切入 看懂了再抄
作者: hah_    时间: 2021-12-18 11:30
人家用到硬件可能不一样,比如说主控芯片不一样,所以抄人家的代码不是真的就是crtl+c,你如果代码都没看懂,抄的也没有意义
作者: linglingaigu    时间: 2021-12-19 11:30
用的硬件不一样,不兼容
作者: 483277489    时间: 2021-12-20 00:08
首先该看有没有抄错,再看用的什么单片机,单片机是不是一样的,而且应该还和其他元器件有
作者: hjx5548    时间: 2021-12-20 08:28
xianfajushi 发表于 2021-12-17 13:46
谁说的,我的博客代码随便复制张贴都是可以正常使用的,否则的话会有那么多人访问?

在哪里可以看到你的程序?
作者: 黄youhui    时间: 2021-12-20 09:08
xianfajushi 发表于 2021-12-17 13:46
谁说的,我的博客代码随便复制张贴都是可以正常使用的,否则的话会有那么多人访问?

别人访问你的博客,抄你的代码也会自己改的,不会改的永远不会。就拿液晶屏来说吧,网上很多资料,但是核心部分永远是初始化,初始化没做好一切都是虚的,VCC电压不一样,色度差等等初始化时参数就不一样。
作者: 1912455977    时间: 2021-12-20 09:24
如果直接复制的话,要核对下大小写,大小写不对也会有问题。
作者: 3125311919    时间: 2021-12-20 09:51
因为硬件配置多半不一样    此外网上确实有很多不正确的程序,学习的时候需要注意     
作者: ZHAOBAO511    时间: 2021-12-20 10:48
抄电路可以,抄程序不行,程序千变万化的。
作者: 860012525    时间: 2021-12-20 11:47
程序主要要把思路理顺,有注释的程序才算好,找错改需求都方便很多
作者: a70524414    时间: 2021-12-20 13:18
有些转载有问题
作者: 最后的sixgods    时间: 2021-12-20 14:02
需要注意单片机的型号,不同的单片机对应的引脚不通,那么控制对应引脚的程序不尽相同,原理图和抄的程序的原理图,芯片,以及外设相同的话,基本没有问题的,除非他程序有问题
作者: aygc    时间: 2021-12-20 14:26
本帖最后由 aygc 于 2021-12-20 16:57 编辑

我对别人的图纸从来都是分析没问题后在消化吸收,然后再实际验证
作者: 七夜z    时间: 2021-12-20 20:34
注意各种环境是否相同,开发环境不同也会使程序运行不起来。
作者: 975890432    时间: 2021-12-20 20:40
抄的前提就是要先弄够看懂,明白原理。你可以说一摸一样的照搬,但是很多网络上的都是错误的,以至于你在抄的过程中也会产生错误,自身就要有一定的基础。要不然错在哪都不会知道

作者: taotie    时间: 2021-12-20 21:59
hjx5548 发表于 2021-12-20 08:28
在哪里可以看到你的程序?

你点击他的ID     “xianfajushi”
作者: 发货哦你    时间: 2021-12-21 10:41
不能盲目抄作业,要理解,吸收。
作者: 021819    时间: 2021-12-21 16:06
用的系统不一样,有可能需要改一些数据呀
作者: yy是我儿    时间: 2021-12-21 16:08
这是根据博主代码的强壮性决定的吧
作者: wx88    时间: 2021-12-21 17:48
因为抄了咋不懂,而且网上很多都是错误的
作者: 网络不安全    时间: 2021-12-21 20:22
确实太难了,我改的这个程序就有问题,哪位大神帮我看看吧,P0 P1 P2口接24个LED 循环亮,显示就是不正常
  1. #include <REG52.H>

  2. unsigned char RunMode;
  3. //**********************************System Fuction*************************************************
  4. void Delay1ms(unsigned int count)
  5. {
  6.         unsigned int i,j;
  7.         for(i=0;i<count;i++)
  8.         for(j=0;j<120;j++);
  9. }


  10. unsigned char GetKey(void)
  11. {
  12.         unsigned char KeyTemp,CheckValue,Key = 0x00;
  13.         CheckValue = P3&0x32;
  14.         if(CheckValue==0x32)
  15.                 return 0x00;
  16.         
  17.         Delay1ms(10);  //延迟1ms(10)
  18.         KeyTemp = P3&0x32;
  19.         if(KeyTemp==CheckValue)
  20.                 return 0x00;

  21.         if(!(CheckValue&0x02))
  22.                 Key|=0x01;
  23.         if(!(CheckValue&0x10))
  24.                 Key|=0x02;
  25.         if(!(CheckValue&0x20))
  26.                 Key|=0x04;
  27.         return Key;
  28. }

  29. unsigned int TimerCount,SystemSpeed,SystemSpeedIndex;
  30. void InitialTimer2(void)
  31. {
  32.         T2CON  = 0x00;                        //16 Bit Auto-Reload Mode
  33.         TH2 = RCAP2H = 0xFC;          //重装值,初始值        TL2 = RCAP2L = 0x18;
  34.         ET2=1;                                        //定时器 2 中断允许
  35.         TR2 = 1;                                //定时器 2 启动
  36.         EA=1;
  37. }

  38. unsigned int code SpeedCode[]={   1,   2,   3,   5,   8,  10,  14,  17,  20,  30,
  39.                                                              40,  50,  60,  70,  80,  90, 100, 120, 140, 160,
  40.                                                                 180, 200, 300, 400, 500, 600, 700, 800, 900,1000};//30
  41. void SetSpeed(unsigned char Speed)
  42. {
  43.         SystemSpeed =SpeedCode[Speed];
  44. }

  45. void LEDShow(unsigned long LEDStatus)    //修改处
  46. {
  47.         P0 = ~(LEDStatus&0x00FF);
  48.         P1 = ~((LEDStatus>>8)&0x00FF);
  49.         P2 = ~((LEDStatus>>16)&0x00FF);  //修改处
  50. }

  51. void InitialCPU(void)
  52. {
  53.         RunMode = 0x00;
  54.         TimerCount = 0;
  55.         SystemSpeedIndex = 10;

  56.         P0 = 0xFF;
  57.         P1 = 0xFF;
  58.         P2 = 0xFF;
  59.         P3 = 0xFF;
  60.         Delay1ms(500);
  61.         P0 = 0xFF;
  62.         P1 = 0xFF;
  63.         P2 = 0xFF;
  64.         P3 = 0xFF;
  65.         SetSpeed(SystemSpeedIndex);
  66.         
  67. }

  68. //Mode 0
  69. unsigned int LEDIndex = 0;
  70. bit LEDDirection = 1,LEDFlag = 1;

  71. void Mode_0(void)
  72. {
  73.         if(LEDDirection)
  74.                 LEDShow(0x000001<<LEDIndex);   //修改处
  75.         else
  76.                 LEDShow(0x800000>>LEDIndex);   //修改处
  77.         if(LEDIndex==23)                       //修改处                  
  78.                 LEDDirection = !LEDDirection;
  79.    LEDIndex = (LEDIndex+1)%24;                 //修改处              
  80. }

  81. void TimerEventRun(void)
  82. {
  83.         
  84.         if(RunMode ==0x00)
  85.         {
  86.                 Mode_0();
  87.         }

  88. }

  89. void Timer2(void) interrupt 5 using 3
  90. {
  91.         TF2 = 0;         //中断标志清除( Timer2 必须软件清标志!)
  92.         if(++TimerCount>=SystemSpeed)
  93.         {
  94.                 TimerCount = 0;
  95.                 TimerEventRun();
  96.            }
  97. }
  98. unsigned char MusicIndex = 0;
  99. void KeyDispose(unsigned char Key)
  100. {
  101.         
  102.         if(Key&0x02)
  103.         {
  104.                 if(SystemSpeedIndex>0)
  105.                 {
  106.                         --SystemSpeedIndex;
  107.                         SetSpeed(SystemSpeedIndex);
  108.                 }
  109.                 else
  110.                 {
  111.                         
  112.                 }
  113.         }
  114.         if(Key&0x04)
  115.         {
  116.                 if(SystemSpeedIndex<28)
  117.                 {
  118.                         ++SystemSpeedIndex;
  119.                         SetSpeed(SystemSpeedIndex);
  120.                 }
  121.                 else
  122.                 {
  123.                         
  124.                 }
  125.         }        
  126. }

  127. //***********************************************************************************
  128. main()
  129. {
  130.         unsigned char Key;
  131.         InitialCPU();
  132.         InitialTimer2();

  133.         while(1)
  134.         {
  135.                 Key = GetKey();
  136.                 if(Key!=0x00)
  137.                 {
  138.                         KeyDispose(Key);
  139.                 }
  140.         }
  141. }
复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1