鱼C论坛

 找回密码
 立即注册
查看: 2318|回复: 8

[已解决]求助51单片机三键信息输入实验

[复制链接]
发表于 2020-4-6 23:22:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目要求:
本实验的内容是设计三键信息输入系统,实现多参数的输入控制。对多参数输入,可用一个按键进行参数的选择,每按一次,更改一次参数,循环选择;当按另一个按键时,对参数进行增量操作,达到一定值回自动回零;第三个按键每按一次执行减一操作
但是我一直实现不了增量操作到8的时候回零,程序中的MOV P2,#0FFH(在下面的代码里我用红色标出了)好像一直没有起作用,有没有人可以帮忙解答下修改了一天代码哭了。

org   0100h
        
Start:        MOV P2,#0FFH
        MOV P3, #0FEH
        MOV 20H,#0FFH  ;  置位 初始值为1
        
        MOV 30H, 00
        MOV 31H, #0FFH
        
        MOV 32H, 00
        MOV 33H, #0FFH
        
        MOV 34H, 00
        MOV 35H, #0FFH
        
        MOV 36H, 00
        MOV 37H, #0FFH
        
        MOV R0, #030H
               
        SETB OLDSEL
        SETB OLDINC
        SETB OLDDEC
        
        MOV R6, #0FEH
        MOV R7, #00H
   
   STARTKEY:    MOV P1,#0FFH    ;
            JB  NEWSEL, CSELKEY    ;
        JNB  OLDSEL, CSELKEY    ;
        
  
        
    PSELKEY:    CLR  OLDSEL        ;
        SETB C
        MOV  A, R6
        RLC  A   
        MOV  P3, A        ;
        MOV  R6, A
        INC  R7
        MOV  A, R7
        ANL  A, #04H
        JZ   CPVALUE        ;
        MOV  R6, #0FEH        ;
        MOV  P3, R6        ;
        MOV  R7, #00H        ;
        
   CPVALUE:        MOV A, R0
            ADD A, R7
        ADD A, R7
        
        INC A
        MOV R1, A
        MOV A, @R1
        MOV P2,A
         
    CSELKEY:    MOV  C, NEWSEL    ;
                MOV  OLDSEL,C        ;
        
    INCKEY:    JB  NEWINC, CINCKEY
        JNB OLDINC, CINCKEY
        
        MOV A, R0;R0 #030H
        ADD A, R7
        ADD A, R7
        
        MOV R1, A
        
        MOV A, @R1
        INC A
        ANL A, #08H
        JZ Q2
        JNZ Q1
    Q1: MOV P2,#0FFH

         JMP DECKEY
        
    Q2:    MOV A,@R1
               
        INC R1
        MOV A, @R1
        
        CLR C
        RLC A
        MOV P2,A
        MOV @R1,A
   
     
      CINCKEY:   
               
                MOV C, NEWINC
                MOV OLDINC, C
  
      
       DECKEY: JB NEWDEC,CDECKEY
           JNB OLDDEC,CDECKEY
           MOV A,R0
           ADD A,R7
           ADD A,R7
         
           MOV R1,A
           MOV A,@R1
        
           DEC A
           JZ CDECKEY
           MOV @R1,A
           
           INC R1
           MOV A,@R1
           
           SETB C
           RRC A
           MOV P2,A
           MOV @R1,A
        
     CDECKEY:
           MOV C,NEWDEC
           MOV OLDDEC,C
           
          JMP  STARTKEY    ;
          END


最佳答案
2020-4-17 12:19:56
眠空 发表于 2020-4-16 17:17
但是我一直没有办法做到八个灯全亮后,再按一次清零灯灭掉。明明我写了MOV P2,#0FFH。这几天没上论坛没看 ...

我QQ844854451 你加我
1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-7 09:27:11 | 显示全部楼层
没有看懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 11:15:16 | 显示全部楼层

就是我没办法做到增量操作到八之后自动清零,这段代码我自己改的也有点懵。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 18:40:10 | 显示全部楼层
我可以用C给你写这个程序,汇编虽然学过,但是忘得差不多了。写起来也费劲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 15:34:44 | 显示全部楼层
你们叫我春哥吧 发表于 2020-4-11 18:40
我可以用C给你写这个程序,汇编虽然学过,但是忘得差不多了。写起来也费劲

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 15:40:51 | 显示全部楼层

按你的要求应该是控制3个数码管的显示。你这么多灯是要怎么整?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 17:16:09 | 显示全部楼层
你们叫我春哥吧 发表于 2020-4-12 15:40
按你的要求应该是控制3个数码管的显示。你这么多灯是要怎么整?

唔,可能没有放完全:
由于本实验的任务可知,实验装置以单片机为核心,需要两个输入端口分别联接按钮用于输入控制;需要12个输出端口分别驱动一个LED灯,用于简易的状态显示,其中4个端口分别指示一个参数;8个端口组成一个9级状态显示条,显示参数的值。控制软件应需要首先检测并确定当前活动参数,点亮对应的状态灯;其次如检测到参数改变按键按下,则对当前活动参数执行增一操作,并将结果以二进制数方式显示出来。因此,控制软件所需要执行的操作就是循环检测两个按键的状态,如果发现按键从开到闭合的变化,就执行相应的更改当前参数,或使当前参数值加一的操作。
考虑到应用兼容性,拟以P1.2、P1.1,P1.0两个端口作为输入口,其中P1.2用于参数选择,P1.1用于参数值加1输入,P1.0用来进行参数减少。这两个端口通过按钮接地。按钮处于常开状态,闭合时提供信息输入。
P3口的P3.3~P3.0用于显示参数选择结果,每个端口对应一个参数,亮灯表示当前操作的参数,故4个端口灯同时只能有且只有一个灯亮。P2口的8个I/O口作为本系统的参数值输出口,表示当前活动参数的参数值。这个8个I/O口分别联接一个由NPN三极管驱动的LED灯,作参数和参数值显示器。参数值共9级,灯全灭,从右向左,亮1只灯,2只灯直至8个灯全亮。  由于LED灯在I/O端口低电平时亮,因此在由参数值驱动端口灯时应先取反,使亮灯状态与1对应,符合使用习惯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 17:17:47 | 显示全部楼层
你们叫我春哥吧 发表于 2020-4-12 15:40
按你的要求应该是控制3个数码管的显示。你这么多灯是要怎么整?

但是我一直没有办法做到八个灯全亮后,再按一次清零灯灭掉。明明我写了MOV P2,#0FFH。这几天没上论坛没看见回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 12:19:56 | 显示全部楼层    本楼为最佳答案   
眠空 发表于 2020-4-16 17:17
但是我一直没有办法做到八个灯全亮后,再按一次清零灯灭掉。明明我写了MOV P2,#0FFH。这几天没上论坛没看 ...

我QQ844854451 你加我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-26 03:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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