《定时数码管显示实验.ppt》由会员分享,可在线阅读,更多相关《定时数码管显示实验.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时数码管显示实验定时数码管显示实验定时数码管显示实验定时数码管显示实验实验目的实验目的实验器材实验器材硬件接线硬件接线软件功能软件功能程序清单程序清单备注说明备注说明实验目的:实验目的:实验目的:实验目的:LCD与定时中断的联合编程,与定时中断的联合编程,显示时钟显示时钟实验器材:实验器材:实验器材:实验器材:1.SD-1型在线编程实验仪型在线编程实验仪2.导线若干导线若干硬件接线:硬件接线:硬件接线:硬件接线:使用实验板固定接线使用实验板固定接线(PTB0,1,2,3,4,5,6,7分别接分别接LA,LB,LC,LD,LE,LF,LG,LDP PTC0,1,2,3分别接分别接L11,L12
2、,L13,L14)软件功能:软件功能:软件功能:软件功能:手动设置当前时间手动设置当前时间显示时钟显示时钟程序清单:程序清单:程序清单:程序清单:口地址定义口地址定义寄存器地址寄存器地址内存变量定义内存变量定义主程序主程序扫描子程序扫描子程序转码子程序转码子程序显示子程序显示子程序延时子程序延时子程序定时器定时器1溢出中断子程序溢出中断子程序中断矢量中断矢量软件功能:软件功能:软件功能:软件功能:运行时请与标准时间进行校对运行时请与标准时间进行校对口地址定义口地址定义PTA EQU$0000 ;A口数据寄存器DDRA EQU$0004 ;A口数据方向寄存器PTB EQU$0001 ;B口数据寄
3、存器DDRB EQU$0005 ;B口数据方向寄存器PTC EQU$0002 ;C口数据寄存器DDRC EQU$0006 ;C口数据方向寄存器PTD EQU$0003 ;D口数据寄存器DDRD EQU$0007 ;D口数据方向寄存器PTDPUE EQU$000F 寄存器地址寄存器地址T1SC EQU$0020 ;定时器1状态和控制寄存器T1CNTHEQU$0021 ;定时器1计数寄存器(高位)T1CNTLEQU$0022 ;定时器1计数寄存器(低位)T1MODH EQU$0023 ;定时器1模数寄存器(高位)T1MODLEQU$0024 ;定时器1模数寄存器(低位)RAMstartAddr e
4、qu$0040 ;RAM的起始地址(因芯片不同可以更改)FlashStartAddr equ$8000 ;程序开始地址(因芯片不同可以更改)内存变量定义内存变量定义 ORG RAMstartAddrShow_Buffer RMB 8 ;存放待显示的数据Cs RMB 1 ;位选信号Sec RMB 1Min RMB 1Hou RMB 1I1 RMB 1主程序主程序*-主程序-ORG FlashStartAddr ;初始化NOP ;初始化 SEI ;禁止所有中断 LDHX#$023F ;堆栈初始化,放入GP32的RAM最高端 TXS ;系统初始化 MOV#%00000001,$001E ;初始化CO
5、NFIG2,内部总线时钟用作SCI的时钟 MOV#%00111101,$001F ;初始化CONFIG1,允许LVI复位信号,;禁止LIV模块的电源,LIV工作在5V,;经过32个周期退出STOP模式,禁止COP模块 CLR$0036 ;清零,初始化PCTL,MOV#$01,$0036 MOV#$01,$0038 MOV#$2C,$0039 MOV#$80,$003A BSET 5,$0036 BSET 7,$0037 ;自动方式 BSET 4,$0036 ;选择PLL为系统时钟源主程序续主程序续LDA#$FF ;定义A口为输出 STA DDRA LDA#$FF ;定义B口为输出 STA DD
6、RB LDA#$FF ;定义C口为输出 STA DDRC LDA#$00 ;定义A口之前复位PTA STA PTD ;D口 STA DDRD ;输入 LDA#$FF ;定义D口有上拉电阻 STA PTDPUE ;STA PTD ;定时器1初始化 LDA#%01100110 ;允许溢出中断、不启动计数、分频因子=64 STA T1SC LDHX#$0000 ;计数寄存器初值=$0000 STHX T1CNTH LDHX#$9600 ;设1秒产生1次溢出中断 STHX T1MODH ;模数寄存器设定值=1(2457600/64)=$9600;设置初始时间 MOV#$7F,Show_Buffer+2
7、 MOV#$7F,Show_Buffer+5 MOV#$00,Sec主程序续主程序续 MOV#$00,Min MOV#$00,Hou ;-设置当前时间-SetUp:JSR Scan SetSec:BRSET 0,PTD,SetMin INC Sec LDA Sec CMP#!59 BNE SetMin MOV#!0,SecSetMin:BRSET 1,PTD,SetHou INC Min LDA Min CMP#!59 BNE SetHou MOV#!0,Min主程序续主程序续SetHou:BRSET 2,PTD,SetExit INC Hou LDA Hou CMP#!23 BNE SetE
8、xit MOV#!0,Hou SetExit:BRCLR 3,PTD,SetExit2 Mov#$FF,I1ScanDlay:JSR SCAN DBNZ I1,ScanDlay JMP SetUpSetExit2:BCLR 5,T1SC ;允许定时器1计数寄存器计数 CLI 扫描子程序扫描子程序Scan:LDA Hou LDHX#Show_Buffer JSR Trans1 LDA Min LDHX#Show_Buffer+3 JSR Trans1 LDA Sec LDHX#Show_Buffer+6 JSR Trans1 JSR Show_Num ;显示起始数据 RTS转码子程序转码子程序T
9、rans1:PSHA PSHH PSHX LDHX#$000A DIV LDHX#$0000 TAX LDA Table,X PULX PULH STA,X AIX#$1 PULA转码子程序续转码子程序续 PSHH PSHX LDHX#$000A DIV PSHH PULA LDHX#$0000 TAX LDA Table,X PULX PULH STA,X RTS Table FCB$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$40,$4F,$24,$30,$19,$12,$02,$78,$00,$10,$7f ;显示码表 0 1 2 3 4 5 6 7
10、8 9 0.1.2.3.4.5.6.7.8.9.;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 显示子程序显示子程序Show_Num:PSHH ;进栈,保存HX,A中内容 PSHX PSHA LDHX#$0000 ;清空缓冲区 MOV#$01,CS ;先取第一个数Show_Num_Loop:LDA Show_Buffer,X ;取出Show_Buffer中一个字符放入A STA PTB PSHX PSHH AIX#$4 LDA Show_Buffer,X ;取出Show_Buffer中一个字符放入A STA PTA 显示子程序续显示子
11、程序续LDA CS ;将A中第一个数存入C中输出 STA PTC LDA#!100 ;延时100毫秒 JSR Delay_ns ASL CS ;算术左移,修改位选信号 PULH PULX AIX#!1 CPX#!4 ;判断扫描是否完毕 BLO Show_Num_Loop ;小于4则循环 ;-PULA ;出栈 PULX PULH RTS 延时子程序延时子程序1 1Delay_ms:LDA#!248 ;0.5ms JSR Delay_ns LDA#!248 ;0.5ms JSR Delay_ns AIX#-!1 CPHX#!0 BNE Delay_ms ;4Cycles RTS ;4Cycles延
12、时子程序延时子程序2 2Delay_ns:NOP ;1Cycles NOP ;1Cycles DBNZA Delay_ns ;3Cycles RTS ;4Cycles定时器定时器1 1溢出中断子程序溢出中断子程序Timer1OvF:INC Sec LDA Sec CMP#!60 BLO Tim1OvF_Exit CLR Sec INC Min ;一分到 LDA Min CMP#!60 BLO Tim1OvF_Exit CLR Min INC Hou ;一小时到 LDA Hou CMP#!24 BLO Tim1OvF_Exit CLR Sec CLR Min CLR HouTim1OvF_Exit:LDA T1SC ;清除定时器溢出标志位 BCLR 7,T1SC RTI中断矢量中断矢量 ORG$FFF2 DW Timer1OvF ORG$FFFE DW MainInit