定时器练习程序_第1页
定时器练习程序_第2页
定时器练习程序_第3页
定时器练习程序_第4页
定时器练习程序_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定时器定时器练习程序练习程序平台程序功能介绍平台程序功能介绍平台程序概述平台程序概述复位处理清变量区检查是否需要自检,产生标记复位处理复位处理(给寄存器初始化)(给寄存器初始化)清变量区清变量区检查是否自检,缩时检查是否自检,缩时产生标记产生标记基本参数设置基本参数设置(给相关变量赋初始)(给相关变量赋初始)主控程序主控程序公共部分:读键、公共部分:读键、跳线、开关机检查跳线、开关机检查主程序流程控制:主程序流程控制:转各子程序转各子程序自检程序:自检程序:self_testself_test读传感器:读传感器:Read_snsrRead_snsr外设控制:外设控制:Cntrl_OPCntrl

2、_OP处理显示:处理显示:Display_hdlDisplay_hdl外时钟:外时钟:Timing_OPTiming_OP主输出:主输出:Main_drvMain_drv外中断处理:外中断处理:Int_receiveInt_receive溢出中断:溢出中断:T_overflw_intT_overflw_int平台程序中与定时器有关的知识平台程序中与定时器有关的知识v ;参数设定:v Tscr_init EQU %01000000v ;1分频,计数器频率=总线频率=2 MHzv Tmodh_init EQU 0v Tmodl_init EQU250Tv ;溢出周期=250*0.5 uS(微秒)=

3、125 uS(微秒)v ;溢出频率=2M/250=8000Hzv ;初始化程序:v MOV #Tscr_init,TSCR v MOV #Tmodh_init,TMODHv MOV #Tmodl_init,TMODLv ;=v ;蜂鸣器管理v ;-v Beep_ctrl TST BEEP_DLYv BNE Beep_bk ;蜂鸣计数未结束,不处理其余事v ;-v LDA BEEP_CNTv BRSET 2,TIME_FL,Beep_offv BIT #%11110000 ;累加器与立即数相与v BEQ Beep_bk ;已经响完,不再处理v ;-v Beep_on BSET 2,TIME_FL

4、 ;要继续蜂鸣,原未开,现在开v SUB #%00010000v STA BEEP_CNTv BRA Get_gapv ;-v ;-v Beep_off BCLR 2,TIME_FL ;要继续蜂鸣,原已开,现在关(间隔)v BCLR 5,PORTAv LSRAv LSRAv Get_gap AND #%00000011v TAXv LDA Beep_tbl,Xv STA BEEP_DLYv Beep_bk JMP Main_loopv ;-v Beep_tbl FCB 60T,100T,150T,200T ;2 毫秒计时v ;=v;= ;溢出中断处理v;-vT_overflw_int PSHH

5、 v BCLR 7,TSCR ;清中断标志v MOV #tscr_init,TSCR ;溢出中断,1分频v MOV #tmodh_init,TMODHv MOV #tmodl_init,TMODL ;$FA=250,8000次中断/每秒v BRCLR 2,TIME_FL,Off_bp ;TIME_FL2:响蜂鸣器v;-v;蜂鸣器发声v;-v LDA PORTAv EOR #%00100000v STA PORTAv BRA Rmt_plsv;-v;蜂鸣关闭v;-vOff_bp BCLR 5,PORTAv;-v; 基本计时: 0.125毫秒周期v;-如何定义变量如何定义变量v在内存结构中,变量区

6、和堆栈区复用在内存结构中,变量区和堆栈区复用,其区域其区域为:为:$0080$00FF, 定义的变量必须存放定义的变量必须存放在这个区域中。在这个区域中。v如何在平台程序中增加如何在平台程序中增加TM_M_CNT和和TM_STEP这两个长度为这两个长度为1字节的变量?字节的变量?v答案:在答案:在RAM区部分增加以下两条语句区部分增加以下两条语句 TM_M_CNT RMB 1 TM_STEP RMB 1如何访问、操作变量如何访问、操作变量v当变量定义好之后,就可以直接对其进行读和写的操作。例: LDATM_M_CNT ;TM_M_CNTA LDXTM_STEP;TM_STEPX INCTM_M

7、_CNT ;TM_M_CNT+1TM_M_CNT INCTM_STEP;TM_STEP+1TM_STEP如何定义数据表如何定义数据表v在MC68HC08中可以用伪指令FCB定义数据表。格式如下: 标号FCB 数据1(,数据2,数据3,) 例:TM_TBL FCB 45T,10T,45T,20T 注意:这里的数据前面不需要加#。如何访问数据表中的数据如何访问数据表中的数据vTM_TBL FCB 45T,10T,45T,20T(TM_TBL+3)(TM_TBL+2)(TM_TBL+1)(TM_TBL)v在程序中访问数据表中数据,一般用变址寻址方式,格式如下: 操作码 数据表的标号,Xv例如,如果要

8、访问TM_TBL中的第二个数据,方式如下: LDX#1T LDATM_TBL,X;(TM_TBL+1)A如何建立数据表问题如何建立数据表问题1v已知在数据表中依次存在这些数据:45T, 10T, 45T, 20T, 45T, 10T, 45T, 140T, 45T, 10T,如何在程序中建立这张数据表?v答案: TM_TBL FCB 45T,10T,45T,20T,45T,10T,45T,140T,45T,10Tv可以这样定义吗? TM_TBL FCB 45T,10T,45T,20T,45T FCB 10T,45T,140T,45T,10Tv答案:可以如何建立数据表问题如何建立数据表问题2v如

9、何用一个循环访问到下面数据表中所有数据TM_TBL FCB 45T,10T,45T,20T,45T,10T,45T,140T,45T,10T?说明:访问用 LDA TM_TBL,XLDHX #$0000LDA TM_TBL,XINCXX10NOPYNv参考答案: LDHX #$0000 Again LDA TM_TBL,X INCX CPX #10T BLO Again NOP重温有关程序片段重温有关程序片段v ;参数设定:v Tscr_init EQU %01000000v ;1分频,计数器频率=总线频率=2 MHzv Tmodh_init EQU 0v Tmodl_init EQU250T

10、v ;溢出周期=250*0.5 uS(微秒)=125 uS(微秒)v ;溢出频率=2M/250=8000Hzv ;初始化程序:v MOV #Tscr_init,TSCR v MOV #Tmodh_init,TMODHv MOV #Tmodl_init,TMODLv ;=v ;蜂鸣器管理v ;-v Beep_ctrl TST BEEP_DLYv BNE Beep_bk ;蜂鸣计数未结束,不处理其余事v ;-v LDA BEEP_CNTv BRSET 2,TIME_FL,Beep_offv BIT #%11110000v BEQ Beep_bk ;已经响完,不再处理v ;-v Beep_on BS

11、ET 2,TIME_FL ;要继续蜂鸣,原未开,现在开v SUB #%00010000v STA BEEP_CNTv BRA Get_gapv ;-v ;-v Beep_off BCLR 2,TIME_FL ;要继续蜂鸣,原已开,现在关(间隔)v BCLR 5,PORTAv LSRAv LSRAv Get_gap AND #%00000011v TAXv LDA Beep_tbl,Xv STA BEEP_DLYv Beep_bk JMP Main_loopv ;-v Beep_tbl FCB 60T,100T,150T,200T ;2 毫秒计时v ;=v;= ;溢出中断处理v;-vT_over

12、flw_int PSHH v BCLR 7,TSCR ;清中断标志v MOV #tscr_init,TSCR ;溢出中断,1分频v MOV #tmodh_init,TMODHv MOV #tmodl_init,TMODL ;$FA=250,8000次中断/每秒v BRCLR 2,TIME_FL,Off_bp ;TIME_FL2:响蜂鸣器v;-v;蜂鸣器发声v;-v LDA PORTAv EOR #%00100000v STA PORTAv BRA Rmt_plsv;-v;蜂鸣关闭v;-vOff_bp BCLR 5,PORTAv;-v; 基本计时: 0.125毫秒周期v;-编制第一个定时器程序编

13、制第一个定时器程序v利用平台程序编制一个定时器程序,用于实训楼上课计时,上课和下课有蜂鸣器提示,上午4节课,下午2节课,具体时间安排如下: 上午:45分钟,10分钟,45分钟,20分钟,45分钟,10分钟,45分钟,140分钟 下午:45分钟,10分钟,45分钟编制第一个定时器程序:答案编制第一个定时器程序:答案v a)在RAM区定义以下变量: TM_M_CNT RMB 1;分钟计数器分钟计数器 TM_STEP RMB 1;阶段计数器阶段计数器v b)在外时钟后部添加数据表如下:TM_TBLFCB 45T,10T,45T,20T,45T,10T,45T,140T,45T,10T,45Tv c)

14、在分钟平台程序处,写入以下的打铃程序: INC TM_M_CNT LDA TM_M_CNT LDX TM_STEP CMP TM_TBL,X BLO PP_1 CLR TM_M_CNT MOV #%00010000,BEEP_CNT INC TM_STEP PP_1 NOP调试时使用缩时功能,1秒钟1分钟。启用缩时功能的方法:按住“TIME”键再上电。打铃程序流程图打铃程序流程图v 打铃程序:打铃程序: INC TM_M_CNT LDA TM_M_CNT LDX TM_STEP CMP TM_TBL,X BLO PP_1 CLR TM_M_CNT MOV #%00010000,BEEP_CNT

15、 INC TM_STEP PP_1 NOPINC TM_M_CNTLDA TM_M_CNTLDX TM_STEP TM_M_CNT(TM_TBL+X)CLR TM_M_CNT MOV #$10,BEEP_CNTINC TM_STEP PP_1 NOPYN打铃的实际阶段数为打铃的实际阶段数为010,但是在本程序段中,但是在本程序段中,TM_M_CNT的值却会超过的值却会超过10,如何解决?,如何解决?改进的打铃程序及流程图改进的打铃程序及流程图v 改进的打铃程序:改进的打铃程序: INC TM_M_CNT LDA TM_M_CNT LDX TM_STEP CMP TM_TBL,X BLO PP_

16、1 CLR TM_M_CNT MOV #%00010000,BEEP_CNT INC TM_STEP LDA TM_STEP CMP #11T BLO PP_1 CLR TM_STEPPP_1 NOPINC TM_M_CNTLDA TM_M_CNTLDX TM_STEP TM_M_CNT(TM_TBL+X)CLR TM_M_CNT MOV #$10,BEEP_CNTINC TM_STEP LDA TM_STEP PP_1 NOPYNTM_STEP11CLR TM_STEPNYBEEP_CNT变量的说明变量的说明00110001BEEP_CNT蜂鸣器鸣叫的长度和间隔,每蜂鸣器鸣叫的长度和间隔,每

17、1单位代表单位代表2毫秒:毫秒:Beep_tbl FCB 60T,100T,150T,200T第一次第一次鸣叫鸣叫第二次第二次鸣叫鸣叫第三次第三次鸣叫鸣叫连续两次鸣叫的间隔一次鸣叫持续的时间t鸣叫的次数:015 闪灯控制预备知识闪灯控制预备知识1:BLNK_CNTv 平台程序中存在变量BLNK_CNT,该变量每0.25秒增加1。时间十进制值二进制值0.00秒0%000000 0 00.25秒1%000000 0 10.50秒2%000000 1 00.75秒3%000000 1 11.00秒4%000001 0 01.25秒5%000001 0 11.50秒6%000001 1 01.75秒7

18、%000001 1 12.00秒8%000010 0 00/1变化:每0.25秒一次0/1变化:每0.50秒一次0/1变化:每1.00秒一次闪灯控制预备知识闪灯控制预备知识2:TM_STEPv变量TM_STEP表示打铃的阶段数十进制值上课/下课阶段时间/分二进制值0上课阶段45%000000 0 01下课阶段10%000000 0 12上课阶段45%000000 1 03下课阶段20%000000 1 14上课阶段45%000001 0 05下课阶段10%000001 0 16上课阶段45%000001 1 07下课阶段140%000001 1 18上课阶段45%000010 0 09下课阶段

19、10%000010 0 110上课阶段45%000010 1 00:上课,1:下课闪灯控制预备知识闪灯控制预备知识3:DSP_BUF_1变量变量摆页灯制冷灯摄氏灯送风灯自模灯低风灯中风灯高风灯DSP_BUF_1编制第一个定时器程序(续)编制第一个定时器程序(续)v利用平台程序编制一个定时器程序,用于实训楼上课计时,上课和下课有蜂鸣器提示,上午4节课,下午2节课,具体时间安排如下: 上午:45分钟,10分钟,45分钟,20分钟,45分钟,10分钟,45分钟,140分钟 下午:45分钟,10分钟,45分钟 下课阶段,令高风灯闪烁:0.5秒亮,0.5灭编制第一个定时器程序编制第一个定时器程序(续续)

20、:答案:答案v a)在RAM区定义以下变量: TM_M_CNT RMB 1;分钟计数器分钟计数器 TM_STEP RMB 1;阶段计数器阶段计数器v b)在外时钟后部添加数据表如下: TM_TBLFCB 10T,3T,10T,4T,10T,4T,10T,20T,10T,4T,10Tv c)在分钟平台程序处,写入以下的打铃程序: INC TM_M_CNT LDA TM_M_CNT LDX TM_STEP CMP TM_TBL,X BLO PP_1 CLR TM_M_CNT MOV #%00010000,BEEP_CNT INC TM_STEP PP_1 NOP调试时使用缩时功能,1秒钟1分钟。启

21、用缩时功能的方法:按住“TIME”键再上电。编制第一个定时器程序编制第一个定时器程序(续续):答案:答案v d)在显示程序的风速灯处,屏蔽原风速显示:;-;风速显示 *;- Dsp_f_spd ;BRCLR 1,MIX_FLAG,Dsp_lo_f ;BRCLR 0,MIX_FLAG,Dsp_med_f BRCLR 0,TM_STEP,Dsp_swng BRCLR 1,BLNK_CNT,Dsp_swng BSET 0,DSP_BUF_1 BRA Dsp_swng上课阶段?上课阶段?高风灯需要灭?高风灯需要灭?BSET 0,DSP_BUF_1即让高风灯亮即让高风灯亮Dsp_swngYNYN编制第二个定时器程序编制第二个定时器程序v利用平台程序编制一个定时器程序,用于实训楼上课计时,上课和下课有蜂鸣器提示,上午4节课,下午2节课,具体时间安排如下: 上午:45分钟,10分钟,45分钟,20分钟,45分钟,10分钟,45分钟,140分钟 下午:45分钟,10分钟,45分钟 下课阶段,令高风灯闪烁:0.5秒亮,0.5灭 把运行的分钟数在七段码上显示出来。编制第二个定时器程序:答案编制第二个定时器程序:答案ve)前面四步的程序和第一个定时器的相同,第五步是把运行的分钟数显示出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论