永发信息网

定时器0控制数码管显示单片机的汇编程序?

答案:3  悬赏:70  手机版
解决时间 2021-07-31 05:36
  • 提问者网友:我一贱你就笑
  • 2021-07-30 19:07

如何利用单片机的定时溢出中断实现准确延时。使单片机的P1端口连接到一个数码管,使其指定的时间间隔内依次显示0~9。的汇编语言 拜托高手了~感激不尽··

最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-07-30 19:28

ORG 0000H
LJMP MAIN


ORG 000BH
LJMP INT_T0


ORG 4100H
MAIN: MOV DPTR, #TAB
MOV R7, #0
MOV R0, #0
MOV TMOD, #00000001B
MOV TH0, #3CH
MOV TL0, #0B0H
SETB EA
SETB ET0
SETB TR0
LOOP: MOV A, R0
MOVC A, @A+DPTR
MOV P1, A
ACALL DELAY
AJMP LOOP


INT_T0: INC R7
CJNE R7, #10, RETURN
MOV R7, #0
INC R0
CJNE R0, #10, RETURN
MOV R0, #0
RETURN: MOV TH0, #3CH
MOV TL0, #0B0H
RETI


DELAY: MOV R2, 0FFH
DL: DJNZ R2, DL
RET


TAB: DB 40h, 4FH, 24H, 30H, 19H
DB 12H, 02H, 78H, 00H, 10H


END


全部回答
  • 1楼网友:刀戟声无边
  • 2021-07-30 21:17

SEC  EQU 30H ;用30h记录秒的存放地址

ORG   0000H

AJMP  START

ORG   000BH  ;定时子程序入口time

AJMP  TIME

;--------

START: 

MOV   SEC,#00H

MOV   TH0,#3CH

MOV   TL0,#0B0H    ;为计时器赋初值15536(即65536-5000)

MOV   R0,#14       ;循环20次为1秒,(默认晶振为12MHZ)

MOV   TOMD,#01H    ;定时方式为方式1

SETB  ITO

SETB  EA

SETB  ETO

SETB  TR0          ;开定时

;--------

MAIN:

MOV   DPTR,#TAB    ;表的首地址给DPTR

MOV   A,SEC

MOVC  A,@A+DPTR    ;查表得数字的显示编码

MOV   P0,A         ;P0口做输出口

CLR   P2.0         ;P2.0口做公共的共阴极,当为低电平时亮。

ACALL DELAY        ;2MS的延时

SETB  P2.0

AJMP  MAIN         ;循环,等待中断

;-------

TIME:              ;中断处理程序

PUSH  Acc

MOV   TH0,#3CH     ;重新赋初值

MOV   TL0,#0B0H

DJNZ  R0,RETURN

MOV   R0,#14      ;判断是否到1秒。

MOV   A,SEC

INC   A           ;秒中存放的数据加1

MOV   SEC,A

CJNE  SEC,#09H,NEXT ;

MOV   SEC,0

NEXT:

AJMP  RETURN

;-------------------

DELAY: ;延时子程序2MS

MOV   R1,#0AH

DELAY1:

MOV   R2,#C8H

DELAY2:

DJNZ  R2,$

DJNZ  R1,DELAY

RET

;-----

RETURN:

POP   Acc

RETI

;数字编码表

#TAB: DB 3FH,06H,5BH,4FH,66H

      DB 6DH,7DH,07H,7FH,6FH

  • 2楼网友:低血压的长颈鹿
  • 2021-07-30 20:38

P1端口连接到一个数码管(共阴极):

SECOND EQU 30H

TCOUNT EQU 31H

ORG 00H

LJMP START

ORG 0BH

LJMP INT0X

START: MOV SECOND,#00H

MOV A,SECOND

MOV B,#10

DIV AB

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOVC A,@A+DPTR

MOV P2,A

MOV TCOUNT,#00H

MOV TMOD,#01H

MOV TH0,#(65536-50000) / 256

MOV TL0,#(65536-50000) MOD 256

SETB TR0

SETB ET0

SETB EA

SJMP $

INT0X:

MOV TH0,#(65536-50000) / 256

MOV TL0,#(65536-50000) MOD 256

INC TCOUNT

MOV A,TCOUNT

CJNE A,#20,NEXT

MOV TCOUNT,#00H

INC SECOND

MOV A,SECOND

CJNE A,#60,NEX

MOV SECOND,#00H

NEX:

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P1,A

NEXT: RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯