发新帖我要提问
12
返回列表
打印

菜鸟又遇到难题了,C51小程序再来求教

[复制链接]
楼主: 辉扬的心
手机看帖
扫描二维码
随时随地手机跟帖
21
刘前辈| | 2009-5-11 00:22 | 只看该作者 回帖奖励 |倒序浏览

同意20楼,我说的话只是比喻。

荀子的《劝学》想必是会背:
“吾尝终日而思矣,不如须臾之所学也;”

“须庚”是多久?没有2天吧,“终日”也不止一星期吧?比喻而已。

举例:像我这样俗人想一辈子也想不出数据压缩方法,不过看了2天书,也能说出个“方箱函数和哈尔小波”啦,哈哈,当然皮毛而已。
有人愿意终日而思别人已经总结过了的东西,(当然至今未解的“世界难题”除外。)那是他个人的自由,谁也管不着。咱没那个天赋,只好多看书,向别人留下的珍贵遗产多学习。弥补自己的不足。


君子曰:学不可以已。(咱古文不太好,干嘛不可以己?独立创新么,中国一万年也要造出核潜艇。多好啊。
“本来写程序就应该鼓励原创,”精神可嘉,马上给您出道书上的题

“如何判断一台机器的字节顺序是大端或小端?”

这是highgear前几天没写出来的题目。可是书上早就有了。LS是愿意自己“终日”思考,还是愿意“须庚”所学?很简单的题目,试试您原创要花多久?几种方法?


还有关于highgear,是他自己老缠上我不放,“爱上我了。”我对他一点兴趣都没有。我到那他跟到哪,像苍蝇一样,赶都赶不走。

所以别弄错了。不信您注意看,他还得跟帖。我让了他一天,这位“顶级高手”也没写出一条语句。这次又落后于人了,一般人总有知耻之心,怎么还跟着我。

如果换个位置,highgear大师今天先我一步写出程序,我肯定会自认为没脸见人,从今以后绝不再登录21IC。男人的尊严就是如此,就像所长一样。

这highgear怎么就没有尊严呢?下次还缠着我。这么高顶级水平,“用酷睿二计算哥德巴赫猜想”的原创数学家,一天到晚到这来跟我们菜鸟一块混?屈才了!

使用特权

评论回复
22
刘前辈| | 2009-5-11 00:45 | 只看该作者

“以后慢慢会看到”?顶级高手这么没底气。落在菜鸟“后

/*------------------------------------------------------------------*-

   SWIT_C.C (v1.00)
 
  ------------------------------------------------------------------

   On-Off Switch code, with software debounce.


   COPYRIGHT
   ---------

   This code is from the book:

   PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
   [Pearson Education, 2001; ISBN: 0-201-33138-1].

   This code is copyright (c) 2001 by Michael J. Pont.
 
   See book for copyright details and other information.

-*------------------------------------------------------------------*/

#include "Main.h"
#include "Port.h"

#include "Swit_C.h"

// ------ Public variable definitions ------------------------------

bit Sw_pressed_G = 0; // The current switch status
sbit Sw_pin = P1^2;

// ------ Private constants ----------------------------------------

// Allows NO or NC switch to be used (or other wiring variations)
#define SW_PRESSED (0)

// SW_THRES must be > 1 for correct debounce behaviour
#define SW_THRES (3)

// ------ Private variables ----------------------------------------

static tByte Sw_press_duration_G = 0;
static tByte Sw_blocked_G = 0;


/*------------------------------------------------------------------*-

  FUNCTION: SWITCH_ON_OFF_Init()

  Initialisation function for the switch library.

-*------------------------------------------------------------------*/
void SWITCH_ON_OFF_Init(void)
   {
   Sw_pin = 1;      // Use this pin for input

   Sw_pressed_G = 0;  // Switch is initially OFF
   Sw_press_duration_G = 0;  
   Sw_blocked_G = 0;
   }

/*------------------------------------------------------------------*-

  FUNCTION: SWITCH_ON_OFF_Update()
  
  This is the main on-off switch function.  

  It should be scheduled every 50 - 500 ms.

-*------------------------------------------------------------------*/
void SWITCH_ON_OFF_Update(void)
   {
   // If the switch is blocked, decrement the count and return
   // without checking the switch pin status.
   // This is done to give the user time to remove their finger 
   // from the switch - otherwise if they keep their finger on
   // the switch for more than 0.4s the light will switch off again.

   if (Sw_blocked_G)
      {
      Sw_blocked_G--;
      return;
      }

   if (Sw_pin == SW_PRESSED)
      {
      Sw_press_duration_G += 1;

      if (Sw_press_duration_G > SW_THRES)
         {
         Sw_press_duration_G = SW_THRES;

         // Change switch state
         if (Sw_pressed_G == 1)
            { 
            Sw_pressed_G = 0;  // Switch state changed to OFF
            }
         else
            { 
            Sw_pressed_G = 1;  // Switch state changed to ON
            }

         // Allow no other changes for ~1 second
         Sw_blocked_G = 5;  
         return;
         }

      // Switch pressed, but not yet for long enough
      return; 
      }
    
   // Switch not pressed - reset the count
   Sw_press_duration_G = 0;
   }


/*------------------------------------------------------------------*-
  ---- END OF FILE -------------------------------------------------
-*------------------------------------------------------------------*/ 


对不起,天晚了,一时来情绪。——也没那么讨厌的纠缠之人。
版主说的好,“我不同意你的观点,但是我捍卫你说话的权利。”你有什么观点尽可以畅言,别扯上别人。特别是意不在言,而习惯纠缠上别人。上瘾!

“别挑起事端,耶和华不感冒这类人。”(假冒基督徒,咱教教你《圣经》。)

使用特权

评论回复
23
inter_zhou| | 2009-5-11 09:23 | 只看该作者

“如何判断一台机器的字节顺序是大端或小端?”

unsigned int temp = 0x1234;
if(((unsigned char *)&temp)[0] != 0x12)
{
    大端对齐
}
else
{
    小端对齐

这样对不对?

使用特权

评论回复
24
刘前辈| | 2009-5-11 14:19 | 只看该作者

51没错。比我写的强多了。32/64位机器?错了?

有几个问题请教:

1、不可移植? (不通用。int如果为4bytes,岂不是错误结果?)
2、保值规则?
3、(&temp)[0]和*(&temp)有区别?
4、......


从你的2条程序中获得不少。先谢了。

书上写的也差不多,差别就是“无可挑剔”。

我开始写的也是“可运行,就是不知道怎样写好。”一看书,服气。上面几个问题一清二楚,别人怎么想的到?咱学过,就是不会用。其实概念无处不在。

别看就这么一道2条语句的小题目。——结果还是写错了。所以不看书抄书,“鼓励原创写程序”,说起来好像是那么回事,做起来容易?学C至少一年了吧?2条都写不好,什么时候才能写、如何写1,000条,上万条?照此误导,拼尽全力一生都做不到。

其实什么上万条,都是前人做的模块,后人借用前人的成果。一个模块就是几十、几百条语句,几十个模块搭建一个系统。“把复杂的系统分解成简单的模块,这是应对复杂问题的基本策略。”那才是创新。几十万条程序一条一条分析?多人合作是按模块划分任务的。

C语言是尽量用函数库中的模块做“积木”盖房子的。高手都是拎着一麻袋各式各样的“积木”盖房子。不是什么事都一上来就自己从水泥板构件设计浇注做起。没见过哪位高手那么干的。所谓“高人”自己干了十几年独立创新编程工作,结果连一个开关扫描模块都拿不出来?!真正的高手都是积攒模块的,自己写过的程序模块从来不丢,下次用到都是现成的。所以,连自己都没做过,就误导菜鸟。


使用特权

评论回复
25
highgear| | 2009-5-11 21:26 | 只看该作者

wjx1952,冷漠又在造谣说谎

“如何判断一台机器的字节顺序是大端或小端?,这是highgear前几天没写出来的题目". 
嘿嘿,真是本性难改啊,只有你们这些喜欢造谣杜撰的蠢货才会说出这样的话,你不造谣不说谎你难道就会死么?

** 8bit机器本身不存在大端小端,由编译器自己决定int, long大端小端顺序。
** 可以存储8bit外部数据的16bit, 32bit 机器由cpu结构决定,编译器为效率起见,一定会顺从cpu结构。一些不使用8bit数据总线的16bitcpu, 不使用16bit数据总线的32bitcpu, 编译器往往不支持8bit, char 为16bit 或32bit.
** 特殊语言如java, 为通用起见,使用一致的大端小端顺序,不依赖 cpu存储结构。

这种问题才需要仔细看书,因为这是cpu, compiler 规定好的“死“东西。这个所谓“老头子“刘“前辈“,显然没有认真看书。

顶24楼的inter_zhou,程序写得很好,同时劝你不必把时间浪费到wjx1952,冷漠,刘前辈等这伙网络垃圾身上,以免他们唧唧歪歪的造谣诬蔑中伤你。

楼上的刘前辈,还是多读些很多真正的前辈告诉你们要读的“如何做人“的书吧。 





使用特权

评论回复
26
highgear| | 2009-5-11 21:59 | 只看该作者

技术这个东西,是滚打摔爬磨练出来的

“学C至少一年了吧?2条都写不好“,这说明你做的太少了,国企待得太舒服了,要下岗了才想起学技术,晚了点吧,技术不是像你想象中的看两天书就会的,除非你是个绝顶的天才。

“C语言是尽量用函数库中的模块做“积木”盖房子的。高手都是拎着一麻袋各式各样的“积木”盖房子。不是什么事都一上来就自己从水泥板构件设计浇注做起。没见过哪位高手那么干的。所谓“高人”自己干了十几年独立创新编程工作,结果连一个开关扫描模块都拿不出来?!真正的高手都是积攒模块的,自己写过的程序模块从来不丢,下次用到都是现成的。所以,连自己都没做过,就误导菜鸟。“ 
哈哈,这位主对c的理解是在是...., 一看就知道是没做过实事的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则