《最新定时数码管显示实验PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新定时数码管显示实验PPT课件.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时数码管显示实验定时数码管显示实验实验目的:实验目的:LCD与定时中断的联合编程,与定时中断的联合编程,显示时钟显示时钟寄存器地址T1SC EQU$0020 ;定时器1状态和控制寄存器T1CNTHEQU$0021 ;定时器1计数寄存器(高位)T1CNTLEQU$0022 ;定时器1计数寄存器(低位)T1MODH EQU$0023 ;定时器1模数寄存器(高位)T1MODLEQU$0024 ;定时器1模数寄存器(低位)RAMstartAddr equ$0040 ;RAM的起始地址(因芯片不同可以更改)FlashStartAddr equ$8000 ;程序开始地址(因芯片不同可以更改)内存变量定义
2、 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 ;初始化CONFIG2,内部总线时钟用作SCI的时钟 MOV#%00111101,$001F ;初始化CONFIG1,允许LVI复位信号,;禁止LIV模块的电源,LIV工作在5V,;
3、经过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 DDRB LDA#$FF ;定义C口为输出 STA DDRC LDA#$00 ;定义A口之前复位PTA STA PTD ;D口 STA DDRD ;输入 LDA#$FF ;定义D口有
4、上拉电阻 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 MOV#$7F,Show_Buffer+5 MOV#$00,Sec主程序续 MOV#$00,Min MOV#$00,Hou ;-设置当前时间-SetUp:JSR Scan Se
5、tSec: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 SetExit MOV#!0,Hou SetExit:BRCLR 3,PTD,SetExit2 Mov#$FF,I1ScanDlay:JSR SCAN DBNZ I1,ScanDlay JMP SetU
6、pSetExit2: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转码子程序Trans1:PSHA PSHH PSHX LDHX#$000A DIV LDHX#$0000 TAX LDA Table,X PULX PULH STA,X AIX#$1 PULA转码子程序续 PSHH PSHX
7、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 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中内容 PS
8、HX 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 显示子程序续LDA CS ;将A中第一个数存入C中输出 STA PTC LDA#!100 ;延时100毫秒 JSR Delay_ns ASL CS ;算术左移,修改位选信号 PULH PULX AIX#!1 CPX#!4 ;判断扫描是否完毕 BLO Sh
9、ow_Num_Loop ;小于4则循环 ;-PULA ;出栈 PULX PULH RTS 延时子程序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延时子程序2Delay_ns:NOP ;1Cycles NOP ;1Cycles DBNZA Delay_ns ;3Cycles RTS ;4Cycles定时器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