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

📄 实验五(2).asm

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

;功能:定时器T2(自动重装初始化)演示实验
TCOCON   DATA    40H     ;定时器溢出计数单元
DISPC    DATA    41H     ;显示数码计数器
TIME1    EQU     50      ;溢出次数

ORG 0000H
LJMP MAIN

ORG 002BH
LJMP CTC2       ;定时/计数器T2中断服务程序入口地址

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

     ;----初始化定时器T2
     MOV TH2, #0B8H
     MOV TL2, #00H          ;初值0B800H送定时器T2
     MOV RCAP2H, #0B8H
     MOV RCAP2L, #00H       ;初始化重装初值
     MOV T2CON, #00000100B  ;初始化T2工作方式(自动重装初值、定时)
                            ;并启动了T2

     ;-----初始化中断控制器
     SETB ET2           ;允许定时器T2中断
     SETB EA            ;开中断

     MOV TCOCON, #TIME1  ;T2每20ms中断一次,则TCOCON回零时间为50*20ms

     CLR A              ;从0开始显示
     MOV DPTR, #LEDTAB  ;0-F字模表首地址送DPTR
     MOVC A, @A+DPTR    ;取显示数码对应字模
     MOV P0, A          ;字模送P0口

     SJMP $             ;虚拟主程序,等待中断

END


;定时/计数器T2中断服务程序
PROC CTC2
CTC2:
     PUSH  PSW
     PUSH  ACC
     CLR   RS0
     SETB  RS1          ;切换工作寄存器区(这里假设用1区)

     DJNZ  TCOCON, EXIT ;溢出次数减1,不为0跳转
     ;溢出次数已经回到0,重新初始化溢出次数
     MOV TCOCON, #TIME1
     INC DISPC           ;数码计数器+1,显示下一个数码
     MOV A, DISPC
     CJNE A, #16, 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
     CLR TF2             ;清除定时器T2溢出标志
     RETI
END

LEDTAB:                 ;八段LED共阳数码管字模
;数码  0     1     2     3     4     5    6    7
DB     0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H

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

⌨️ 快捷键说明

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