首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
P89LPC932A1测脉冲宽度汇编程序
来源:本站整理  作者:佚名  2011-08-04 10:14:17



temp_11061418094450.rar

/********************CCU_Capture.asm***************************
;程序功能:对一方波的每一次电平跳变进行捕获,并用捕获值计算方波
的脉冲宽度,占空比,周期或其他。
;************************************************************/
$NOMOD51
$INCLUDE(REG932.INC)

ICRAH_DAT1 DATA 41H  ;第一次捕获值高字节
ICRAL_DAT1 DATA 42H  ;第一次捕获值低字节
ICRAH_DAT2 DATA 43H  ;第二次捕获值高字节
ICRAL_DAT2 DATA 44H  ;第二次捕获值低字节
ICRAH_DAT3 DATA 45H  ;第三次捕获值高字节
ICRAL_DAT3 DATA 46H  ;第三次捕获值低字节

CAP_FLAG1 BIT 10H   ;第一次捕获标志位
CAP_FLAG2 BIT 11H   ;第二次捕获标志位

KEY  BIT P0.0

  ORG 0000H
  AJMP MAIN
  ORG 005BH
  AJMP CCU_ISR
;---------------------------------------
;功能:主函数
;---------------------------------------
  ORG 0080H
MAIN:
  MOV P2M1,#40H  ;端口设置
  MOV P2M2,#40H

  MOV ICRAL_DAT1,#00H
  MOV ICRAH_DAT1,#00H
  MOV ICRAL_DAT2,#00H
  MOV ICRAH_DAT2,#00H
  MOV ICRAL_DAT3,#00H
  MOV ICRAH_DAT3,#00H 
MAIN_LOOP: 
  JB KEY,$   ;等待按键
  JNB KEY,$   ;等待按键松开
  ACALL INI_CCU   ;初始化CCU并设置中断
  ACALL DISP   ;将捕获的值输出显示
  SJMP MAIN_LOOP
  RET
;--------------------------------------
;功能:CCU初始化
;--------------------------------------
INI_CCU:
  MOV TOR2H,#00H  ;设置CCU重装高字节
  MOV TOR2L,#00H  ;设置CCU重装低字节
  MOV TPCR2H,#00H  ;设置CCU预分频控制器
  MOV TPCR2L,#5
 
  MOV CCCRA,#10H  ;设置捕获比较A通道工作方式,为上升沿捕获
  MOV TICR2,#81H  ;设置CCU中断使能控制器
  SETB ECCU   ;开CCU中断
  SETB EA   ;开所有中断
  MOV TCR20,#00000001B ;设置CCU工作方式,递增记数
  RET
;--------------------------------------
;功能:CCU中断服务程序
;--------------------------------------
CCU_ISR:
  CLR  EA

  MOV A,TISE2
  ANL A,#07H
  CJNE A,#07H,CAP  ;判断是否是CCU定时器中断
  ANL TIFR2,#7FH  ;是则清TIFR2(中断标志位)为0
  MOV A,TISE2 
CAP:  CJNE A,#06H,INTS_CEXT ;判断是否为输入捕获事件A的中断,不是则退出
  JB CAP_FLAG1,CAP2  ;判断是第二次中断么,是则跳
;------------------
CAP1:
  PUSH ACC
  MOV A,ICRAL
  MOV ICRAL_DAT1,A
  MOV A,ICRAH
  MOV ICRAH_DAT1,A
  SETB CAP_FLAG1  ;第一次捕获中断完成
  MOV CCCRA,#00H  ;设置捕获比较A通道工作方式,为下降沿捕获
  POP ACC
  AJMP INTS_CEXT
;------------------
CAP2: 
  PUSH ACC
  JB CAP_FLAG2,CAP3  ;判断是第三次中断么?是则跳到CAP3。
  MOV A,ICRAL   ;保存第二次捕获的值
  MOV ICRAL_DAT2,A
  MOV A,ICRAH
  MOV ICRAH_DAT2,A

  SETB CAP_FLAG2  ;第二次捕获中断完成
  MOV CCCRA,#10H  ;设置捕获比较A通道工作方式,为上升沿捕获
  POP ACC
  AJMP INTS_CEXT
;-------------------
CAP3:
  MOV TCR20,#00H  ;停止CCU定时器计数
  PUSH ACC
  MOV A,ICRAL   ;保存第三次捕获的值
  MOV ICRAL_DAT3,A
  MOV A,ICRAH
  MOV ICRAH_DAT3,A

  CLR CAP_FLAG1  ;清除捕获完成位
  CLR CAP_FLAG2
  POP ACC
;  AJMP INTS_CEXT
;--------------------
INTS_CEXT:
  MOV TIFR2,#00H  ;捕获中断标志位清0
  SETB EA
  RETI
;-------------------------------------
;功能:请在这里添加您的数据处理程序
;-------------------------------------
DISP:
  ;......   这里请添加你自己的语句,例 高电平脉宽=(ICRAH_DAT2,ICRAL_DAT2)-(ICRAH_DAT1,ICRAL_DAT1)
  ;......   对得到的数据进行处理,获取所需的值
  ;......   并显示或者传送给上位机

  RET
;-------------------------------------
  END 
;****************************************************************

关键词:

·上一文章:MSP430单片机按键程序
·下一文章:EM78P153范例程序

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:29,023.44000 毫秒