找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机汇编程序求助(先按下K1后按下K2显示器就加一,反过来就减一)

[复制链接]
跳转到指定楼层
楼主
ID:265018 发表于 2017-12-28 09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要实现的目的是先按下K1后按下K2显示器就加一,反过来就减一。可是调了一个晚上感觉开关这里还是不对求大神看一下!!
ORG   0000H                        ;程序储存器规划
    LJMP  MAIN                ;跳转到主程序
    ORG   0003H     ;T0中断  
    LJMP  KEY1                ;转向外部中断0中断服务程序
    ORG   0013H     ;T1中断   
    LJMP  KEY2                ;转向外部中断0中断服务程序
        ORG   0100H                ;主程序

MAIN:
    MOV   SP, #5FH         ;堆栈重新设置到从60H开始的片内RAM区
    SETB  EA         ;总中断开关打开  
    SETB  EX0        ;INT0中断打开
    SETB  EX1                 ;INT1中断打开
    SETB  IT0        ;T0口下降沿触发
    SETB  IT1        ;T1口下降沿触发  
;-----------------------------------------
        MOV   R1, #00   ;R0初始值设为00
MAIN1:
    CALL  JISHU                ;调用JISHU计数部分
    CALL  PRINT                ;调用PRINT显示部分        
        JMP   MAIN1
;-----------------------------------------
KEY1:
        LCALL DELAY
        JNB   P3.3, JIAYI
        JNB   P3.2,  TX1

        RETI


JIAYI:
        INC   R1
        CJNE  R1, #101, TX1          ;若R1小于101则跳转到TS1,大于则继续
    MOV   R1, #100
TX1:RETI
;-----------------------------------------
KEY2:        
        JNB   P3.2,JIANYI
        JNB   P3.3, TS1
        LCALL DELAY
        RETI
JIANYI:
        DEC   R1
           CJNE  R1, #255, TS1
    MOV   R1, #0
TS1:RETI
;-----------------------------------------
JISHU:
    MOV   DPTR, #TAB   
    MOV   R0, #33H
    MOV   A, R1
    MOV   B, #100
    DIV   AB                    ;十位个位分离
    MOVC  A, @A + DPTR
    MOV   @R0, A
    INC   R0
    MOV   A, B           ;B为余数
    MOV   B, #10
    DIV   AB
    MOVC  A, @A + DPTR
    MOV   @R0, A
    INC   R0
    MOV   A, B           ;B为余数表示个位数
    MOVC  A, @A + DPTR
    MOV   @R0, A
    RET
;-----------------------------------------
TAB: DB  0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
;-----------------------------------------
PRINT:   
    MOV   R0, #33H
    MOV   R5, #04H
    MOV   R4, #3
LOOP4:
    MOV   P0, @R0
    MOV   P2, R5
    MOV   A, R5
    RR    A
    MOV   R5, A
    INC   R0
    DJNZ  R7, $
    DJNZ  R7, $
    ANL   P2, #0
    DJNZ  R4, LOOP4
    RET
;-----------------------------------------
DELAY:MOV 33H,#10
D1:   MOV 31H,#200
D2:   MOV 30H,#250
      DJNZ 30H,$
      DJNZ 32H,D2
      DJNZ 33H,D1
      RET
END

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

使用道具 举报

沙发
ID:123289 发表于 2017-12-28 22:14 | 只看该作者
程序构思混乱。
将你的构思画个框图,再研究一下。
回复

使用道具 举报

板凳
ID:262845 发表于 2018-1-2 14:03 | 只看该作者
按下K1后程序保持,按下K2,变量加1,显示器数值加一。反之,则反。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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