最新日志

发表于:2008-8-3 23:14:13
标签:匠人手记  旋转时钟  

3

《匠人手记》网络版《从零开始玩转PIC 之 旋转时钟》

《匠人手记》网络版《从零开始玩转PIC 之 旋转时钟》

点击进入或下载PDF文件: 《匠人手记》网络版《从零开始玩转PIC 之 旋转时钟》

或者:http://www.hwcpu.com/down/cxjr_clock.pdf

内容介绍: 一共有100来页,内含旋转时钟的源程序、原理图和设计思路。

后记:

终于阶段性地完成了这篇手记。

作为一个业余练手的学习项目,这个旋转时钟的开发过程无疑是太长了。当然,既然是业余做了玩,优先级自然被排在了最低,经常被别的优先级更高的事件打断。这也就是这个项目差点变成烂尾楼工程的原因。如果做正式项目也是这个蜗牛效率的话,估计匠人就要被老板炒鱿鱼了。

在本项目进行过程中,匠人也曾经在网络上发布了一些设计思路和图片。每次都是零打碎敲不成体统,引得网友们如饥似渴。而匠人一直承诺的设计文档共享,却迟至今日才被兑现。在此只能说一声抱歉了。

这篇手记其实还不够完整,关于基板和遥控器部分的程序,匠人没有给出,因为那些相对比较简单。匠人觉得那是可以忽略的细微末节。

另外,上位机程序,也只是做了一些简单的规划,还没有付诸动作,所以也无法提供。匠人希望有时间能把这部分工作完成。

DIY是一项锻炼动手和动脑能力的有益的活动,匠人希望看到有志趣相投的网友加入这个DIY的过程中来。一起探讨相互的经验和教训。

这篇手记,也是匠人继已经出版发行的《匠人手记:一个单片机工作者的实践与思考》之后,首篇新的《匠人手记》网络版。希望得到各位网友和书友一如继往的支持。如果您对本手记有任何建议和意见,或者发现了BUG,请发邮件到 zj_artisan#hotmail.com  (请用@ 代替 #)。

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(4) | 阅读(179)
发表于:2008-8-2 23:46:53
标签:匠人手记  书友会  

0

俺不追潮流,俺让潮流来追俺。

俺不追潮流,俺让潮流来追俺。

记得当年匠人在21ic开博时,率先挖掘了博客系统的“团队”功能,并把这个功能发挥到了极致。当时匠人号召了一批兴趣相投的网友一起来建设博客,取得了成功。

随着《匠人的百宝箱》的崛起,这种团队博客的模式也被部分博客主效法。匠人由此引领了一回潮流。

当然,随着技术的进步,现在许多博客系统已经有了“群组”或“小组”功能,比原来的“团队”功能更有效。

这次匠人在EDN开设《匠人手记》书友会小组,一不小心又引领了一回潮流。书友会小组彻底打破了读者和作者之间的壁垒。让二者之间的互动进入一个全新的时代。

而随着《匠人手记》的热销,这种书友会小组的宣传效应也被突现出来。书友会的运作模式,作为一种成功的经验案例被其他作者们借鉴,甚至EDN网站也从中尝到了“甜头”予以大力推行。

相信在未来,还会有更多的作者,采用这种方法来与读者建立沟通平台。而在这滚滚洪流中,我们《匠人手记》书友会,将具有里程碑式的意义。

俺不追潮流,俺让潮流来追俺。螃蟹总是要被人吃的,竟然如此,俺就先下嘴为强了。哈哈!

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(145)
发表于:2008-7-29 10:38:21
标签:旋转时钟  

0

最近正在撰写《旋转时钟》开发手记,稍后发布,敬请关注

最近正在撰写《旋转时钟》开发手记,稍后发布,敬请关注

匠人准备把前一阶段DIY的旋转时钟的开发细节(包括源代码和原理图)全部整理成手记发布。

预计有一百多页。由于工作量比较大,所以需要一点时间。请再耐心等待。。。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(113)
发表于:2008-7-7 14:29:38
标签:匠人手记  勘误  

0

《匠人手记》第一印次查错者获奖名单

感谢各位网友的大力支持,帮助我们查错。目前获奖者名单已经统计出来了。(见下表)

我们评选的原则,是根据读者提出的错误等级评定的。发现的错误越严重、越多,则优先获得奖励。

请获奖者发送邮件到zj_artisan#126.com (#号用@代替)。提供您的收件地址、姓名、电话、邮编。匠人会统一给获奖者寄送新印次的《匠人手记》一本。

获奖者 来自 获奖原因
acxc44
(406125840)
1群 发现重要错误
dragonoon
(281421549)
1群 发现重要错误
mxinfa
(84773316)
21icbbs
(3群)
发现重要错误;发现多处错误
Be Wanted
(457556330)
3群 积极参与讨论查证;发现多处错误
54et EDN小组 发现重要错误
channlv EDN小组 发现重要错误
chy909 EDN小组 发现重要错误
cyber211 EDN小组 发现重要错误
比尔
(417152902)
EDN小组
(2群)
发现重要错误
gosman 百宝箱 发现多处错误

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(244)
发表于:2008-7-1 17:20:45
标签:pic  picc  在线修改  

1

如何实现对PIC芯片ROM中的程序地址的精确定位

 如何实现对PIC芯片ROM中的程序地址的精确定位。

一个悬而未决的问题,历时4个月终于获解。大块人心。

事情要从4个月前的一场讨论说起。详细情况见:天梯 之 从零开始玩PIC——11.关于FLASH操作的讨论

问题的实质,就是如何实现对ROM中的程序地址的精确定位。因为只有精确定位了,才能通过对FLASH的写操作来修改表格中的数据。(甚至可以修改程序!)。

当时,yewuyi 和martin 参与了讨论。并且,martin给出了一个不太理想的解决方案:在编译器命令行选项中进行设置,让编译器绝对避开某些区域。然后把这块区域开辟为表格。但是这个方案的缺点是,在烧芯片时,无法对表格内容初始化,必须通过串口下载,由单片机程序去修改。

这个问题被悬置了很久,今天,终于在网上看到一篇贴(参见:PICC中如何用指针访问const 数组?),匠人由此受到启发。找到了问题的解决方案,总结如下:

1、在定义const数组的同时,定义const指针:

const tU08 LED_TAB[]=
{
        //。。。。内容略。。。。
};
const tU08 *romPtr; //定义指向ROM 的指针

2、程序中可以对上面的指针变量赋值和实现取数操作:

tU08 i ;
romPtr = LED_TAB;
i=*romPtr++; //取指针指向的一个数,然后指针加1

3、同样的,我们也可以把romPtr 指针值传递给其他变量:

tU16 m;
romPtr = LED_TAB;
m=romPtr;

4、更神奇的是,我们可以通过这种方式,找到任意一个函数的起始PC地址:

romPtr = temp_cnt;   //说明:“temp_cnt”为一个函数。

5、找到了地址,再要修改该地址所在的FLASH,自然应该没有问题了吧。呵呵。





 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(300)
发表于:2008-6-28 0:41:09
标签:匠人手记  

1

《匠人手记》重印完成,新版照片

记得当《匠人手记》上市的时候,匠人还有点不安。首先是担心书卖不掉,其次是担心卖了之后被读者扔砖头。至于能否会有机会重印,何时重印,则只是心中一个隐隐约约的期望,根本不敢宣之于口。

欣慰的是,书上市后,总体上,收到的鲜花多于砖头。在当当网、互动网等网络书店以及其他一些渠道反馈回来的好评还不少呢。匠人陶醉啊~~~~

接下来的悬念就是等待重印的那天了。。。。

没有想到的是重印的这一天来得这么快。仅仅2个月,北航首印5000本的最后一批库存,就被当当网一个300本的大订单横扫掉了。

这让北航措手不及。库中无书,心中着慌啊!赶忙加印吧!于是北航赶忙修订封面、更正BUG、安排重印,把晓柏忙得四脚朝天不亦乐乎。

今天终于收到北航寄来的重印的新鲜样书了。照惯例,匠人又要秀一下了:

点击看大图

 

如果你以为和第一次印刷没有区别,那可就错了。这一次,除了把亚膜改成了亮膜+磨沙之外,还加了一个勒口哦:

点击看大图

 

再看看封底,也与第一次有了大大地不同。添加了读者热评,同时也在封底勒口处,为整个《博客藏经阁》系列作了一回广告(可靠消息:在这个系列里,将会有阿南、hotpower等大侠加盟):

点击看大图

 

再秀一张,看到匠人“浴漱临疯”的照片了吗?

点击看大图

 

内容方面,还是维持原样,不换汤也不换药,不过,原先发现的BUG都被修订了:

点击看大图

 

那天与晓柏聊天,聊着聊着,总结出了这本《匠人手记》的四个阶段:

1、第一个阶段,是“编辑推动阶段”。也就是晓柏天天连哄带骗地追着匠人写书的阶段。

2、第二个阶段,是“作者推动阶段”。也就是匠人拿鞭子抽着逼迫晓柏快点上市的阶段。

3、第三个阶段,是“书店推动阶段”。也就是网上网下各家书店或代理拼命推荐诱骗读者摸腰包的阶段。

4、第四个阶段,是“读者推动阶段”。也就是书友们通过不同渠道发表各种书评,并口口相传,倒过来逼着书店去进货的阶段。

总的来说,这4个阶段是一波更比一波势头好。通过这4个阶段,编辑、作者、书店、读者进入了良性、互动的循环。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(6) | 阅读(297)
发表于:2008-6-19 12:58:44
标签:匠人手记  

0

《匠人手记》首印告罄,重印版将有新亮点

《匠人手记》上市2个月来反响非常良好,火爆的销售业绩超出了许多人的预料。目前,首印的5000册已经告罄(指的是北航库存,市面上应该还有存货),而匠人原本以为首印要卖个年把半年。据编辑说,这是单片机非教材类销售最旺的一本了,呵呵。

现在,出版社正在加紧重印。估计不久就可以拿到新样书了。

第2次印刷,将吸取首印的经验教训,作如下改进:

1、根据《勘误表》中广大书友的反馈,修订错误。

2、封面由原来的亚膜,改为亮膜+磨沙,更耐脏更靓丽。并增加勒口,以更好地保护书的内页。 

3、封底添加读者热评。勒口处添加匠人“浴漱临疯”的“浴照”。

 

以下是重印封面缩视图:

点击看大图

以下是封底的读者点评:

点击看大图

这是勒口:

        

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(284)
发表于:2008-6-8 12:17:54
标签:旋转时钟  

12

旋转时钟,外壳底座制作完毕!增加汉字显示

旋转时钟,外壳底座制作完毕!增加汉字显示 [精华]

文章发表于:2008-06-08 12:02

25元一套有机玻璃底座,人家还不愿意做。好说歹说才同意:

点击看大图

人靠衣装,钟靠安装:

点击看大图

现在像一个座钟了吧,呵呵:

点击看大图

汉字显示,效果不错哦:

点击看大图

同时显示汉字和数字字母:

点击看大图

匠人的百宝箱 荣誉出品:

点击看大图

室温28度:

点击看大图

开机画面:

点击看大图

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(28) | 阅读(1276)
发表于:2008-6-3 15:40:25
标签:c  单片机    伪指令  

1

一个有趣的关于C宏的题目及巧解。(建议您不要看答案,先尝试自己做做看)

一个有趣的关于C宏的题目及巧解。(建议您不要看答案,先尝试自己做做看)

ayb_ice 发表于 2008-6-2 21:09 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: 给大家出道题吧

定义一个C宏,实现插入0~255个NOP指令。
几天后公布答案。
比如:_nopx(3);// 插入3个NOP

(建议您不要看答案,先尝试自己做做看。做完后向下翻看匠人的答案。)

……

……

……

……

……

……

……

……

……

(不要偷看答案!)

……

……

……

……

……

……

……

……

……

……

(你确定要看答案吗?)

……

……

……

……

……

……

……

……

(好吧,现在公布答案。)

程序匠人 发表于 2008-6-3 12:35 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

30楼: 任务完成,匠人的答案如下:

//宏定义方法:
#define __NOP1__ asm("nop");
#define __NOP2__ __NOP1__ __NOP1__
#define __NOP4__ __NOP2__ __NOP2__
#define __NOP8__ __NOP4__ __NOP4__
#define __NOP16__ __NOP8__ __NOP8__
#define __NOP32__ __NOP16__ __NOP16__
#define __NOP64__ __NOP32__ __NOP32__
#define __NOP128__ __NOP64__ __NOP64__


#define __NOPX__(a)             \
    if ((a)&(0x01))    {__NOP1__}                    \
    if ((a)&(0x02))    {__NOP2__}                    \
    if ((a)&(0x04))    {__NOP4__}                    \
    if ((a)&(0x08))    {__NOP8__}                    \
    if ((a)&(0x10))    {__NOP16__}                    \
    if ((a)&(0x20))    {__NOP32__}                    \
    if ((a)&(0x40))    {__NOP64__}                    \
    if ((a)&(0x80))    {__NOP128__}                    

//宏引用方法(举例):

    __NOPX__(13)

//编译结果:
138:                   __NOPX__(13)
  051D    0000     NOP
  051E    0000     NOP
  051F    0000     NOP
  0520    0000     NOP
  0521    0000     NOP
  0522    0000     NOP
  0523    0000     NOP
  0524    0000     NOP
  0525    0000     NOP
  0526    0000     NOP
  0527    0000     NOP
  0528    0000     NOP
  0529    0000     NOP

//说明,此宏在PICC中编译通过
//程序匠人 于 2008-06-03


* - 本贴最后修改时间:2008-6-3 12:36:07 修改者:程序匠人

签名:

               ____________________________
    ∽∽∽    /                            \
   ( 。 。)  (   看匠人手记,与匠人同行!   )
-oOOo-∪-oOOo-\ ___________________________/
              |/ 


《匠人手记》热卖中。。。。。。。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(272)
发表于:2008-5-27 23:42:08
标签:助学板  源程序  数码管  显示程序  多文件结构  

2

交差作业 之二——基于多文件系统数码管显示程序

匠人按:这是一个基于多文件系统的数码管显示程序。读者可以在这个框架的基础上,添加新的模块,从而构成一个更实用的人机界面系统。

该程序包含以下5个文件:

  • 交差作业 之二——多文件系统数码管显示5(display.h) 程序匠人 0/2 2008-05-27
  • 交差作业 之二——多文件系统数码管显示3(common.h) 程序匠人 0/2 2008-05-27
  • 交差作业 之二——多文件系统数码管显示4(display.c) 程序匠人 0/4 2008-05-27
  • 交差作业 之二——多文件系统数码管显示2(main.h) 程序匠人 0/3 2008-05-27
  • 交差作业 之二——多文件系统数码管显示1(main.c) 程序匠人 0/3 2008-05-27

    本程序在EDN_51助学板上调试通过。

  • 看帖要顶帖,这是作为一个网友的基本美德,切记!

    点击此处查看原文 >>

    系统分类: 单片机   |    用户分类:    |    来源: 原创

    评论(1) | 阅读(390)
    2345678910>>下一页总共 , 当前 /