求一份超声波测距模块例程 使用外部中断和pit中断

超声波测距电路+汇编程序
14:25:58&&&来源:51hei &&
;********************************************
;*&&&&&&&&&&&&&& 主 程 序&&&&&&&&&&&&&&&&&& *
;********************************************
&&&&&&&&&& START:& MOV&&&& SP,#4FH&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& MOV&&&& SCON,#50H&&&& ;串口方式1工作,8位数据位,1位停止位,无奇偶校验,允许接收
&&&&&&&&&&&&&&&&&& MOV&&&& T2MOD,#00H&&& ;DCEN = 0,向上计数
&&&&&&&&&&&&&&&&&& MOV&&&& RCAP2H,#0FEH& ;定时器T2置重装数,波特率:1200. (12MHz)
&&&&&&&&&&&&&&&&&& MOV&&&& RCAP2L,#0C8H
&&&&&&&&&&&&&&&&&& MOV&&&& TH2,#0FEH&&&& ;定时器T2置初值
&&&&&&&&&&&&&&&&&& MOV&&&& TL2,#0C8H&&
&&&&&&&&&&&&&&&&&& MOV&&&& T2CON,#34H&&& ;T2工作方式:波特率发生器,同时启动Time2定时器&
&&&&&&&&&&&&&&&&&& CLR&&&& TI&&
&&&&&&&&&&&&&&&&&& CLR&&&& 30H&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& MOV&&&& TMOD,#11H&&&& ;T1、T0为16位定时器
&&&&&&&&&&&&&&&&&& MOV&&&& TH0,#00H&&&&& ;65毫秒初值
&&&&&&&&&&&&&&&&&& MOV&&&& TL0,#00H
&&&&&&&&&&&&&&&&&& MOV&&&& TH1,#00H&&&&&
&&&&&&&&&&&&&&&&&& MOV&&&& TL1,#00H
&&&&&&&&&&&&&&&&&& MOV&&&& P0,#0FFH
&&&&&&&&&&&&&&&&&& MOV&&&& P1,#0FFH
&&&&&&&&&&&&&&&&&& MOV&&&& P2,#0FFH
&&&&&&&&&&&&&&&&&& MOV&&&& P3,#0FFH
&&&&&&&&&&&&&&&&&& MOV&&&& R4,#04H&&&&&& ;超声波脉冲个数控制(为赋值的一半,即2个超声波)
&&&&&&&&&&&&&&&&&& SETB&&& PX0
&&&&&&&&&&&&&&&&&& CLR&&&& IE0&&&&&&&&&& ;外部中断0中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE0位清0
&&&&&&&&&&&&&&&&&& SETB&&& IT0&&&&&&&&&& ;当IT0 = 1时,则外部中断0(INT0 )端口由&1 &&&0 &下降沿跳变,激活中断请求标志位IE0,向主机请求中断处理
&&&&&&&&&&&&&&&&&& SETB&&& ET1&&&&&&&&&& ;允许T1中断
&&&&&&&&&&&&&&&&&& SETB&&& EA
&&&&&&&&&&&&&&&&&& SETB&&& TR1&&&&&&&&&& ;开启测距定时器
;main主循环开始&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& start1:&
&&&&&&&&&&&&&&&&&&& JNB&&& 30H,$&&&&&&&& ;收到反射信号时标志位为1
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& CLR&&& EA&&&&&&&&&&& ;不让T1中断&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& MOV&&& R2,#64H&&&&&& ;测量间隔控制(约5*100=500MS). 64H = 100
&&&&&&&&&&&&& LOOP: LCALL& DL1MS
&&&&&&&&&&&&&&&&&&& LCALL& DL1MS
&&&&&&&&&&&&&&&&&&& LCALL& DL1MS
&&&&&&&&&&&&&&&&&&& LCALL& DL1MS
&&&&&&&&&&&&&&&&&&& LCALL& DL1MS&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& DJNZ&& R2,LOOP&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& CLR&&& 30H&&&&&&&&&& ;清除反射信号标志位
&&&&&&&&&&&&&&&&&&& CLR&&& ET0&&&&&&&&&& ;关闭T0中断
&&&&&&&&&&&&&&&&&&& MOV&&& TH0,00H
&&&&&&&&&&&&&&&&&&& MOV&&& TL0,00H
&&&&&&&&&&&&&&&&&&& SETB&& TR1&&&&&&&&&& ;重新开启测距定时器
&&&&&&&&&&&&&&&&&&& SETB&& EA&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& SJMP&& start1
;main主循环结束
;****************************************************
;*&&&&&&&&&&&&&&&&&&& 中断程序&&&&&&&&&&&&&&&&&&&&& *
;****************************************************
;T1中断,发超声波用&&&& ;T1中断,65毫秒中断一次
INTT1:&&&&&&&&& CLR&&&& EA
&&&&&&&&&&&&&&& CLR&&&& TR0
&&&&&&&&&&&&&&& CLR&&&& EX0
&&&&&&&&&&&&&&& MOV&&&& TH0,#00H
&&&&&&&&&&&&&&& MOV&&&& TL0,#00H
&&&&&&&&&&&&&&& MOV&&&& TH1,#00H
&&&&&&&&&&&&&&& MOV&&&& TL1,#00H
&&&&&&&&&&&&&&& SETB&&& ET0&&&&&&&&&&&& ;外部中断0中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE0位清0
&&&&&&&&&&&&&&& SETB&&& EA
&&&&&&&&&&&&&&& SETB&&& TR0&&&&&&&&&&&& ;启动计数器T0,用以计算超声波传播时间
&&&&&&&&&&&&&&& CPL&&&& VOUT&&&&&&&&&&& ;发射40KHZ超声波.&晶振:12MHz,1us
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop
&&&&&&&&&&&&&&& nop&
&&&&&&&&&&&&&&& nop&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& DJNZ&&& R4,intt11&&&&&& ;2us
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;超声波发送完毕&
&&&&&&&&&&&&&&& CLR&&&& IE0
&&&&&&&&&&&&&&& MOV&&&& R4,#04H
&&&&&&&&&&&&&&& LCALL&& DL1MS&&&&&&&&&& ;延时2ms,避开发射的直达声波信号,消除余震&
&&&&&&&&&&&&&&& LCALL&& DL1MS&&&&&&&&
&&&&&&&&&&&&&&& SETB&&& EX0&&&&&&&&&&&& ;开启接收回波中断
&&&&&&&&&&&&&&&&
RETIOUT:&&&&&&& RETI
;外中断0,收到回波时进入
PINT0:&&&&&&&&& nop
&&&&&&&&&&&&&&& jb&&&&& P3.2,pint0_exit
&&&&&&&&&&&&&&& CLR&&&& TR0&&&&&&&&&&&& ;关闭T0&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& CLR&&&& EA&&&&&&&&&&&&&
&&&&&&&&&&&&&&& CLR&&&& EX0&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& MOV&&&& SBUF,TH0
&&&&&&&&&&&&&&& JNB&&&& TI,$
&&&&&&&&&&&&&&& CLR&&&& TI
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& MOV&&&& SBUF,TL0
&&&&&&&&&&&&&&& JNB&&&& TI,$
&&&&&&&&&&&&&&& CLR&&&& TI&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& MOV&&&& TH0,#00H
&&&&&&&&&&&&&&& MOV&&&& TL0,#00H
&&&&&&&&&&&&&&& JNB&&&& p3.2,$
&&&&&&&&&&&&&&& SETB&&& 30H&&&&&&&&&&&& ;接收成功标志
pint0_exit:
&&&&&&&&&&&&&&& RETI
;****************************************************
;*&&&&&&&&&&&&&&&&&&& 延时程序&&&&&&&&&&&&&&&&&&&&& *
;****************************************************
&&&&&&&&&&&&&& push&&& 06H
&&&&&&&&&&&&&& push&&& 07H
&&&&&&&&&&&&&& MOV&&& R6,#14H&&& ;14H = 20
&&&&&&& DL1:&& MOV&&& R7,#19H&&& ;19H = 25
&&&&&&& DL2:&& DJNZ&& R7,DL2&&&& ;2us * 25 = 50
&&&&&&&&&&&&&& DJNZ&& R6,DL1&&&& ;50us * 20 = 1000us
&&&&&&&&&&&&&& pop&&& 07H
&&&&&&&&&&&&&& pop&&& 06H
&&&&&&&&&&&&&& RET
&&&&&&&&&&&&&& push&&& 06H
&&&&&&&&&&&&&& MOV&&& R6,#32H&&& ;32H = 50
&&&&&&& DL3:&& DJNZ&& R7,DL3&&&& ;2us * 50 = 100us
&&&&&&&&&&&&&& pop&&& 07H
&&&&&&&&&&&&&& pop&&& 06H
&&&&&&&&&&&&&& RET
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
超声波测距相关资源
汇编程序相关资源
STC89C52相关资源
编辑:什么鱼
本文引用地址:
大学堂最新课程
本周热门资源推荐
EEWORLD独家这个51超声波测距外部中断程序是什么意思,这是用C语言编的??具体点,我对外部中断不太了解。_百度知道
这个51超声波测距外部中断程序是什么意思,这是用C语言编的??具体点,我对外部中断不太了解。
/*............外部中断子程序...........*/
RECEIVE: PUSH PSW ;//保护现场
CLR EXO ; //外部中断INTO关闭
MOV R,TL0; // 显示时间
LCALL MULD
LCALL DISP
SETB EX0 ;//外部中断INT0打开
我有更好的答案
这是用汇编写的
那用c语言怎么编,就是外部中断,超声波模块收到返回的信号的时候就自动计算距离,,或者你能转换成c吗?
一般思路是用哪路外部中断,一般51就INT0,INT1,然后查查那路的相关寄存器介绍配置下就行了。
采纳率:57%
为您推荐:
其他类似问题
超声波测距的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。7被浏览2,125分享邀请回答0添加评论分享收藏感谢收起/**
* --------------基于"拉普兰德K60底层库V3"的工程(LPLD_PeriodicInterrupt)-----------------
* @file LPLD_PeriodicInterrupt.c
* @version 0.1
* @brief 利用PIT模块,实现周期定时中断。
* 版权所有:北京拉普兰德电子技术有限公司
* http://www.lpld.cn
* 硬件平台:
LPLD K60 Card / LPLD K60 Nano
* 本工程基于"拉普兰德K60底层库V3"开发,
* 所有开源代码均在"lib"文件夹下,用户不必更改该目录下代码,
* 所有用户工程需保存在"project"文件夹下,以工程名定义文件夹名,
* 底层库使用方法见相关文档。
#include "common.h"
//函数声明
void pit_init(void);
void pit0_isr(void);
void pit1_isr(void);
//变量定义
PIT_InitTypeDef pit0_init_
PIT_InitTypeDef pit1_init_
void main (void)
//初始化PIT
pit_init();
* 初始化PIT0和PIT1通道
void pit_init(void)
//配置PIT0参数
pit0_init_struct.PIT_Pitx = PIT0;
pit0_init_struct.PIT_PeriodS = 2;
//定时周期2秒
pit0_init_struct.PIT_Isr = pit0_
//设置中断函数
//初始化PIT0
LPLD_PIT_Init(pit0_init_struct);
//配置PIT1参数
pit1_init_struct.PIT_Pitx = PIT1;
pit1_init_struct.PIT_PeriodMs = 1000; //定时周期1000毫秒
pit1_init_struct.PIT_Isr = pit1_
//设置中断函数
//初始化PIT1
LPLD_PIT_Init(pit1_init_struct);
//使能PIT0和PIT1
LPLD_PIT_EnableIrq(pit0_init_struct);
LPLD_PIT_EnableIrq(pit1_init_struct);
* PIT0中断函数
void pit0_isr(void)
printf("PIT0 Interrupt!\r\n");
* PIT1中断函数
void pit1_isr(void)
printf("\tPIT1 Interrupt!\r\n");
推荐使用LPLD固件库()2添加评论分享收藏感谢收起写回答&>&51单片机外部中断例程
51单片机外部中断例程
上传大小:214KB
51单片机外部中断例程
51单片机外部中断例程
51单片机外部中断例程
51单片机外部中断例
51单片机外部中断例程程
综合评分:5(12位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
这个资源特别好,感觉非常有用
综合评分:
积分/C币:5
综合评分:
积分/C币:0
hongyuesong
综合评分:
积分/C币:3
综合评分:
积分/C币:3
综合评分:
积分/C币:3
综合评分:
积分/C币:3
综合评分:
积分/C币:0
综合评分:
积分/C币:3
zhangjunmeb
综合评分:
积分/C币:3
综合评分:
积分/C币:0
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
51单片机外部中断例程
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
51单片机外部中断例程

我要回帖

更多关于 超声波测距仪 的文章

 

随机推荐