历史上的今天
今天是:2025年04月12日(星期六)
2018年04月12日 | P89LPC932A1测脉冲宽度汇编程序
2018-04-12 来源:eefocus
/********************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
;****************************************************************
史海拾趣
|
编译2450 bootloader出错,编译driver没错, 编译Eboot错误如下: BUILD: [01:0000000039:PROGC ] Compiling .\\debug.c BUILD: [01:0000000042:PROGC ] Compiling .\\ether.c BUILD: [01:0000000045:PROGC ] Compiling .\\flash.c BUILD: [01 ...… 查看全部问答> |
|
Returnil于2006年在芬兰成立,于2008年获得欧洲银行的2亿元的风险投资,是全球领先的安全软件开发商,总部位于美国费城,执行总部位于俄罗斯圣彼得堡。公司成立2年来在芬兰赫尔辛基,美国北卡罗纳, 乌克兰基辅,俄罗斯圣彼得堡,法国巴黎开设了研 ...… 查看全部问答> |
|
本人首次使用stm32f103做项目,由于有大容量存储的需求,准备用fsmc来外扩nand flash。有一个问题不大确定,特请教各位大侠fsmc外扩nand的读写速度如何?nand的ecc这些是fsmc硬件就支持,还是需要我软件来做?多谢了!… 查看全部问答> |
|
车载3G视频监控GPS一体机开发 项目预算:¥ 10,000~100,000 开发周期: 30天 项目分类: 嵌入式 竞标要求: 项目标签: linux 3G网 ...… 查看全部问答> |
|
机器视觉在汽车行业有着广泛的应用,可大大提高工作效率,保证工作质量。下面介绍机器视觉在汽车行业应用的一些实例: (1)汽车总装和零部件检测1. 零部件尺寸、外观、形状2. 总成部件错 ...… 查看全部问答> |




