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

📄 t10.asm

📁 一些单片机的51实例
💻 ASM
字号:
NAME    T10                 ;8279显示实验一
PORT    EQU   0CFE8H
BUF     EQU   24H
SEC     EQU   21H
CSEG    AT  0000H
        LJMP  START
CSEG    AT  400BH
        LJMP  CLOCK
CSEG    AT    4100H
START:  MOV   DPTR,#PORT+1  ;8279显示RAM全部清零
        MOV   A,#0D1H
        MOVX  @DPTR,A
        MOV   TMOD,#01H     ;定时器0设置为方式一
        MOV   TL0,#0AFH      ;置时间常数,每0.1秒中断一次
        MOV   TH0,#3CH
        MOV   SEC,#00H
        MOV   BUF,#00H
        SETB  ET0
        SETB  EA
        SETB  TR0
LOOP:   MOV   DPTR,#PORT+1  ;写显示缓冲RAM命令
        MOV   A,#80H
        MOVX  @DPTR,A
        MOV   R1,#21H       ;秒字节地址入R1
        MOV   DPTR,#PORT    ;8279数据端口地址
DL0:    MOV   A,@R1         ;取相应的时间值
        MOV   R2,A          ;存入R2中
        SWAP  A        
        ANL   A,#0FH        ;获取高半字节
        ACALL TABLE
        MOVX  @DPTR,A       ;送入缓冲区
        MOV   DPTR,#PORT+1  ;写显示缓冲RAM命令
        MOV   A,#81H
        MOVX  @DPTR,A
        MOV   DPTR,#PORT
        MOV   A,R2
        ANL   A,#0FH        ;获取低半字节
        ACALL TABLE
        MOVX  @DPTR,A
        LJMP  LOOP          ;否则从头开始显示
TABLE:  INC   A             ;取相应段显码
        MOVC  A,@A+PC
        RET
        DB    3FH,06H,5BH,4FH,66H
        DB    6DH,7DH,07H,7FH,6FH
CLOCK:  MOV   TL0,#0AFH      ;重置时间常数
        MOV   TH0,#3CH
        PUSH  ACC
        PUSH  PSW
        INC   BUF           ;计数值加一
        MOV   A,BUF
        CJNE  A,#0AH,ENDT   ;到一秒了吗?没有则退到ENDT
        MOV   BUF,#00H      ;到一秒了,计数值置零
        MOV   A,SEC
        INC   A             ;秒值加一,经十进制调整
        DA    A
        MOV   SEC,A         ;送回秒字节
        CJNE  A,#60H,ENDT   ;秒值为60否?
        MOV   SEC,#00H      ;是,清零       
ENDT:   POP   PSW
        POP   ACC
        RETI                ;中断返回
END

⌨️ 快捷键说明

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