找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1218|回复: 2
打印 上一主题 下一主题
收起左侧

单片机电子表原理图和代码不是很匹配?求帮助

[复制链接]
跳转到指定楼层
楼主
200黑币
本帖最后由 jjh170102 于 2020-6-20 22:15 编辑

做一个简易的电子表,按键是能够控制启动暂停和分钟的加减,但是原理图和代码不是很匹配,按键控制的是时钟的加减,显示也左移了一格,求大神帮忙修改一下程序,求求了.附上代码:
                ORG  0000H
                LJMP  START
                ORG  000BH
                LJMP  INIT0
START:  MOV  R0,#70H;主程序开始
        MOV  R7,#0CH
INIT:   MOV  @R0,#00H
        INC  R0
                DJNZ  R7,INIT
                MOV  72H,#10;对连字符进行装值
                MOV  75H,#10
                MOV  TMOD,#01H;选择定时器/计数器T0的方式1
                MOV  TL0,#0B0H;对地位赋初值
                MOV  TH0,#03CH;高位赋初值
                SETB  EA
                SETB  ET0
                SETB  TR0
START1: LCALL  SCAN
        LCALL  KEYSCAN
        SJMP  START1
DL1MS:  MOV  R6,#14H;延时1子程序
DL1:    MOV   R7,#19H
DL2:    DJNZ  R7,DL2
                DJNZ  R6,DL1
                RET
DL20MS: ACALL  SCAN;延时20ms子程序
        ACALL  SCAN
        ACALL  SCAN
        RET;数码管显示程序开始
SCAN:   MOV  A,78H
        MOV  B,#0AH
        DIV  AB;时间秒的十位送给A,时间秒的个位送给B
        MOV  71H,A;时间秒要显示的十位
        MOV  70H,B;时间秒要显示的个位
        MOV  A,79H
        MOV  B,#0AH
        DIV  AB;;时间分的十位送给A,时间分的个位送给B
        MOV  74H,A;时间分要显示的十位送地址
        MOV  73H,B;时间分要显示的个位送地址
        MOV  A,7AH
        MOV  B,#0AH
        DIV  AB;时间时的十位送给A,时间时的个位送给B
        MOV  77H,A;;时间时显示的十位送地址
        MOV  76H,B;时间时要显示的个位送地址
        MOV  R1,#70H
        MOV  R5,#01H
        MOV  R3,#08H
SCAN1:  MOV  A,R5;数码管的显示程序
        MOV  P2,A
        MOV  A,@R1
        MOV  DPTR,#TAB
        MOVC  A,@A+DPTR;对字段表取值表示
        MOV  P0,A
        MOV  A,R5
        LCALL  DL1MS
        INC  R1
        MOV  A,R5
                RL  A
                MOV  R5,A
                DJNZ  R3,SCAN1
                MOV  P2,#00H
                MOV  P0,#0FFH
                RET;”0-9”和“-”的字段表
TAB:    DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H;定时/计数器T0中断程序
INIT0:  PUSH  ACC
                PUSH  PSW
                CLR  ET0
                CLR  TR0
                MOV  TL0,#0B0H
                MOV  TH0,#03CH
                SETB  TR0
                INC  7BH
                MOV  A,7BH
                CJNE  A,#19H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时
                MOV  7BH,#00
                INC  78H
                MOV  A,78H
                CJNE  A,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行
                MOV  78H,#00
                INC  79H
                MOV A,79H
                CJNE  A,#3CH,OUTT0
                MOV  79H,#00
                INC  7AH
                MOV  A,7AH
                CJNE A,#18H,OUTT0;60分钟的延时是否计到24次,没有就继续执行程序
                MOV  7AH,#00
OUTT0:  SETB ET0;启动定时器T0
                POP  PSW
                POP  ACC
                RETI;按键处理程序
KEYSCAN:CLR  EA
                JNB  P1.0,KEYSCAN0;P1.0有按键按下则跳转到子程序
                JNB  P1.1,KEYSCAN1;P1.1有按键按下则跳转到子程序
                JNB  P1.2,KEYSCAN2;P1.2有按键按下则跳转到子程序
KEYOUT: SETB  EA
                RET
KEYSCAN0:LCALL  DL20MS;20ms的延时消抖
                JB  P1.0,KEYOUT
WAIT0:  JNB  P1.0,WAIT0;判断按键是否松手,松手就往下执行程序
                INC  7CH
                MOV  A,7CH
                CLR  ET0
                CLR  TR0
                CJNE  A,#03H,KEYOUT;按下第一次和第二次对时、分选定
                MOV  7CH,#00;按下第三次时就启动计时
                SETB  ET0
                SETB  TR0
                SJMP  KEYOUT
KEYSCAN1:LCALL  DL20MS;按键加一的程序
                JB  P1.1,KEYOUT
WAIT1:  JNB  P1.1,WAIT1
                MOV  A,7CH
                CJNE  A,#02H,KSCAN11;如果功能键按下则对时加一调整
                INC  79H
                CJNE  A,#3CH,KEYOUT;如果加到60则清零?
                MOV  79H,#00
                SJMP  KEYOUT
KSCAN11:INC  7AH;如果功能键是按下第二次则对分进行加一调整
                MOV  A,7AH
                CJNE  A,#18H,KEYOUT
                MOV  7AH,#00
                SJMP  KEYOUT
KEYSCAN2:LCALL  DL20MS;延时消抖程序
                JB  P1.2,KEYOUT
WAIT2:  JNB  P1.2,WAIT2;判断是否放开按键
                MOV  A,7CH
                CJNE  A,#02H,KSCAN21;如果功能键是按下第一次对时进行减一
                DEC  79H
                MOV  A,79H
                CJNE  A,#0FFH,KEYOUT
                MOV  79H,#3BH
                SJMP  KEYOUT
KSCAN21:DEC  7AH;如果功能键是按下第二次则对分进行减一
                CJNE  A,#0FFH,KEYOUT
                MOV  7AH,#17H
                SJMP  KEYOUT
                END
                下面是原理图截图



]RR_$LKX@EAA]H`()[O`)1L.png (72.17 KB, 下载次数: 40)

]RR_$LKX@EAA]H`()[O`)1L.png

Keil.rar

22.36 KB, 下载次数: 6

代码和仿真图

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:779990 发表于 2020-6-20 18:49 | 只看该作者
求助各位大佬帮忙看一下
回复

使用道具 举报

板凳
ID:779990 发表于 2020-6-20 21:53 | 只看该作者
麻烦哪位大佬帮忙看一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表