51单片机汇编程序问题

51单片机汇编程序问题,第1张

……

MOV TMOD, #01H ;工作方式1

MOV TH0, #3CH ;装入初值 定时50毫秒

MOV TL0, #0B0H

SETB ET0

SETB EA

SETB TR0 ;定时器0控制位

; ----此处,缺少循环,自动往下执行到中断程序去了

SJMP $ ;-------加上这行,再试试看。

INT_T0:

MOV TH0, #3CH ;重新装入初值

MOV TL0, #0B0H

……

你如果没有用译码器,那应该问题出在扫描部分。在显示下一个数码管显示的时候,要关了上一个数码管,同时更新第二个数码管数据输出端的数据。延时一段时间之后,再显示下一个数码管数据。这样一直扫描。固定扫描时间,有两种方法,一种是定时器中断,一种是自已用延时程序来自已作一个软件定时器。还有一个要注意的问题就是按键要设置一个40-100ms的延时,这样可以防止误读按键。

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP EXTINT0

ORG 0030H

MAIN:

MOV SP,#5FH ;堆栈顶设为5FH

SETB EA ;开中断

SETB IT0 ;外部中断0沿触发

SETB EX0 ;开外部中断0

MOV 30H,#0 ;计数初值为0

SJMP $ ;死循环

EXTINT0:

INC 30H ;计数器加1

RETI ;中断返回

END

KEYR EQU P10//改下端口 忘记 p3口 是低还是高了

KEYL EQU P11

LED EQU P0

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

    MOV TMOD,#01H

    MOV TH0,#HIGH(65536-50000)

    MOV TL0,#LOW(65536-50000)

    SETB ET0

    SETB EA

    MOV A,#0FEH

    MOV LED,A

    MOV R2,#0

    CLR 00H

LOOP:

    CLR TR0

LOOPL:

    JB KEYL,LOOPR

    SETB TR0

    RL A

    MOV LED,A

    JNB 00H,$

    CLR 00H

    SJMP LOOPL

LOOPR:

    JB KEYR,LOOP

    SETB TR0

    RR A

    MOV LED,A

    JNB 00H,$

    CLR 00H

    SJMP LOOPR

T0ISR:

    CLR TR0

   MOV TH0,#HIGH(65536-50000)

   MOV TL0,#LOW(65536-50000)

    SETB TR0

    INC R2

    CJNE R2,#20,T0E

    MOV R2,#0

    SETB 00H

T0E:

    RETI

    END

以上就是关于51单片机汇编程序问题全部的内容,包括:51单片机汇编程序问题、51单片机,用键盘输入数码管显示的程序!!!用汇编语言,大家帮忙看看哪里错了!谢谢了!!!、51单片机用计数器中断实现100以内的按键计数,汇编语言程序是怎样的,能帮忙一下么,谢谢啦。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10628969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存