您的位置:首页 > 其它

MCS-51测量输入脉冲宽度,精度1ms

2012-06-11 16:55 162 查看
View Code

FLAG    BIT        00H
PULSE    DATA    40H

ORG 0000H
AJMP RESET
ORG 0013H
AJMP EINT1
ORG 001BH
AJMP TINT1

ORG 0040H
RESET:
MOV TMOD,#010H
SETB PX1     ; 一定要设外部中断优先
SETB IT1
SETB EX1
SETB ET1
SETB EA
AJMP MAIN

EINT1:
CLR TR1        ; 停止定时器,以免使PULSE额外增加
SETB FLAG    ; 设置显示标志位
RETI

TINT1:             ; 每1ms让PULSE增加1
MOV TH1,#0FCH
MOV TL1,#0B0H
INC PULSE
RETI

ORG 0100H
MAIN:
JNB P3.3,$    ; 主程序查询P3.3引脚状态
; 直到高电平产生才执行到下一条语句,即启动1ms定时器

MOV TH1,#0FCH
MOV TL1,#0B0H
SETB TR1

JNB FLAG,$     ; 主程序在定时计数期间一直在这条指令处等待
; 直到外部中断产生后置位FLAG

CLR FLAG
MOV A,PULSE    ; 读取定时值n毫秒,然后转化成十位和个位
MOV B,#10    ; 最后通过查表显示到两个数码管上
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SJMP MAIN

ORG 0200H
TABLE:    DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H

END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: