打印

新手问个程序问题

[复制链接]
1861|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lylkr|  楼主 | 2008-1-18 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sd, ov, go, TE, se
***********************************************************************

      #include    pl16f84a.inc

LSD          equ        10

MSD         equ         11

BinBCD     clrf          MSD

                 movwf      LSD

gtenth      movlw       10

                subwf        LSD,W

                BTFSS     STATUS,C     ;ARRY

                goto         over

                movwf       LSD

                incf            MSD,1

                goto          gtenth

over         retlw          0

************************************************************************************************

main         movlw       63                     ; W reg=63 Hex

                 call           BinBCD             ; after conversion, MSD=9 & LSD=9

self           goto         self

                 org          1FF

                 goto         main

                 END


1、equ赋值后不是不能被重新赋值吗?为什么在程序中还能用clrf、movwf、incf 这些语句?

2、self   goto    self    没有判断条件不成死循环了吗?

3、org 应用到程序中具体有什么作用?

4、after conversion, MSD=9 & LSD=9。这个如果说的是运算结果的话(我英语很菜,翻词典理解的)

      我得的结果是 MSD=6   LSD=3,麻烦详细说明一下

谢谢

我刚刚开始学,板砖、西红柿尽管来吧,我承受的住^_^
沙发
lifengtao| | 2008-1-21 12:01 | 只看该作者

你不要研究这个程序,换个研究吧!太可怜了!

使用特权

评论回复
板凳
pjss| | 2008-1-21 14:29 | 只看该作者

宏汇编

使用特权

评论回复
地板
chen3bing| | 2008-1-22 17:49 | 只看该作者

LS高手

使用特权

评论回复
5
谈的元| | 2008-1-22 20:34 | 只看该作者

clrf          MSD;MSD是11。MSD可能是常数,也可能是寄存器的名,看使用背景
等价于CLRF    11;(11是寄存器)

使用特权

评论回复
6
谈的元| | 2008-1-22 20:44 | 只看该作者

再答

self   goto    self    没有判断条件不成死循环了吗?
是的,是死循环,但中断可以跳出。这里只是演示程序,故搞了个死循环
;;;;;;;;;;;;;
3、org 应用到程序中具体有什么作用?是绝对定位用的。告诉编译器ORG下的程序放到哪里?
;;;;;;;;;;;;;;;;;;;;;;;;
4.
63是0X63,(16进制),为10进制的99.

将63前加个点就代表10进制。(.63)
movlw       63
改为:movlw       .63;;(英文输入法下的点)
就是你说的结果

使用特权

评论回复
7
谈的元| | 2008-1-22 20:47 | 只看该作者

写法不够好

要用16进制就加个0X63;

欢迎加入单片机学习群:24815378

使用特权

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

本版积分规则

15

主题

20

帖子

0

粉丝