数字时钟课程设计.docx
- 文档编号:17023203
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:22
- 大小:18.45KB
数字时钟课程设计.docx
《数字时钟课程设计.docx》由会员分享,可在线阅读,更多相关《数字时钟课程设计.docx(22页珍藏版)》请在冰点文库上搜索。
数字时钟课程设计
;***************************************************************************
;定时中断程序例程序
;
;功能:
1、将TEMP1,TEMP216位二进制数转换成十进制数下LED1~LED4显示出来
;其中:
P1.4,P1.5,P1.6,P1.7分别控制LED4LED3LED2LED1的公共端
;P2口位正序连接的LED数码管段控制端口
;2、产生5MS定时中断,每次中断调用扫描显示程序
;3、系统时钟为11.059MHZ,N=5000
;****************************************************************************
LED1EQU7FH
LED2EQU7EH
LED3EQU7DH
LED4EQU7CH
LED5EQU72H
LED6EQU71H
SCAN_COUNTEQU7BH;扫描显示计数器
A_SIWEQU66H
TEMP1EQU7AH
TEMP2EQU79H
TEMP3EQU78H
H_MEMEQU77H
M_MEMEQU76H
S_MEMEQU75H
S_MEM1EQU69H
H_ALARMEQU70H
M_ALARMEQU66H
MODE_REGEQU74H
KEY_UPEQU68H
KEY_DOWNEQU67H
TIMER_COUNTEQU73H;定时器中断次数软件计数器
H_M_FLAGEQU20H.1
FLASH_FLAGEQU20H.0;定义闪烁标志位
;------------------------------------------------------------------------
ORG0000H
LJMPMAIN
ORG0003H
RETI
ORG000BH
LJMPT0_INT
ORG0013H
RETI
;----------------------------------------------------------------------------
ORG0030H
MAIN:
MOVSP,#2FH
MOVTL0,#(65536-4608)MOD256;初始化时间常数
MOVTH0,#(65536-4608)/256
MOVTMOD,#00000001B;设置模式1
SETBET0;开放定时器0中断
SETBTR0;开启定时器0
SETBEA
LCALLCLR_MEM
;---------------------------------------------------------------------
WAIT:
LCALLALARM
LCALLCONVERT_BCD
LCALLKEY_SCAN
;LCALLDISPLAY
SJMPWAIT
;**************定时中断程序**********************************************
T0_INT:
PUSHACC;保护现场
PUSHPSW
PUSHDPL
PUSHDPH
SETBRS1;选择2区工作寄存器单元
MOVTL0,#(65536-4608)MOD256;恢复时间常数
MOVTH0,#(65536-4608)/256
LCALLDISPLAY
INCTIMER_COUNT
MOVA,TIMER_COUNT
CJNEA,#100,T0_INT1
MOVTIMER_COUNT,#0
CPLFLASH_FLAG;每5MS*100=500MS取反闪烁标志位
CPLP1.1
JNBFLASH_FLAG,T0_INT1
INCS_MEM
MOVA,S_MEM
CJNEA,#60,T0_INT1
MOVS_MEM,#0
INCM_MEM
MOVA,M_MEM
CJNEA,#60,T0_INT1
MOVM_MEM,#0
INCH_MEM
MOVA,H_MEM
CJNEA,#24,T0_INT1
MOVH_MEM,#0
T0_INT1:
POPDPH;中断结束恢复现场
POPDPL
POPPSW
POPACC
RETI
;***************************************************************************
;---------------键盘扫描子程序----------------------------------------------------------------
KEY_SCAN:
JNBP3.2,K1
JNBP3.3,K2
JNBP3.4,K3
JNBP3.5,K4
RET
;---------------按键声子程序----------------------------------------------------------------
K1:
CPLP1.2
LJMPKK1
K2:
CPLP1.2
LJMPKK2
K3:
CPLP1.2
LJMPKK3
K4:
CPLP1.2
LJMPKK4
;--------------模式选择按键--------------------------------------------------------------
KK1:
INCMODE_REG
MOVA,MODE_REG
CJNEA,#5,K11;设置几种模式
MOVMODE_REG,#0
K11:
JNBP3.2,$
CPLP1.2
RET
;---------------按键减一----------------------------------------------------------------
KK3:
MOVA,MODE_REG
CJNEA,#0,K31
RET
K31:
CJNEA,#1,K32
LJMPH_DEC
K32:
CJNEA,#2,K33
LJMPM_DEC
K33:
CJNEA,#3,K34
LJMPH1ALARM
K34:
LJMPM1ALARM
H_DEC:
DECH_MEM
MOVA,H_MEM
CJNEA,#0FFH,H_DEC1
MOVH_MEM,#23
H_DEC1:
JNBP3.4,$
CPLP1.2
RET
M_DEC:
DECM_MEM
MOVA,M_MEM
CJNEA,#0FFH,M_DEC1
MOVM_MEM,#59
M_DEC1:
JNBP3.4,$
CPLP1.2
RET
H1ALARM:
DECH_ALARM
MOVA,H_ALARM
CJNEA,#0FFH,H1ALARM1
MOVH_ALARM,#23
H1ALARM1:
JNBP3.4,$
CPLP1.2
RET
M1ALARM:
DECM_ALARM
MOVA,M_ALARM
CJNEA,#0FFH,M1ALARM1
MOVM_ALARM,#59
M1ALARM1:
JNBP3.4,$
CPLP1.2
RET
;---------------按键加一----------------------------------------------------------------
KK2:
MOVA,MODE_REG
CJNEA,#0,K21
RET
K21:
CJNEA,#1,K22
LJMPH_INC
K22:
CJNEA,#2,K23
LJMPM_INC
K23:
CJNEA,#3,K24
LJMPH2ALARM
K24:
LJMPM2ALARM
H_INC:
INCH_MEM
MOVA,H_MEM
CJNEA,#24,H_INC1
MOVH_MEM,#0
H_INC1:
JNBP3.3,$
CPLP1.2
RET
M_INC:
INCM_MEM
MOVA,M_MEM
CJNEA,#60,M_INC1
MOVM_MEM,#0
M_INC1:
JNBP3.3,$
CPLP1.2
RET
H2ALARM:
INCH_ALARM
MOVA,H_ALARM
CJNEA,#24,H2ALARM1
MOVH_ALARM,#0
H2ALARM1:
JNBP3.3,$
CPLP1.2
RET
M2ALARM:
INCM_ALARM
MOVA,M_ALARM
CJNEA,#60,M2ALARM1
MOVM_ALARM,#0
M2ALARM1:
JNBP3.3,$
CPLP1.2
RET
;------------------------------------------
KK4:
CPLH_M_FLAG
JNBP3.5,$
CPLP1.2
RET
;---------------------------------------------
DISPLAY:
MOVA,MODE_REG
CJNEA,#0,DIS_1
LJMPDISPLAY_0
DIS_1:
CJNEA,#1,DIS_2
LJMPDISPLAY_1
DIS_2:
CJNEA,#2,DIS_3
LJMPDISPLAY_2
DIS_3:
CJNEA,#3,DIS_4
LJMPDISPLAY_3
DIS_4:
LJMPDISPLAY_4
RET
;------------------模式零正常显示-------------------------------------------------------------
DISPLAY_0:
MOVP2,#11111111B;消鬼影
MOVA,SCAN_COUNT
ADDA,ACC
MOVDPTR,#LED_SCAN_TABLE
MOVCA,@A+DPTR
ANLP1,#00001111B
ORLP1,A
MOVA,SCAN_COUNT
ADDA,ACC
INCA
MOVCA,@A+DPTR;读取第二字节地址
MOVR0,A
MOVA,@R0;间接寻址读取缓冲区的显示内容
MOVP2,A
INCSCAN_COUNT
MOVA,SCAN_COUNT
CJNEA,#4,DISPLAY1;4位显示
MOVSCAN_COUNT,#0
DISPLAY1:
;LCALLDELAY5MS
RET
;------------------模式一时钟闪烁-------------------------------------------------------------
DISPLAY_1:
MOVA,SCAN_COUNT
CJNEA,#2,D1
D4:
JNBFLASH_FLAG,D3
LJMPD2
D1:
CJNEA,#3,D3
LJMPD4
D3:
ADDA,ACC
MOVDPTR,#LED_SCAN_TABLE
MOVCA,@A+DPTR
ANLP1,#00001111B
ORLP1,A
MOVA,SCAN_COUNT
ADDA,ACC
INCA
MOVCA,@A+DPTR
MOVR0,A
MOVA,@R0
MOVP2,A
D2:
INCSCAN_COUNT
MOVA,SCAN_COUNT
CJNEA,#4,DISPLAY11
MOVSCAN_COUNT,#0
DISPLAY11:
RET
;------------------模式二分钟闪烁----------------------------------------------------
DISPLAY_2:
MOVA,SCAN_COUNT
CJNEA,#0,B1
B4:
JNBFLASH_FLAG,B3
LJMPB2
B1:
CJNEA,#1,B3
LJMPB4
B3:
ADDA,ACC
MOVDPTR,#LED_SCAN_TABLE
MOVCA,@A+DPTR
ANLP1,#00001111B
ORLP1,A
MOVA,SCAN_COUNT
ADDA,ACC
INCA
MOVCA,@A+DPTR
MOVR0,A
MOVA,@R0
MOVP2,A
B2:
INCSCAN_COUNT
MOVA,SCAN_COUNT
CJNEA,#4,DISPLAY111
MOVSCAN_COUNT,#0
DISPLAY111:
RET
;------------------模式三闹钟小时闪烁----------------------------------------------------
DISPLAY_3:
MOVA,SCAN_COUNT
CJNEA,#2,H1
H4:
JNBFLASH_FLAG,D3
LJMPH2
H1:
CJNEA,#3,H3
LJMPH4
H3:
ADDA,ACC
MOVDPTR,#LED_SCAN_TABLE
MOVCA,@A+DPTR
ANLP1,#00001111B
ORLP1,A
MOVA,SCAN_COUNT
ADDA,ACC
INCA
MOVCA,@A+DPTR
MOVR0,A
MOVA,@R0
MOVP2,A
H2:
INCSCAN_COUNT
MOVA,SCAN_COUNT
CJNEA,#4,DISPLAY2
MOVSCAN_COUNT,#0
DISPLAY2:
RET
;------------------模式四闹钟分钟闪烁----------------------------------------------------
DISPLAY_4:
MOVA,SCAN_COUNT
CJNEA,#0,M1
M4:
JNBFLASH_FLAG,M3
LJMPM2
M1:
CJNEA,#1,M3
LJMPM4
M3:
ADDA,ACC
MOVDPTR,#LED_SCAN_TABLE
MOVCA,@A+DPTR
ANLp1,#00001111B
ORLP1,A
MOVA,SCAN_COUNT
ADDA,ACC
INCA
MOVCA,@A+DPTR
MOVR0,A
MOVA,@R0
MOVP2,A
M2:
INCSCAN_COUNT
MOVA,SCAN_COUNT
CJNEA,#4,DISPLAY22
MOVSCAN_COUNT,#0
DISPLAY22:
RET
;--------------------二翻十,拆字,转码,送显示子程序-----------------------------------------------------------
CONVERT_BCD:
MOVA,MODE_REG
CJNEA,#0,WAY1
AJMPNORMOL
WAY1:
CJNEA,#1,WAY2
AJMPNORMOL
WAY2:
CJNEA,#2,WAY3
AJMPNORMOL
WAY3:
CJNEA,#3,WAY4
AJMPNORMOL1
WAY4:
AJMPNORMOL1
;/------------模式0、1、2下的显示调整程序------------
NORMOL:
JNBH_M_FLAG,M01
MOVR3,M_MEM;分钟单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
JNBFLASH_FLAG,MODE0_BCD1
MODE0_BCD1:
MOVLED1,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVLED2,A
MOVR3,H_MEM;时钟单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
JNBFLASH_FLAG,MODE0_BCD2
CPLACC.7;点亮小数点
MODE0_BCD2:
MOVLED3,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVLED4,A
RET
M01:
MOVR3,S_MEM;秒单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
MOVLED1,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
MOVLED2,A
CLRACC.7
MOVR3,M_MEM;分钟单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
JNBFLASH_FLAG,MODE0_BCD3
CLRACC.7
MODE0_BCD3:
MOVLED3,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVLED4,A
RET
;/------------------模式3,4下的显示调整程序-----------------
NORMOL1:
MOVR3,M_ALARM;闹钟模式分钟单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
JNBFLASH_FLAG,MODE0_BCD11
CPLACC.7;点亮小数点
MODE0_BCD11:
MOVLED1,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVLED2,A
MOVR3,H_ALARM;闹钟模式时钟单元二翻十
MOVR2,#0
LCALLBTID
MOVA,R6
ANLA,#0FH
MOVDPTR,#LED_CODE
MOVCA,@A+DPTR
JNBFLASH_FLAG,MODE0_BCD22
CPLACC.7;点亮小数点
MODE0_BCD22:
MOVLED3,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVLED4,A
RET
;----------------二翻十子程序---------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟 课程设计