5850|3

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

一个16位二进制计数器,循环计数。以十进制方式显示出来。 [复制链接]

请查看下面有没有问题,有问题请指出来,谢谢...


;31H、30H单元构成16位二进制计数器
;程序将16位二进制计数器以十进制方式显示
;显示缓冲定义:
ten_thousand         EQU 36H
thousand            EQU 35H
hundred             EQU 34H
ten                        EQU 33H
ones                    EQU 32H
;显示控制
;P1.0:个位,P1.1:十位,P1.2:百位,P1.3:千位,P1.4:万位。
;显示数据口:P2

        ORG 0000H
        AJMP main

        ORG 0100H
main:        MOV P1,#0
        LCALL delay
        MOV 30H,#0        ;清计数器
        MOV 31H,#0
loop:        MOV R3,30H        ;取计数器内容
        MOV R2,31H
        ACALL bin_bcd2       
        LCALL save_show_buffer
        LCALL show        ;显示
        ACALL delay
        INC 30H                ;计数器+1
        MOV A,30H
        JNZ loop2
        INC 31H
loop2:        AJMP loop        ;循环

;程序入口:(R2R3)=十六位二进制
;程序出口:(R4R5R6)=BCD
bin_bcd2:
        CLR  A
        MOV  R4,A
        MOV  R5,A
        MOV  R6,A        ;0→R4R5R6
        MOV  R7,#16        ;循环次数=16
loop1:        CLR  C
        MOV  A,R3
        RLC  A
        MOV  R3,A
        MOV  A,R2
        RLC  A
        MOV  R2,A        ;bi →Cy
    RET

;        MOV  A,R6
;        ADDC  A,R6        ;×2+bi
;        DA  A
;        MOV  R6,A
;        MOV  A,R5
;        ADDC  A,R5        ;×2+进位
;        DA  A
;        MOV  R5,A
;        MOV  A,R4
;        ADDC  A,R4        ;×2+进位
;        DA  A
;        MOV  R4,A
;        DJNZ  R7,loop1
;        RET
disp_code:
        ADD  A,#1            ;RET指令的字节数为1
        MOVC  A,@A+PC
        RET
        DB 0AH,6FH,8CH,2CH,69H,38H,18H,6EH,08H,28H
        RET
save_show_buffer:
;将十进制数放入显示缓冲
        MOV ten_thousand,R4       
        MOV A,R5
        SWAP A
        ANL A,#0FH
        MOV thousand,A
        MOV A,R5
        ANL A,#0FH
        MOV hundred,A
        MOV A,R6
        SWAP A
        ANL A,#0FH
        MOV ten,A
        MOV A,R6
        ANL A,#0FH
        MOV ones,A       
        RET

show:
;显示个位
;----------------------
        MOV A, ones
        ACALL  disp_code
        MOV P2,A
        SETB P1.0
        CLR P1.0
;显示十位
;----------------------
        MOV A, ten
        ACALL  disp_code
        MOV P2,A
        SETB P1.1
        CLR P1.1
;显示百位
;----------------------
        MOV A, hundred
        ACALL  disp_code
        MOV P2,A
        SETB P1.2
        CLR P1.2
;显示千位
;----------------------
        MOV A, thousand
        ACALL  disp_code
        MOV P2,A
        SETB P1.3
        CLR P1.3
;显示万位
;----------------------
        MOV A, ten_thousand
        ACALL  disp_code
        MOV P2,A
        SETB P1.4
        CLR P1.4
        RET

delay:
    del:mov R7,#200
   del1:mov R6,#123
            NOP
    del2:DJNZ R6,del2
             DJNZ R7,del1
               RET
END
此帖出自51单片机论坛

最新回复

表示直接学的C,汇编完全打酱油,看得懂,特别吃力  详情 回复 发表于 2011-7-23 16:00
点赞 关注
 

回复
举报

2130

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
去查BCD码转换
此帖出自51单片机论坛
 
 
 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
看汇编,好吃力....
此帖出自51单片机论坛
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

4
 
表示直接学的C,汇编完全打酱油,看得懂,特别吃力
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表