松翰单片机之跑马灯程序解析

[复制链接]
qiangxxyh | 2010-11-8 11:03:54 | 显示全部楼层
初学者,十分感谢
tlk_777 | 2010-11-8 21:24:40 | 显示全部楼层
谢谢我也下一份
MCU | 2010-11-13 17:40:01 | 显示全部楼层
的确幸苦呀 !
qinfenzhu | 2010-11-17 08:59:31 | 显示全部楼层
初学者,十分感谢
施志义 | 2010-11-17 13:32:14 | 显示全部楼层
好东西,下载下来学习看,,,以后希望有多些这些学习程序
wuzhongya1 | 2010-11-27 20:42:38 | 显示全部楼层
学习一下,谢谢楼主!
xiaoshiquan | 2010-12-6 15:38:14 | 显示全部楼层
学习学习,最近正在搞松翰的单片机。
sust_wanghai | 2010-12-6 20:05:46 | 显示全部楼层
LZ辛苦了~~~收了
hfbjjs | 2010-12-7 01:42:52 | 显示全部楼层
提一点点意见:
给初学者写示例,尽量注意芯片资源,2501B 的 RAM 只有 48 字节,不能赋值 7FH ,应该 2FH ,否则会清零到没有定义的区域.
同时,许多指令的使用尽量合理一些, CLR   Y  一条指令可以解决的,就不要麻烦使用 MOV   A,#00H 再接着 MOV     Y,A ,例如:
CLRRAM:
        CLR         Y
        MOV        A,#2FH
        B0MOV        Z,A;SET @YZ ADDRESS FROM 2FH
@@:
        CLR         @YZ;CLEAR @YZ CONTENT
        DECMS        Z   ;Z = Z - 1 ,SKIP NEXT IF Z=0
        JMP         @B                       ;这是往回跳到最近一个 @@ 的地址标号.
        CLR         @YZ;CLEAR ADDRESS $00
        RET
9行替换13行,是不是简单了?-----------仅供参考!
hfbjjs | 2010-12-10 21:05:29 | 显示全部楼层
提一点建议或者意见:
作为帮助初学者的出发点是非常好的,感谢!
但是,作为示例或者提示性的例子,最好能够科学一些.
这里使用 2501B 做例子芯片,跑马灯的频率选择,应该比较迎合人们观看的是间隔 0.5S 时间,为什么?日常使用的时钟冒号就是 0.5S 啊!一闪一闪,从小到大,许多看数字钟的人都习惯了!(注意:这里仅仅对例子而言,实际项目里,可能要快一些!也可能要慢一些!)
再就是:最大限度分析选用芯片的资源,就说 2501B ,有一个实时时钟,使用外部 32768 低频晶体,有一个 RTC 选项,自动生成每隔0.5S中断一次(不用中断也行,可以轮询这个中断标志).有了这个 0.5S 时基,做什么流水灯都很方便,压根无需你去设置定时器的初始化值.
你在示例里,进入中断子程序,也是不够精练的, 2501B 支持很简单的进入与退出中断处理程序,有专门的指令,例如:
INT_SERVICE:;//进入中断子程序
                       PUSH ; 保存 ACC 和PFLAG................一条指令就搞定
                        ;…中断里你的其它指令
             ;…中断里你的其它指令
              POP ; 恢复ACC 和 PFLAG................一条指令就搞定
                        RETI ; 退出中断
是不是更加干净利落啊?
顺便提示: 2051B 是双时钟系统的单片机,当选择 0.5S 实时时钟产生后,仍然可以选择内部 16MHZ 高速时钟运行程序.外部的 32768HZ 晶体仅仅为了实时时钟.编译选项就选择:IHRC_RTC 内部高速16MHz RC,0.5sec RTC.
----------------仅供大家参考.欢迎指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则