打印
[STM32F1]

程序哪里出了问题

[复制链接]
696|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2022-1-2 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在问题是,上电能显示654321,可当按下P1.3口接的按键时,6 个数码管都不会亮了,程序哪里出了问题
程序目的:上电时数码管显示654321,每次按下P1.3口按键时
             对31H中的数据加一,加到 10时,31H中清0并对下一个地址
             (32H)中的数据加1,依次类推

使用特权

评论回复
沙发
pengf| | 2022-1-2 19:53 | 只看该作者
org 0000h
jmp start
org 0003h
reti
org 000bh
reti
org 0013h
jmp wzd1
org 001bh
reti
org 0023h
reti


wzd1: push psw      ;外中断入口
        push acc
        clr ea
        clr ex1
        jnb p1.3,key3    1.3为0时转KEY3
wzdfh:pop acc          ;外中断返回
        pop psw
        setb ea
        setb ex1
       reti
key3:call delay10ms
      jb p1.3,wzdfh
     l1: jnb p1.3,$
        inc 31h           1.3松开时31H加1
      mov a,#10
      cjne a,31h,wzdfh     ;31H中不等于10中断返回
      clr a
      mov 31h,a             ;31H中的数据清0并对下一地址中的数据加一
      inc 32h
      mov a,#10
      cjne a,32h,wzdfh
       clr a
      mov 32h,a
      inc 33h
      mov a,#10
      cjne a,33h,wzdfh
           clr a
      mov 33h,a
      inc 34h
      mov a,#10
      cjne a,34h,wzdfh
           clr a
      mov 34h,a
      inc 35h
      mov a,#10
      cjne a,35h,wzdfh
           clr a
      mov 35h,a
      inc 36h
      mov a,#10
      cjne a,36h,wzdfh
      clr a
      mov 36h,a
      jmp wzdfh

start:mov 31h,#1
        mov 32h,#2
        mov 33h,#3
        mov 34h,#4
        mov 35h,#5
        mov 36h,#6
        clr p1.5
        setb ea
         setb ex1
start1:call display
        jmp start1
display:mov r1,#31h
    mov r2,#00000001
play:  mov p0,#0ffh
        mov a,r2
        mov p2,a
        mov a,@r1
        mov dptr,#tab
        movc a,@a+dptr
        mov p0,a
        call delay1ms
        inc r1
        mov a,p2
        jb acc.5,endout
        rl a
        mov r2,a
        mov p2,#0h
        jmp play
endout:mov p0,#0ffh
        mov p2,#0
        ret
delay1ms:mov r3,#2
    d1:   mov r4,#250
    d2:   djnz r4,$
          djnz r3,d1
          ret
delay10ms: call play   ;10ms子程序,调用一次显示子程序约6ms,调两次约12ms
            call play
          ret

tab:db   48h,0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h
end

使用特权

评论回复
板凳
yszong| | 2022-1-2 19:55 | 只看该作者
程序应该显示一下就没有了.
中断方式.

使用特权

评论回复
地板
zhanghqi| | 2022-1-2 19:57 | 只看该作者
用软件仿真一下,関件\是否能进入中断测试,Sp初为07,加一语句mov sp =70h

使用特权

评论回复
5
xxrs| | 2022-1-2 20:04 | 只看该作者
给堆栈入口地址。60h
把按键抬起判断放到最后

使用特权

评论回复
6
supernan| | 2022-1-2 20:07 | 只看该作者
给你个建议以后看C语言写汇编
这样有助于你的汇编

使用特权

评论回复
7
renyaq| | 2022-1-2 20:08 | 只看该作者
楼主可以使用定时器扫描。

使用特权

评论回复
8
huangchui| | 2022-1-2 20:11 | 只看该作者
你的按键有没有while?

使用特权

评论回复
9
liuzaiy| | 2022-1-2 20:13 | 只看该作者
这个数码管怎么设置的呀

使用特权

评论回复
10
supernan| | 2022-1-2 20:16 | 只看该作者
如果数据自++能不能计数实现?

使用特权

评论回复
11
liuzaiy| | 2022-1-2 20:18 | 只看该作者
是不是数码管闪烁太快了?

使用特权

评论回复
12
chenjunt| | 2022-1-2 20:20 | 只看该作者
数码管显示需要不停的扫描才行。

使用特权

评论回复
13
chenjunt| | 2022-1-2 20:23 | 只看该作者
按键while不能正常执行。

使用特权

评论回复
14
supernan| | 2022-1-2 20:26 | 只看该作者
数码管不能正常执行。

使用特权

评论回复
15
supernan| | 2022-1-2 20:28 | 只看该作者
数码管接口有什么不同吗?

使用特权

评论回复
16
liuzaiy| | 2022-1-2 20:34 | 只看该作者
这个看不出楼主怎么显示数码管。

使用特权

评论回复
17
lizye| | 2022-1-2 20:36 | 只看该作者
按键使用外部中断直接计数。

使用特权

评论回复
18
午夜粪车| | 2022-1-2 20:38 | 只看该作者
inc 31h           1.3松开时31H加1       mov a,#10       cjne a,31h,wzdfh     ;31H中不等于10中断返回

使用特权

评论回复
19
wyjie|  楼主 | 2022-1-2 20:40 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

927

主题

12706

帖子

5

粉丝