打印
[PIC®/AVR®/dsPIC®产品]

天梯 之 从零开始玩转PIC

[复制链接]
楼主: 程序匠人
手机看帖
扫描二维码
随时随地手机跟帖
81
machunshui| | 2008-1-5 23:11 | 只看该作者 回帖奖励 |倒序浏览

这还真没想到

"S_LINE = (TIME_S << 1) + TIME_S

picc太“智能”了,自作聪明地把公式转化为:S_LINE = TIME_S * 3,了"

这还真没想到,
真是聪明过头了.

可能写成两条语句用个临时变量,是不是不会这样?

使用特权

评论回复
82
xieyuanbin| | 2008-1-6 09:34 | 只看该作者

置顶一段时间

希望大家继续讨论

使用特权

评论回复
83
程序匠人|  楼主 | 2008-1-6 12:08 | 只看该作者

呵呵,荣幸!

自己加酷置顶,老是被hotpower评价为“腐败”。现在终于在客场作战,得到了加酷置顶的荣幸!意义果然不一样。

另外,答复machunshui,解决办法就是把语句拆开来写。倒也不需要临时变量。如下:

380:                       //写法4(这种写法,编译结果居然比前两种方法更精简?)
381:                       S_LINE = TIME_S ;
  07B3    0833     MOVF 0x33, W
  07B4    00AC     MOVWF 0x2c
382:                       S_LINE = S_LINE + TIME_S ;
  07B5    0833     MOVF 0x33, W
  07B6    07AC     ADDWF 0x2c, F
383:                       S_LINE = S_LINE + TIME_S ;
  07B7    07AC     ADDWF 0x2c, F
384:               
385:                       //写法5(没想到吧?这样写居然最精简!)
386:                       S_LINE = 2 * TIME_S  ;
  07B8    0733     ADDWF 0x33, W
  07B9    00AC     MOVWF 0x2c
387:                       S_LINE = S_LINE + TIME_S ;
  07BA    0833     MOVF 0x33, W
  07BB    07AC     ADDWF 0x2c, F

使用特权

评论回复
84
程序匠人|  楼主 | 2008-1-6 12:12 | 只看该作者

昨天才发现,RA4口的与众不同之处


昨天发现的,有一个指针部分的LED灯不亮的故障,原因找到了。
原来,PIC16F876的RA4口有点与众不同,当其输出1时,为漏极开路模式,无法提供5V驱动LED。(呵呵,匠人第一次用PIC16F876,应该可以被原谅吧~~~)。
刚才把所有的LED灯改为负极控制,程序升级到V02版本。效果如下:

 

 

使用特权

评论回复
85
hotpower| | 2008-1-6 12:26 | 只看该作者

哈哈~~~俺早上过此当了~~~不过天无绝人之路,"邻居"帮忙解决~~

当时相邻脚刚好没用,它可以输出高电平~~~.

哈哈~~~滴个锡点解决问题~~

使用特权

评论回复
86
hotpower| | 2008-1-6 12:37 | 只看该作者

不过驱动LED还是用低驱动的好~~~

虽然PIC的拉电流也不小,但总比灌电流小~~~

使用特权

评论回复
87
程序匠人|  楼主 | 2008-1-6 15:51 | 只看该作者

匠人该为负极驱动还有一个更深的考虑

负极驱动,LED的电源和MCU的电源可以通过二极管隔离,今后做通讯时,通讯线和VDD复用,可以避免MCU失电

使用特权

评论回复
88
yewuyi| | 2008-1-6 19:07 | 只看该作者

没掉那个坑的人好象真不多……

使用特权

评论回复
89
boy123| | 2008-1-6 19:40 | 只看该作者

晕,,都是高人呀..

使用特权

评论回复
90
程序匠人|  楼主 | 2008-1-6 21:54 | 只看该作者

惭愧!今天被一个小小的“-”号又坑了一把……

本来是要做取**作,应该用“~”符号的,结果不小心打成了“-”符号,变成了取补。

要说这取反,和取补,结果只差一个数值,但失之毫厘,差之千里。再加上两个小符号,长得那么相近,害得匠人好一通检查,最后总算究出这个小尾巴来了。呵呵!

使用特权

评论回复
91
xieyuanbin| | 2008-1-7 07:34 | 只看该作者

取反编译出来怎样?

汇编中,取反只要异或一次,但在C中,好像取反运算编译出来惨不忍睹

使用特权

评论回复
92
程序匠人|  楼主 | 2008-1-7 08:42 | 只看该作者

to xieyuanbin

picc 编译结果,也是用异或方法处理取反

使用特权

评论回复
93
程序匠人|  楼主 | 2008-1-7 23:26 | 只看该作者

100楼都没有人抢?

使用特权

评论回复
94
hotpower| | 2008-1-7 23:28 | 只看该作者

.

使用特权

评论回复
95
hotpower| | 2008-1-7 23:28 | 只看该作者

..

使用特权

评论回复
96
zhangqibo| | 2008-1-7 23:29 | 只看该作者

坐上98楼

连续发几个占掉100楼,呵呵,有点不好。

使用特权

评论回复
97
hotpower| | 2008-1-7 23:29 | 只看该作者

100

使用特权

评论回复
98
hotpower| | 2008-1-7 23:30 | 只看该作者

倒塌了~~~给zhangqibo办好事了~~~今年不顺呀~~~

使用特权

评论回复
99
zhangqibo| | 2008-1-7 23:30 | 只看该作者

这回大叔可伤心了,我占98,可是居然占了100,哈哈~~

使用特权

评论回复
100
sz_kd| | 2008-1-7 23:31 | 只看该作者

再加1层

使用特权

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

本版积分规则