[PIC®/AVR®/dsPIC®产品] 天梯 之 从零开始玩转PIC

[复制链接]
43493|177
machunshui 发表于 2008-1-5 23:11 | 显示全部楼层

这还真没想到

&quot;S_LINE&nbsp;=&nbsp;(TIME_S&nbsp;&lt&lt&nbsp;1)&nbsp;+&nbsp;TIME_S<br /><br />picc太“智能”了,自作聪明地把公式转化为:S_LINE&nbsp;=&nbsp;TIME_S&nbsp;*&nbsp;3,了&quot;<br /><br />这还真没想到,<br />真是聪明过头了.<br /><br />可能写成两条语句用个临时变量,是不是不会这样?<br />
xieyuanbin 发表于 2008-1-6 09:34 | 显示全部楼层

置顶一段时间

希望大家继续讨论
 楼主| 程序匠人 发表于 2008-1-6 12:08 | 显示全部楼层

呵呵,荣幸!

自己加酷置顶,老是被hotpower评价为“腐败”。现在终于在客场作战,得到了加酷置顶的荣幸!意义果然不一样。<br /><br />另外,答复machunshui,解决办法就是把语句拆开来写。倒也不需要临时变量。如下:<br /><br />380:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写法4(这种写法,编译结果居然比前两种方法更精简?)<br />381:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_LINE&nbsp;=&nbsp;TIME_S&nbsp;;<br />&nbsp;&nbsp;07B3&nbsp;&nbsp;&nbsp;&nbsp;0833&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVF&nbsp;0x33,&nbsp;W<br />&nbsp;&nbsp;07B4&nbsp;&nbsp;&nbsp;&nbsp;00AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;0x2c<br />382:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_LINE&nbsp;=&nbsp;S_LINE&nbsp;+&nbsp;TIME_S&nbsp;;<br />&nbsp;&nbsp;07B5&nbsp;&nbsp;&nbsp;&nbsp;0833&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVF&nbsp;0x33,&nbsp;W<br />&nbsp;&nbsp;07B6&nbsp;&nbsp;&nbsp;&nbsp;07AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;0x2c,&nbsp;F<br />383:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_LINE&nbsp;=&nbsp;S_LINE&nbsp;+&nbsp;TIME_S&nbsp;;<br />&nbsp;&nbsp;07B7&nbsp;&nbsp;&nbsp;&nbsp;07AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;0x2c,&nbsp;F<br />384:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />385:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写法5(没想到吧?这样写居然最精简!)<br />386:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_LINE&nbsp;=&nbsp;2&nbsp;*&nbsp;TIME_S&nbsp;&nbsp;;<br />&nbsp;&nbsp;07B8&nbsp;&nbsp;&nbsp;&nbsp;0733&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;0x33,&nbsp;W<br />&nbsp;&nbsp;07B9&nbsp;&nbsp;&nbsp;&nbsp;00AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;0x2c<br />387:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_LINE&nbsp;=&nbsp;S_LINE&nbsp;+&nbsp;TIME_S&nbsp;;<br />&nbsp;&nbsp;07BA&nbsp;&nbsp;&nbsp;&nbsp;0833&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVF&nbsp;0x33,&nbsp;W<br />&nbsp;&nbsp;07BB&nbsp;&nbsp;&nbsp;&nbsp;07AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;0x2c,&nbsp;F<br />
 楼主| 程序匠人 发表于 2008-1-6 12:12 | 显示全部楼层

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

<br />昨天发现的,有一个指针部分的LED灯不亮的故障,原因找到了。<br />原来,<font color=#FF0040>PIC16F876的RA4口有点与众不同,当其输出1时,为漏极开路模式</font>,无法提供5V驱动LED。(呵呵,匠人第一次用PIC16F876,应该可以被原谅吧~~~)。<br />刚才把所有的LED灯改为负极控制,程序升级到V02版本。效果如下:<br /><img src="http://blog.21ic.com/uploadfile-/2008-1/5377.531110021.jpg"><br />&nbsp;<br /><img src="http://blog.21ic.com/uploadfile-/2008-1/5406.656823693.jpg"><br />&nbsp;<br /><img src="http://blog.21ic.com/uploadfile-/2008-1/5429.843206701.jpg">
hotpower 发表于 2008-1-6 12:26 | 显示全部楼层

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

当时相邻脚刚好没用,它可以输出高电平~~~.<br /><br />哈哈~~~滴个锡点解决问题~~
hotpower 发表于 2008-1-6 12:37 | 显示全部楼层

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

虽然PIC的拉电流也不小,但总比灌电流小~~~
 楼主| 程序匠人 发表于 2008-1-6 15:51 | 显示全部楼层

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

负极驱动,LED的电源和MCU的电源可以通过二极管隔离,今后做通讯时,通讯线和VDD复用,可以避免MCU失电
yewuyi 发表于 2008-1-6 19:07 | 显示全部楼层

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

  
boy123 发表于 2008-1-6 19:40 | 显示全部楼层

晕,,都是高人呀..

  
 楼主| 程序匠人 发表于 2008-1-6 21:54 | 显示全部楼层

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

本来是要做取**作,应该用“~”符号的,结果不小心打成了“-”符号,变成了取补。<br /><br />要说这取反,和取补,结果只差一个数值,但失之毫厘,差之千里。再加上两个小符号,长得那么相近,害得匠人好一通检查,最后总算究出这个小尾巴来了。呵呵!
xieyuanbin 发表于 2008-1-7 07:34 | 显示全部楼层

取反编译出来怎样?

汇编中,取反只要异或一次,但在C中,好像取反运算编译出来惨不忍睹
 楼主| 程序匠人 发表于 2008-1-7 08:42 | 显示全部楼层

to xieyuanbin

picc&nbsp;编译结果,也是用异或方法处理取反
 楼主| 程序匠人 发表于 2008-1-7 23:26 | 显示全部楼层

100楼都没有人抢?

  
hotpower 发表于 2008-1-7 23:28 | 显示全部楼层
hotpower 发表于 2008-1-7 23:28 | 显示全部楼层
zhangqibo 发表于 2008-1-7 23:29 | 显示全部楼层

坐上98楼

连续发几个占掉100楼,呵呵,有点不好。
hotpower 发表于 2008-1-7 23:29 | 显示全部楼层

100

  
hotpower 发表于 2008-1-7 23:30 | 显示全部楼层

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

  
zhangqibo 发表于 2008-1-7 23:30 | 显示全部楼层

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

  
sz_kd 发表于 2008-1-7 23:31 | 显示全部楼层

再加1层

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

本版积分规则

快速回复 在线客服 返回列表 返回顶部