中断初始化配置方法?

中断初始化配置方法?,第1张

从你的波形看,,需要放大是肯定的,,,,需不需要整形,,要靠你动手测一下,,,单片机输入大于等于2V属于高电平,,小于等于08V属于低电平,,也就是说,,电压波动要在这个范围,,,就可以不要整形了,,,当然从学习角度讲,,你可以尝试对他经行整形,,可以使用555定时器搭建一个施密特触发器,,将你刚才那个波动的波形变成标准的方波!!!!

#include "reg52h"

sbit key=P3^2;

void main()

{

IT0=1; //外部中断0连沿触发方式

EX0=1; //使能外部中断0

EA=1; //开部中断

while(1) ;

}

void int0() interrupt 0

{

int tab[]={0xff,0x7f,0xbf,0x3f,0xdf,0x5f,0x9f,0x1f,0xef,0x6f,0xaf,0x2f,0xcf,0x4f,0x8f,0x0f} ;

int count=15;

long int i;

while(1)

{

if(key==0)

for(i=0;i<10000;i++);

if(key==0)

{ count--;

if(count==0)

count=15;

P3= tab[count] ;

while(key==0);

}

}

}

51看1、先初始化,设置外部中断、串口工作模式,开中断;2、写中断服务程序;//--------------------------------------------///初始化//--------------------------------------------/voidinit(void){TMOD|=0x20;//工作模式SCON=0x50;TH1=0xfd;//定时器1初值,设置波特率TL1=0xfd;//波特率为9600TR1=1;//启动定时器1ES=1;//串口中断允许工作于方式1IT0=1;//外部中断0下降沿触发方式IT1=1;//外部中断1下降沿触发方式EX0=1;//开外部中断0EX1=1;//开外部中断1EA=1;//开总中断}////中断服务程序//voidint0(void)interrupt0//外部0中断服务{}//--------------------------------------------//复位中断//--------------------------------------------voidint1(void)interrupt2//外部1中断服务{}//--------------------------------------------/voiduart(void)interrupt4//串口中断{uchar;if(RI)//接收{RI=0;ud=SBUF;//取收到的字节}elseTI=0;//发送完成}

关于51单片机外部中断0触发方式,边沿触发方式和电平触发方式不同,边沿触发方式只在触发信号下降沿(现在有单片机也可以设置上升沿触发)触发一次。所以在设置好相关外部中断以后,等待触发就可以了,不需要额外处理。

IT0=1;//边沿触发方式,还要置位外部中断0允许位及总中断位

进入外部中断0程序的方式是由外部中断触发信号控制的。

//if(达到某条件)//不需要判断,否则就失去中断的意义了

//{

//P32=0;//不需要这样处理

//}//然后就进入外部中断0了//进入终端是随机的

void exter0()

{

P32=1;//不需要这样处理

…………

}

以上就是关于关于单片机外部中断的问题,求教高手。全部的内容,包括:关于单片机外部中断的问题,求教高手。、用外部中断1做一计数器的c语言程序怎么写、中断初始化配置方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8842824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存