⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实验五(1)d.asm

📁 单片机只是别人的东西
💻 ASM
字号:

;功能:定时器T0(方式1)演示实验
TCOCON   DATA    40H     ;定时器溢出计数单元
DISPC    DATA    41H     ;显示数码计数器
TIME1    EQU     20      ;溢出次数

ORG 0000H
LJMP MAIN

ORG 000BH
LJMP CTC0       ;定时/计数器T0中断服务程序入口地址

ORG 0050H
;-----主程序开始-----
PROC MAIN
MAIN:
     MOV SP, #5FH       ;对于只有前128字节内部RAM芯片来说,
                        ;将60H-7FH,共计32字节作为堆栈区
;     MOV SP, #0DFH     ;对于具有256字节内部RAM芯片来说,
                        ;将0E0H-0FFH,共计32字节作为堆栈区

    ; MOV DPTR, #8000H   ;关闭蜂鸣器
     ;MOV A, #0FFH
    ; MOVX @DPTR, A

     ;---复位后,将08H-0FF内部RAM单元清0。

    MOV R7, #248
     MOV R0, #08H
LOOP1:
     MOV @R0, #0
     INC R0
     DJNZ R7, LOOP1


     ;----初始化定时器T0
     MOV TH0, #0B8H
     MOV TL0, #00H      ;初值0B800H送定时器T0
     ANL TMOD, #0F0H
     ORL TMOD, #000000001B
               ;定时器T0工作在方式1;C/T位为0,定时状态;
               ;软件启动。

     ;-----初始化中断控制器
     SETB ET0           ;允许定时器T0中断
     SETB EA            ;开中断
     ;----启动定时器T0
     SETB TR0           ;启动T0
     MOV TCOCON, #TIME1   ;T0每20ms中断一次,则TCON回零时间为50*20ms

     CLR A              ;从0开始显示
     MOV DPTR, #LEDTAB  ;0-F字模表首地址送DPTR
     MOVC A, @A+DPTR    ;取显示数码对应字模
     MOV P0, A          ;字模送P0口
     SJMP $             ;虚拟主程序,等待中断

END


;定时/计数器T0中断服务程序
PROC CTC0
CTC0:
     MOV TL0, #00H      ;由于T0工作在方式1,需要重装初始化
     MOV TH0, #0B8H     ;为避免更大误差,进入T0中断服务程序后
                        ;立即重装。

     PUSH  PSW
     PUSH  ACC
     CLR   RS0
     SETB  RS1          ;切换工作寄存器区(这里假设用1区)

     DJNZ  TCOCON, EXIT ;溢出次数减1,不为0跳转
     ;溢出次数已经回到0,重新初始化溢出次数
     MOV TCOCON, #TIME1
     CPL P1.1
     CPL P2.6
     INC DISPC           ;数码计数器+1,显示下一个数码
     MOV A, DISPC
     CJNE A, #10, NEXT1
NEXT1:
     JC NEXT2

     ;显示数码已经大于F,从开始显示
CLR A
     MOV DISPC, #0       ;再从0开始
NEXT2:
     MOV DPTR, #LEDTAB   ;0-F字模表首地址送DPTR
     MOVC A, @A+DPTR     ;取显示数码对应字模
     MOV P0, A           ;字模送P0口
EXIT:

     POP   ACC
     POP   PSW
     RETI
END

LEDTAB:                 ;八段LED共阳数码管字模
;数码  0     1     2     3     4     5    6    7
DB     090H, 080H, 0F8H, 082H, 092H, 099H, 0B0H, 0A4H

;数码  8     9     A     B     C     D     E     F
DB     0F9H,  0C0H,  88H, 83H,  0C6H, 0A1H, 86H, 8EH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -