松翰单片机数码管c语言,松翰单片机定时中断数码管程序

;数码管 ---- 目的:学习查表及间接寻址定时中断

;完整代码下载地址: http://www.51hei.com/f/smysh.rar

CHIP SN8F27E65

//{{SONIX_CODE_OPTION

.Code_Option WDT_CLK  Flosc/4

.Code_Option Reset_Pin P04

.Code_Option LVD  LVD_Max  ; 3.3V Reset

.Code_Option Watch_Dog Disable  ;关闭看门狗

.Code_Option Low_Fcpu Flosc/1

.Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator

.Code_Option High_Fcpu Fhosc/1

.Code_Option Security Enable

.Code_Option Noise_Filter Enable

//}}SONIX_CODE_OPTION

DATAC EQU P4M

DATA EQU P4

LEDC EQU P0M

LED EQU P0

.DATA;数据

ORG  0

TEMP  DS 1

ACCBUF  DS 1

PflagBUF DS 1

.CODE;程序代码

ORG 0000H

JMP A0

ORG 000BH

JMP T0

; ORG 0015H

A0: B0BCLR FT0IEN;关闭T0中断

B0BCLR FT0ENB;禁止T0中断

MOV A,#16;设置T0时钟

B0MOV T0M,A;

MOV A,#16;装初值

B0MOV T0C,A;

B0BCLR FT0IRQ;清中断标志

B0BSET FT0IEN;开T0中断

B0BSET FT0ENB;允许T0中断

B0BSET FGIE;开总中断

MOV A,#3;显示值

MOV 41H,A

MOV A,#2;显示值

MOV 42H,A

MOV A,#1;显示值

MOV 43H,A

MOV A,#0;显示值

MOV 44H,A

;*********************************************

;显示设置

;*********************************************

A1: MOV A,#11111110B ;显示位码

MOV 31H,A

MOV A,#4;显示位数

MOV 33H,A

B0MOV H,#0 ; 清“H”以寻址RAM bank 0。

B0MOV L,#41H ; 设定寄存器地址。

JMP $

;*********************************************

;T0中断

;*********************************************

T0: B0BCLR FT0IEN;关T0中断

B0BCLR FT0ENB;禁止T0中断

B0XCH A,ACCBUF;压栈

B0MOV A,PFLAG;

B0MOV PFLAGBUF,A;

MOV A,#0FFH;清显示

B0MOV DATAC,A;

B0MOV DATA,A;

MOV A,#0FFH;

B0MOV LEDC,A;

MOV A,#0FFH;

B0MOV LED,A;

T1:

MOV A,#0FFH;设置为输出口

B0MOV DATAC,A;

B0MOV Y,#Q1$M;编码表地址

B0MOV Z,#Q1$L;编码表地址

B0MOV A, @HL;间接寻址

ADD Z,A;寻找要显示编码

MOVC ;查表高八位存在R低八位存在ACC

B0MOV DATA,A;数据输出

MOV A,#0FFH;设为输出口

B0MOV LEDC,A

MOV A,31H;位码

B0MOV LED,A

MOV A,31H;处理位码的数由于没有RL只有RLC现在这里处理C

MOV 32H,A

RLC 32H

RLCM 31H;移动位码

INCMS L;显示数据控制寄存器处理

CALL M001;延时提高亮度

MOV A,#0FFH;清显示

B0MOV DATAC,A

B0MOV DATA,A

MOV A,#0FFH

B0MOV LEDC,A

MOV A,#0FFH

B0MOV LED,A

DECMS 33H;自动减1判断是否也显示完成

JMP T1

MOV A,#11111110B ;显示位码

MOV 31H,A

MOV A,#4;显示位数

MOV 33H,A

B0MOV H,#0 ; 清“H”以寻址RAM bank 0。

B0MOV L,#41H ; 设定寄存器地址。

B0MOV A,PFLAGBUF;弹栈

B0MOV PFLAG,A;

B0XCH A,ACCBUF;

MOV A,#16;设T0时钟

B0MOV T0M,A;

MOV A,#16;重装初值

B0MOV T0C,A;

B0BCLR FT0IRQ;清中断标志

B0BSET FT0IEN;开中断

B0BSET FT0ENB;允许中断

B0BSET FGIE;开总中断

RETI;

;******************************************

;延时子程序

;******************************************

M001: MOV A,#1

MOV 51H,A

M002: MOV A,#24

MOV 52H,A

M003: MOV A,#250

MOV 53H,A

M004: DECMS 53H

JMP M004

DECMS 52H

JMP M003

DECMS 51H

JMP M002

RET

;******************************************

;编码表

;******************************************

Q1:   DW     00C0H        ;0

DW     00F9H        ;1

DW     00A4H        ;2

DW     00B0H        ;3

DW     0099H        ;4

DW     0092H        ;5

DW     0082H        ;6

DW     00F8H        ;7

DW     0080H        ;8

DW     0090H        ;9

DW     0088H        ;A

DW     0083H        ;B

DW     00C6H        ;C

DW     00A1H        ;D

DW     0086H        ;E

DW     008EH        ;F

endp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值